Name: series-workflowbs2br Phase: Succeeded StartedAt: 2026-08-18 12:50:39 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[0] Phase: Succeeded StartedAt: 2026-08-18 12:50:39 +0000 UTC FinishedAt: 2026-08-18 12:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 12:50:39 +0000 UTC FinishedAt: 2026-08-18 12:57:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "8d3ae59288f1e7d58d76558a6ee96d533bc5019f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIDEO_VIVID", "MEDIA_CONTROLLER", "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "8d3ae59288f1e7d58d76558a6ee96d533bc5019f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIDEO_VIVID", "MEDIA_CONTROLLER", "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "dcd681b1-ed1e-4484-8a5d-18827cb93702" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "media_request_alloc", "media_request_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGFmdGVyIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgVUFGIGlmIGByZXFfZnJlZWAgZHJvcHBlZCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIG1lZGlhIGRldmljZSwgY2F1c2luZyBgbWRldmAgdG8gYmUgZnJlZWQgYmVmb3JlIHRoZSBgYXRvbWljX2RlY2Agb3BlcmF0aW9uLiBUaGUgcGF0Y2ggcmVvcmRlcnMgdGhlc2Ugb3BlcmF0aW9ucyB0byBwcmV2ZW50IHRoZSBVQUYuIEFkZGl0aW9uYWxseSwgaXQgaW1wbGVtZW50cyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBpbiB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSBgdjRsMl9kZXZgIHJlZmVyZW5jZSBjb3VudC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxuXG5UaGVyZWZvcmUsIHRoaXMgYnVnIGNsYXNzIChVQUYpIGlzIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IEFQSSB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgZGVjcmVtZW50aW5nIHRoZSByZXF1ZXN0IGNvdW50IGJlZm9yZSBjYWxsaW5nIHJlcV9mcmVlLiBJdCBhbHNvIGFkZHMgcmVxX2FsbG9jIGFuZCByZXFfZnJlZSBjYWxsYmFja3MgdG8gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2NGwyX2RldiBvYmplY3QuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbWVkaWEgY29udHJvbGxlciBsb2dpYyBhbmQgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVxdWVzdCBsaWZlY3ljbGUgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTRhM2U5MWQ0YTBmOTE5YWMwZDIwNTNhZjhjOGM5YzY4YzE1ZjM5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiBcbiBcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcbiBcbiYjNDM7XHRhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKTtcbiBcdGlmIChtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZSlcbiBcdFx0bWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKTtcbiBcdGVsc2VcbiBcdFx0a2ZyZWUocmVxKTtcbi1cdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIH1cbiBcbiB2b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbkBAIC04NjksNiAmIzQzOzg2OSwyNyBAQCBzdGF0aWMgdm9pZCB2aXZpZF9kZXZfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIH1cbiBcbiAjaWZkZWYgQ09ORklHX01FRElBX0NPTlRST0xMRVJcbiYjNDM7c3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxO1xuJiM0MztcbiYjNDM7XHRyZXEgPSBremFsbG9jX29iaigqcmVxKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHR2NGwyX2RldmljZV9nZXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmVxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUocmVxKTtcbiYjNDM7XHR2NGwyX2RldmljZV9wdXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIHtcbiBcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXHUwMDNlbWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG5AQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xuJiM0MztcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXG4mIzQzO1x0LnJlcV9mcmVlID0gdml2aWRfcmVxX2ZyZWUsXG4gXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxuIFx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxuIH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAogCW1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTsKIAomIzQzOwlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIAlpZiAobWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZSkKIAkJbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpOwogCWVsc2UKIAkJa2ZyZWUocmVxKTsKLQlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIH0KIAogdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jCmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMKQEAgLTg2OSw2ICYjNDM7ODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB9CiAKICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUgomIzQzO3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7CiYjNDM7CXN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXE7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV9nZXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0MzsJcmV0dXJuIHJlcTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdml2aWRfcmVxX2ZyZWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwomIzQzOwomIzQzOwlrZnJlZShyZXEpOwomIzQzOwl2NGwyX2RldmljZV9wdXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwpAQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0gewomIzQzOwkucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLAomIzQzOwkucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSwKIAkucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLAogCS5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE1lZGlhIENvbnRyb2xsZXIgYW5kIFZJVklEIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IGhhbmRsaW5nIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFZJVklEIHRlc3QgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlOiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBpbiBgbWMtcmVxdWVzdC5jYCBub3cgZGVjcmVtZW50cyBgbWRldi0mZ3Q7bnVtX3JlcXVlc3RzYCAqYmVmb3JlKiBjYWxsaW5nIHRoZSByZXF1ZXN0LXNwZWNpZmljIGZyZWUgZnVuY3Rpb24gKGBtZGV2LSZndDtvcHMtJmd0O3JlcV9mcmVlKHJlcSlgKS4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCB0byBgdml2aWQtY29yZS5jYCBhbmQgaG9va2VkIHRoZW0gdXAgdG8gdGhlIGB2aXZpZF9tZWRpYV9vcHNgLgoKUmlnaHQgYXdheSwgdGhlIHJlYXNvbiBmb3IgdGhlIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGNoYW5nZSBjbGlja3M6IGl0JiMzOTtzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSWYgYHJlcV9mcmVlYCBjb3VsZCBkcm9wIHRoZSAqbGFzdCogcmVmZXJlbmNlIHRvIGBtZGV2YCAqZHVyaW5nKiB0aGUgZnJlZSBvcGVyYXRpb24sIHRoZW4gZGVjcmVtZW50aW5nIHRoZSBjb3VudGVyIGFmdGVyIGNhbGxpbmcgaXQgd291bGQgYmUgdG9vIGxhdGUuIFRoZSBjb2RlIGFjY2Vzc2VzIGBtZGV2YCBhcyBhbiBhdG9taWMgY291bnRlciwgd2hpY2ggc2VlbXMgc2FmZS4gQnV0LCBpZiBhIGByZXFfZnJlZWAgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiBhIHY0bDIgZGV2aWNlIHRoZW4gaXQgY291bGQgaW4gdHVybiBmcmVlIGB2aXZpZF9kZXZgLCB3aGljaCB3b3VsZCBmcmVlIGBtZGV2YC4gSWYgdGhpcyBoYXBwZW5zLCB0aGVuIGRlY3JlbWVudGluZyB0aGUgYXRvbWljIGNvdW50ZXIgYWZ0ZXJ3YXJkIGJlY29tZXMgYSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuIFNoaWZ0aW5nIHRoZSBkZWNyZW1lbnQgZW5zdXJlcyB0aGlzIGNhbiYjMzk7dCBoYXBwZW4uIEJyaWxsaWFudCEKClRoZSBgdml2aWRgIGRyaXZlciBjaGFuZ2VzIHN1cHBvcnQgdGhpcyBmaXguIEl0IG1ha2VzIHNlbnNlIHRoYXQgYHZpdmlkX3JlcV9hbGxvY2AgbmVlZHMgdG8gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGUgYHY0bDJfZGV2YCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBuZWVkcyB0byByZWxlYXNlIGl0LiBUaGlzIGV4cGxpY2l0bHkgdGllcyB0aGUgbGlmZXRpbWUgb2YgdGhlIGB2aXZpZF9kZXZgIChhbmQgdGhlcmVmb3JlIGBtZGV2YCkgdG8gdGhlIGV4aXN0ZW5jZSBvZiBhY3RpdmUgcmVxdWVzdHMuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHJlcXVlc3RzIGFyZSBtYW5hZ2VkIGF0IHRoZSBtZWRpYSBjb250cm9sbGVyIGxldmVsLCBhbmQgaXQgaGFzIGRpcmVjdCBpbXBsaWNhdGlvbnMgZm9yIHRoZSBWSVZJRCBkcml2ZXIuIFRoZSBWSVZJRCBkcml2ZXIsIGJlaW5nIGEgdmlydHVhbCB2aWRlbyBkcml2ZXIsIG1ha2VzIGl0IGVzcGVjaWFsbHkgYXBwZWFsaW5nIHRvIGZ1enogdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIGEgbmljZSwgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMuCgpOb3csIGxldCYjMzk7cyBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnM6IEkgbmVlZCBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGZvciB0aGUgbWVkaWEgY29udHJvbGxlciBzaWRlIGFuZCBgQ09ORklHX1ZJREVPX1ZJVklEYCBmb3IgdGhlIFZJVklEIGRyaXZlciBpdHNlbGYuIEkgc2VlIHRob3NlIG1lbnRpb25lZCBpbiBgdml2aWQtY29yZS5jYCBzbyBJIGNhbiBjb25maXJtIG15IGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSURFT19WSVZJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzoyOmNvbmZpZyBWSURFT19WSVZJRFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBWaWRlbyBUZXN0IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI1OmNvbmZpZyBWSURFT19WSVZJRF9DRUNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjYtXHRib29sIFwmIzM0O0VuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMyLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzozMzpjb25maWcgVklERU9fVklWSURfT1NEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgRnJhbWVidWZmZXIgZm9yIHRlc3RpbmcgT3V0cHV0IE92ZXJsYXlcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQyLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzo0Mzpjb25maWcgVklERU9fVklWSURfTUFYX0RFVlNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgZGV2aWNlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGlzc3VlIGF0IGhhbmQgbGlrZWx5IGludm9sdmVzIHRoZSBtZWRpYSBwbGF5YmFjayBvciBjb250cm9sIGZsb3cuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgTUVESUFfQ09OVFJPTExFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjZW50cmFsIHNldHRpbmdzIGRpY3RhdGluZyBob3cgdGhlIGFwcGxpY2F0aW9uIGludGVyZmFjZXMgd2l0aCBleHRlcm5hbCBtZWRpYSBkZXZpY2VzLCBvciBoYW5kbGVzIGludGVybmFsIHBsYXliYWNrIHNjZW5hcmlvcy4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIGhvdyB3ZSYjMzk7cmUgZGVmaW5pbmcgdGhlIGNvbnRyb2xsZXImIzM5O3MgYmVoYXZpb3IuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5zIHRoZSBjcml0aWNhbCBzZXR0aW5ncyBnb3Zlcm5pbmcgY29udHJvbCBvZiBtZWRpYSBwbGF5YmFjayBhbmQgbXVzdCBiZSBjYXJlZnVsbHkgcmV2aWV3ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0NPTlRST0xMRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE2MD1jb25maWcgVklERU9fREVWXG4tLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE2OS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNzA6Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O01lZGlhIENvbnRyb2xsZXIgQVBJXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkNoZWNraW5nIHRoZSBgTUVESUFfU1VQUE9SVGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvcmUgb2YgdGhpcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYE1FRElBX1NVUFBPUlRgIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIGZvdW5kYXRpb24sIGZvciBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIG11bHRpbWVkaWEsIHNvIGEgc29saWQgdW5kZXJzdGFuZGluZyBoZXJlIGlzIGNyaXRpY2FsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0IHVwIHRoZSB3YXkgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IGRldmlhdGlvbnMgYXQgdGhpcyBlYXJseSBzdGFnZSBjYW4gbGVhZCB0byBjYXNjYWRpbmcgaXNzdWVzIGxhdGVyIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpbWVkaWEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MjU6Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIENoZWNrcG9pbnQ6IE1FRElBXF9URVNUXF9TVVBQT1JUKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBNeSBpbnN0aW5jdCBoZXJlIGlzIHRvIGltbWVkaWF0ZWx5IGV4YW1pbmUgdGhlIGBNRURJQV9URVNUX1NVUFBPUlRgIGZsYWcgb3IgdmFyaWFibGUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2V5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCwgcG9zc2libHkgYSBkZWZpbmVkIGNvbnN0YW50IG9yIGEgZmVhdHVyZSBmbGFnLCB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgY2VydGFpbiBtZWRpYS1yZWxhdGVkIHRlc3QgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRlY2lzaW9uIHBvaW50LCBhY3RpbmcgYXMgYSBnYXRld2F5IHRvIHJ1bm5pbmcgdGVzdCBzdWl0ZXMuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgbmV4dCBzdGVwcyBlbnRpcmVseSBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdmFyaWFibGUuIFRoZSB3aG9sZSBtZWRpYSB0ZXN0aW5nIHByb2Nlc3MgbWF5IGJlIHNob3J0LWNpcmN1aXRlZCBpZiB0aGUgdmFyaWFibGUgaXMgZGlzYWJsZWQuIFRoZSB2YXJpYWJsZSBtaWdodCBhZmZlY3Qgb3RoZXIgcHJvY2Vzc2VzLCBzbyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfVEVTVF9TVVBQT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMjU9Y29uZmlnIE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTM4LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEzOTpjb25maWcgTUVESUFfVEVTVF9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTQwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBWSURFT19WSVZJRCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGBWSURFT19WSVZJRGAgZW52aXJvbm1lbnQgb3IgbW9kdWxlIGlzIHJ1bm5pbmcgY2xlYW4uIFdoYXQgYXJlIHRoZSBjdXJyZW50IGRlcGVuZGVuY2llcz8mIzM0OyBJJiMzOTttIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBzdXNwZWN0czogdGhlIGdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMsIHRoZSB2aWRlbyBjb2RlYyBsaWJyYXJpZXMgKEZGbXBlZywgbWF5YmU/KSwgdGhlIGRyaXZlciB2ZXJzaW9ucywgYW5kLCBvZiBjb3Vyc2UsIGFueSBzcGVjaWZpYyBmcmFtZXdvcmsgdmVyc2lvbnMgd2UmIzM5O3JlIHRpZWQgdG8sIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBzb21lIGludGVybmFsIHBpcGVsaW5lIG9yIGEgdGhpcmQgcGFydHkgc3lzdGVtIHRoYXQgd2UgY2FsbCB1cG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaW52b2x2ZWQgaXMgY29tcGF0aWJsZSBhdCBhbGwgbGV2ZWxzLiBBcmUgd2UgcHVsbGluZyB0aGUgbGF0ZXN0IGRlcGVuZGVuY2llcyBvciBhcmUgd2UgcGlubmluZyBkb3duIGEgc3RhYmxlIHNldD8gSGF2ZSBhbnkgdXBkYXRlcyBoYXBwZW5lZCByZWNlbnRseSB0aGF0IG1pZ2h0IGhhdmUgY2F1c2VkIHJlZ3Jlc3Npb24/IEnigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBsb2dzLCBhbmQgcG90ZW50aWFsbHkgdGVzdCBhZ2FpbnN0IGEga25vd24tZ29vZCBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGhpbiB0aG9zZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gdGhpbmtpbmcgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGNvbXBhdGliaWxpdHkgcXVpcmtzLCBvciBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciB0aGUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI9Y29uZmlnIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIFZJREVPX0RFViBcdTAwMjZcdTAwMjYgIVNQQVJDMzIgXHUwMDI2XHUwMDI2ICFTUEFSQzY0XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIEhBU19ETUFcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNi1cdHNlbGVjdCBGT05UX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI1PWNvbmZpZyBWSURFT19WSVZJRF9DRUNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjYtXHRib29sIFwmIzM0O0VuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6Mjc6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTI4LVx0c2VsZWN0IENFQ19DT1JFXG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0zMz1jb25maWcgVklERU9fVklWSURfT1NEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgRnJhbWVidWZmZXIgZm9yIHRlc3RpbmcgT3V0cHV0IE92ZXJsYXlcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEIFx1MDAyNlx1MDAyNiBGQl9DT1JFXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjM2Olx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRD1tIHx8IEZCX0NPUkU9eVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zNy1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc9NDM9Y29uZmlnIFZJREVPX1ZJVklEX01BWF9ERVZTXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQ0LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQ2LVx0ZGVmYXVsdCBcJiMzNDs2NFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTY4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWaWRlbyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyB2aWRlbyBkcml2ZXIgYW5kIGltbWVkaWF0ZWx5IHNlZSBzb21lIGtleSBkZXBlbmRlbmNpZXMgYXQgcGxheS4gVGhlICYjMzQ7dml2aWQmIzM0OyBkcml2ZXIsIGluIHBhcnRpY3VsYXIsIGhpbmdlcyBvbiBgVklERU9fREVWYCBhbmQgYEhBU19ETUFgLiBUaGF0JiMzOTtzIG5vdCB1bmV4cGVjdGVkOyBgVklERU9fREVWYCBpcyBwcmV0dHkgZnVuZGFtZW50YWwgZm9yIHZpZGVvIGRldmljZXMsIGFuZCBETUEgaXMgY3J1Y2lhbCBmb3IgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIgaW4gbW9zdCBvZiB0aGVzZSBhcHBsaWNhdGlvbnMuCgpOb3csIGBWSURFT19ERVZgIGl0c2VsZiBpc24mIzM5O3QgYSBmcmVlYmllLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gYE1FRElBX1NVUFBPUlRgLiBNYWtlcyBzZW5zZSwgdGhlIGJhc2UgbWVkaWEgaW5mcmFzdHJ1Y3R1cmUgaGFzIHRvIGJlIHRoZXJlIGZvciBhbnl0aGluZyB2aWRlbyByZWxhdGVkIHRvIHdvcmsuCgpCdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCBtZSBqdXN0IHF1aWNrbHkgZ2xhbmNlIGF0IGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBtYWtlIHN1cmUgaXQgaXMgaW4gcGxhY2U7IGl0IGlzIHJlbGV2YW50IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyJiMzOTtzIHJlcXVlc3QsIGFuZCB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NDAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBBUEkgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgZGVmaW5pdGlvbi4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSBpdCYjMzk7cyBub3Qgd2hlcmUgSSBpbml0aWFsbHkgZXhwZWN0ZWQgaXQgdG8gYmUuIFRoaXMgY29uc3RhbnQsIGVzcGVjaWFsbHkgd2l0aCBhbiBBUEktcmVsYXRlZCBuYW1lLCBjb3VsZCBlYXNpbHkgYmUgYWJzdHJhY3RlZCBvdXQgYW5kIGRlZmluZWQgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBtb2R1bGUgb3IgaGVhZGVyIGZpbGUgdGhhbiBJJiMzOTttIGN1cnJlbnRseSBsb29raW5nIGF0LiBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2YgbXkgc2VhcmNoLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwcm9qZWN0JiMzOTtzIGluY2x1ZGUgcGF0aHMgYW5kIGxvb2sgZm9yIGEgbW9yZSBkZWRpY2F0ZWQgQVBJLXJlbGF0ZWQgaGVhZGVyLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuIHRvIGtlZXAgQVBJLXNwZWNpZmljIGRlZmluaXRpb25zIHNlcGFyYXRlIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIGFuZCB2ZXJzaW9uaW5nIGNvbnRyb2wuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkgaGF2ZSB0byBjaGFuZ2UgbXkgc2VhcmNoIHRvIGJlIG1vcmUgc3lzdGVtaWMgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRlY2lwaGVyaW5nIHRoZSBNZWRpYSBDb250cm9sbGVyIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGluaXRpYWxseSwgSSB0aG91Z2h0IGl0IHdhcyB1c2luZyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgdG8gZ2F0ZSBzb21lIGZ1bmN0aW9uYWxpdHkuIEJ1dCwgbm8sIHRoYXQmIzM5O3Mgbm90IGl0LiBUaGUgcGF0Y2ggY2xlYXJseSByZWxpZXMgb24gYW4gYCNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAgY29uc3RydWN0LiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIHRoZSBjb21waWxhdGlvbiBvZiBgbWMtcmVxdWVzdC5jYCBkZXBlbmRzIG9uLiBXaGF0JiMzOTtzIHRoZSB0cmlnZ2VyaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG1hY3JvIHdhc24mIzM5O3QgcmlnaHQsIHNvIG5vdyBJIG5lZWQgdG8gYmFja3RyYWNrIGFuZCB0cmFjZSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLiBJIGhhdmUgdG8gZmluZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWMtcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcdDo9IG1jLWRldmljZS5vIG1jLWRldm5vZGUubyBtYy1lbnRpdHkubyBcXFxuZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZTo0Olx0ICAgbWMtcmVxdWVzdC5vXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzOTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzOiAqd2hhdCBhY3R1YWxseSBkaWN0YXRlcyBpdHMgY29tcGlsYXRpb24/KiBJdCYjMzk7cyBub3QgdXN1YWxseSBhIHN0YW5kYWxvbmUgdGFyZ2V0LiBJdCYjMzk7cyBhbG1vc3QgYWx3YXlzIGJ1aWx0IGFzIHBhcnQgb2YgYSBsYXJnZXIgbXVsdGltZWRpYSBvciBrZXJuZWwgbW9kdWxlIGJ1aWxkIHByb2Nlc3MuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkmIzM5O20gdGhpbmtpbmcsIGlzIGl0IHRpZWQgdG8gdGhlIG92ZXJhbGwgYEtjb25maWdgIGZvciB0aGUgbWVkaWEgc3Vic3lzdGVtLCBvciBzcGVjaWZpYyBmZWF0dXJlcyB3aXRoaW4/IEFyZSB0aGVyZSBhbnkgdG9wLWxldmVsIGBNYWtlZmlsZWBzIHRoYXQgaW5jbHVkZSBpdCBkaXJlY3RseT8gT3IsIGlzIGl0IGluY2x1ZGVkIHZpYSBzb21lIGdlbmVyaWMgcnVsZXMgb3IgdmFyaWFibGVzLCBsaWtlIGBvYmotJChDT05GSUdfU09NRVRISU5HKWA/CgpJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIHVuZGVyIGBkcml2ZXJzL21lZGlhYCwgYW5kIG1heWJlIGV2ZW4gaGlnaGVyIHVwIGluIHRoZSBrZXJuZWwmIzM5O3Mgc291cmNlIHRyZWUsIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgY29udHJvbCB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgcGFydGljdWxhciBgTWFrZWZpbGVgLiBJJiMzOTtsbCBoYXZlIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBgQ09ORklHX2AgZmxhZ3MgYW5kIHRoZWlyIGRlcGVuZGVuY2llcywgYXMgd2VsbCBhcyBhbnkgb3RoZXIgaW5kaXJlY3QgbWVjaGFuaXNtcy4gVGhlcmUgYXJlIGRlZmluaXRlbHkgYSBsb3Qgb2YgYW5nbGVzIHRvIGNvbnNpZGVyLiBUaGUgd2hvbGUgcG9pbnQgaXMsIHdoYXQgdHJpZ2dlcnMgaXQgdG8gZ2V0IGJ1aWx0LCBhbmQgaG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9NYWtlZmlsZT0xNj1pZmVxICgkKENPTkZJR19NRURJQV9DT05UUk9MTEVSKSx5KVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZToxNzogIG9iai0kKENPTkZJR19NRURJQV9TVVBQT1JUKSAmIzQzOz0gbWMvXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTE4LWVuZGlmXG4tLVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZT0yNj1vYmotJChDT05GSUdfQ0VDX0NPUkUpICYjNDM7PSBjZWMvXG4tLVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZS0zMS1cbmRyaXZlcnMvbWVkaWEvTWFrZWZpbGU6MzI6b2JqLXkgJiM0Mzs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9cbmRyaXZlcnMvbWVkaWEvTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgJiM0Mzs9IHJhZGlvL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODgyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIGNvbnRleHQ6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgTWVkaWEgU3VwcG9ydCoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBzdW1tYXJpemUgd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIEZpcnN0LCB0byBnZXQgYW55IG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBnb2luZywgSSBrbm93IEkmIzM5O2xsIG5lZWQgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBhbmQgYENPTkZJR19NRURJQV9TVVBQT1JUYCBlbmFibGVkLiBUaGV5JiMzOTtyZSBwcmV0dHkgbXVjaCBmdW5kYW1lbnRhbCB0byB0aGUgd2hvbGUgbWVkaWEgc3Vic3lzdGVtLiBBbmQgdGhlbiwgc3BlY2lmaWNhbGx5IGZvciB0aGUgdml2aWQgZHJpdmVyLCBgQ09ORklHX1ZJREVPX1ZJVklEYCBpcyBnb2luZyB0byBiZSByZXF1aXJlZCwgbWFrZXMgc2Vuc2Ugc2luY2UgdGhhdCBlbmFibGVzIHRoZSBkcml2ZXIgaXRzZWxmLiBBbHNvLCBuYXR1cmFsbHksIGBDT05GSUdfVklERU9fREVWYCBpcyByZXF1aXJlZCBiZWNhdXNlLCB3ZWxsLCB2aXZpZCBpcyBhIHZpZGVvIGRldmljZSEgTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgYWJvdXQgYENPTkZJR19NRURJQV9URVNUX1NVUFBPUlRgPyBUaGUgbm90ZXMgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIG5lZWRlZCBmb3IgdGVzdCBkcml2ZXJzLCBidXQgdG8gYmUgc3VyZSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9gIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIEdvdHRhIGJlIHByZWNpc2UgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dml2aWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfVklERU9fVklNQykgJiM0Mzs9IHZpbWMvXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfVklERU9fVklWSUQpICYjNDM7PSB2aXZpZC9cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19WSURFT19WSVNMKSAmIzQzOz0gdmlzbC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZJVklEIERyaXZlciBCdWlsZCBhbmQgUmVzb3VyY2UgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTWFrZWZpbGVgIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVyc2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGdldHMgaW5jbHVkZWQgdW5jb25kaXRpb25hbGx5LiBJbnRlcmVzdGluZy4gV2UgaGF2ZSBgb2JqLXkgJiM0Mzs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9gLCBtZWFuaW5nIHRoYXQgYXMgbG9uZyBhcyB0aGUgbW9kdWxlIGlzIGJlaW5nIGJ1aWx0IGF0IGFsbCwgdGhpcyB3aG9sZSB0cmVlIGlzIGluY2x1ZGVkLiBUaGF0IG1lYW5zIGVuYWJsaW5nIGBDT05GSUdfVklERU9fVklWSURgIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gcHVsbCBldmVyeXRoaW5nIGluLiBHb3QgaXQuCgpOb3csIG15IHByaW1hcnkgaW50ZXJlc3QgaXMgaW4gdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgcmVzb3VyY2VzIHdpdGhpbiB0aGlzIGRyaXZlci4gTGV0IG1lIGRpZyBpbnRvIGB2aXZpZC1jb3JlLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gYHZpdmlkX3JlcV9hbGxvY2AgYW5kIGB2aXZpZF9yZXFfZnJlZWAuIFRob3NlIGFyZSBrZXkgc3ltYm9scy4gV2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHJlcXVlc3QgaGFuZGxpbmcgaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIC0gYW5kIHRoYXQgbWFrZXMgbWUgdGhpbmsgb2YgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2AuCgpBaGEsIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGlzIGBzdGF0aWNgLiBUaGF04oCZcyBnb29kIHRvIGtub3cuIFRoZSBzaWduYXR1cmUgaXMgYHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilgLiBCdXQgd2FpdCBhIHNlY29uZCwgSSBzZWUgYG1lZGlhX3JlcXVlc3RfcHV0YCBpcyBleHBvcnRlZCEgVGhhdOKAmXMgdW5leHBlY3RlZC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKWAuIE9rYXksIGxldCBtZSBwaXZvdCBvdmVyIHRvIGBtYy1yZXF1ZXN0LmNgIGFnYWluLCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHVzYWdlIG9mIGBtZWRpYV9yZXF1ZXN0X3B1dGAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVmY291bnRpbmcgYW5kIHJlc291cmNlIGxpZmVjeWNsZSBhcmUgbWFuYWdlZCB3aXRoIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODIte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjg1OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE0OC1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWRldi1cdTAwM2VyZXFfcXVldWVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCByZXQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzUtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDEtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzNi1cdGlmIChjb21wbGV0ZWQpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XHRcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEZvY3VzIFBvaW50cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBiYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcgbGF0ZWx5LCB0aGUgYG1lZGlhX3JlcXVlc3RfcHV0YCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgc29saWQgYW5jaG9yIHBvaW50IGZvciBkaXZpbmcgZGVlcGVyIGludG8gdGhpcyBhcmVhLiBJdCYjMzk7cyBvZnRlbiBhIGtleSBmdW5jdGlvbiB3aGVuIHRoaW5raW5nIGFib3V0IG1lZGlhIHJlcXVlc3RzLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBzb21lIG9mIG15IGludmVzdGlnYXRpb24gdGhlcmUuIEFsc28sIGRvbiYjMzk7dCBmb3JnZXQgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgbGlrZWx5IHJlbGV2YW50LCBhbmQgbWF5IHBsYXkgYW4gaW1wb3J0YW50IHJvbGUsIHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHJlcXVlc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk5MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVml2aWQgQ29yZSYjMzk7cyBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYHZpdmlkLWNvcmUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBhcmUgc3RhdGljLCB3aGljaCBsaW1pdHMgdGhlaXIgdXNlIGFzIGZvY3VzIHN5bWJvbHMsIHVuZm9ydHVuYXRlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqZXhwb3NlZCogZnJvbSB0aGlzIG1vZHVsZS4KCkxldCYjMzk7cyBzZWXigKYgSSBrbm93IHRoYXQgYHZpdmlkX3JlcV9hbGxvY2AgaXMgY2FsbGVkIGluZGlyZWN0bHkgdGhyb3VnaCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgaXQgdmlhIGBtZGV2LSZndDtvcHMtJmd0O3JlcV9hbGxvY2AuIFNpbWlsYXJseSwgYHZpdmlkX3JlcV9mcmVlYCBnZXRzIGNhbGxlZCBieSBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBhZnRlciBnb2luZyB0aHJvdWdoIGBtZGV2LSZndDtvcHMtJmd0O3JlcV9mcmVlYC4gU28sIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBzZWVtIGxpa2UgbXkga2V5IGVudHJ5IHBvaW50cyBiZWNhdXNlIGBtZWRpYV9yZXF1ZXN0X3B1dGAgY2FsbHMgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAuIEdvb2QuIFRoYXQgZ2V0cyBtZSB3aGVyZSBJIG5lZWQgdG8gYmUuCgpCdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4gSSBhbHNvIHNlZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgYGlvY3RsYCBmdW5jdGlvbnMgbGlrZSBgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZWAgYW5kIGBtZWRpYV9yZXF1ZXN0X2lvY3RsYCB0aGF0IGNvdWxkIGFsc28gYmUgZW50cnkgcG9pbnRzLiBUaGUgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSByZWxldmFudCBpcyBgbWVkaWFfcmVxdWVzdF9jbG9zZWAuIExldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVkaWFfcmVxdWVzdF9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTk1PXN0YXRpYyBfX3BvbGxfdCBtZWRpYV9yZXF1ZXN0X3BvbGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTIxOnN0YXRpYyBsb25nIG1lZGlhX3JlcXVlc3RfaW9jdGxfcXVldWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTEyMi17XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg5LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTkwOnN0YXRpYyBsb25nIG1lZGlhX3JlcXVlc3RfaW9jdGxfcmVpbml0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xOTEte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIyNy1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIyODpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjI5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjM0LVx0Y2FzZSBNRURJQV9SRVFVRVNUX0lPQ19RVUVVRTpcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIzNTpcdFx0cmV0dXJuIG1lZGlhX3JlcXVlc3RfaW9jdGxfcXVldWUocmVxKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNi1cdGNhc2UgTUVESUFfUkVRVUVTVF9JT0NfUkVJTklUOlxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MjM3Olx0XHRyZXR1cm4gbWVkaWFfcmVxdWVzdF9pb2N0bF9yZWluaXQocmVxKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzOC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MjQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlcXVlc3RfZm9wcyA9IHtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDUtXHQucG9sbCA9IG1lZGlhX3JlcXVlc3RfcG9sbCxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0NjpcdC51bmxvY2tlZF9pb2N0bCA9IG1lZGlhX3JlcXVlc3RfaW9jdGwsXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDctI2lmZGVmIENPTkZJR19DT01QQVRcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0ODpcdC5jb21wYXRfaW9jdGwgPSBtZWRpYV9yZXF1ZXN0X2lvY3RsLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjQ5LSNlbmRpZiAvKiBDT05GSUdfQ09NUEFUICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDgzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBwaHJhc2VkIGFzIGEgc3VtbWFyeSBvZiBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgbWVkaWEtcmVsYXRlZCByZXF1ZXN0cy4gUmlnaHQgbm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgc2VlbXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJiMzOTt2ZSBnb3QsIHRoYXQgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGlzIGRlZmluaXRlbHkgKmNhbGxlZCogZnJvbSB3aXRoaW4gYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFyY2hpdGVjdHVyYWwgcG9pbnQgSSBuZWVkIHRvIGhhdmUgbG9ja2VkIGRvd24uIFRoaXMgY2xhcmlmaWVzIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiBhdCB3b3JrIGhlcmUgYW5kIGluZm9ybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udHJvbCBmbG93LiBOb3cgSSBjYW4gbW92ZSBvbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyByb2xlIG9mIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHJlcXVlc3QgbGlmZWN5Y2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz0yMzA9c3RhdGljIGxvbmcgbWVkaWFfZGV2aWNlX2dldF90b3BvbG9neShzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy0zNzItXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjM3MzpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTM3NC17XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz00MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9pb2N0bF9pbmZvIGlvY3RsX2luZm9bXSA9IHtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzMC1cdE1FRElBX0lPQyhHX1RPUE9MT0dZLCBtZWRpYV9kZXZpY2VfZ2V0X3RvcG9sb2d5LCBNRURJQV9JT0NfRkxfR1JBUEhfTVVURVgpLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYzo0MzE6XHRNRURJQV9JT0MoUkVRVUVTVF9BTExPQywgbWVkaWFfZGV2aWNlX3JlcXVlc3RfYWxsb2MsIDApLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgRGV2aWNlIFJlcXVlc3QgQWxsb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYCBmdW5jdGlvbi4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgdGhlIGhhbmRsZXIgZm9yIHRoYXQgYE1FRElBX0lPQ19SRVFVRVNUX0FMTE9DYCBpb2N0bC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwganVzdCByb3V0aW5nIHRoZSBpb2N0bCBjYWxsLiBOb3csIGxldCYjMzk7cyBzZWUgaG93IHRoYXQgcmVxdWVzdCBhbGxvY2F0aW9uIGFjdHVhbGx5IGhhcHBlbnMuLi4gQWgsIGhlcmUgaXQgaXMsIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoYXQgaGFuZGxlci4gR29vZCwgbm93IEkgaGF2ZSBhIGxlYWQgb24gd2hlcmUgdGhlIGFsbG9jYXRpb24gbG9naWMgaXMgbG9jYXRlZC4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gYG1lZGlhX3JlcXVlc3RfYWxsb2NgIHNwZWNpZmljYWxseSwgbGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGJyb2FkZXIgdmlldy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZWRpYV9kZXZpY2VfaW9jdGxgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIGlvY3RsIGhhbmRsaW5nIHdpdGhpbiB0aGUgbWVkaWEgZGV2aWNlIGZyYW1ld29yay4gVGhhdCB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIGNvbnRleHQgYXJvdW5kIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW4gdGhlIHdlZWRzLiBDb250ZXh0IGlzIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9kZXZpY2VfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfaW9jdGxfaW5mbyBpb2N0bF9pbmZvW10gPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzMtXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjQzNDpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzNS1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBfX2FyZylcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTUxOD1zdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTMzLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NTM0Olx0XHRyZXR1cm4gbWVkaWFfZGV2aWNlX2lvY3RsKGZpbHAsIGNtZCwgYXJnKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTM1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZmlsZV9vcGVyYXRpb25zIG1lZGlhX2RldmljZV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQzLVx0Lm9wZW4gPSBtZWRpYV9kZXZpY2Vfb3BlbixcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NTQ0Olx0LmlvY3RsID0gbWVkaWFfZGV2aWNlX2lvY3RsLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy01NDUtI2lmZGVmIENPTkZJR19DT01QQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBWaXZpZC1Db3JlLmMgZm9yIFJlcXVlc3QgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBhcmUgZXhwb3J0ZWQgYW5kIG5vdCBzdGF0aWMgd2l0aGluIGB2aXZpZC1jb3JlLmNgLiBFeGNlbGxlbnQsIHRob3NlIGFyZSBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3ltYm9scyBJJiMzOTttIGxvb2tpbmcgZm9yIOKAkyB0aGV5JiMzOTtyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyByZXF1ZXN0cyBhcmUgY3JlYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgcmVxdWVzdCBsaWZlY3ljbGUuCgpOb3csIG15IG5leHQgbW92ZSBpcyB0byBicm9hZGVuIHRoZSBzZWFyY2ggYSBiaXQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB2aXZpZC1jb3JlLmNgIHRoYXQgYXJlIHNvbWVob3cgaW52b2x2ZWQgd2l0aCByZXF1ZXN0IG1hbmFnZW1lbnQuIEkmIzM5O20gdGhpbmtpbmcgSSBtaWdodCBmaW5kIHNvbWUgaW50ZXJtZWRpYXRlIGZ1bmN0aW9ucywgcmVsYXRlZCBoZWxwZXIgZnVuY3Rpb25zLCBvciBwb3RlbnRpYWxseSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZXJyb3Igc3RhdGVzIGNvbm5lY3RlZCB0byByZXF1ZXN0cy4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgYHZpdmlkLWNvcmUuY2Agb2ZmZXJzIGluIHRoaXMgcmVnYXJkLiBUaGlzIGNvdWxkIHJldmVhbCBvdGhlciB1c2VmdWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXZpZF9yZXEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jPTg1Mj1zdGF0aWMgdm9pZCB2aXZpZF9kZXZfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04NzEtI2lmZGVmIENPTkZJR19NRURJQV9DT05UUk9MTEVSXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6ODcyOnN0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODczLXtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODg0LVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjg4NTpzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg4Ni17XG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5Mi1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo4OTM6c3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04OTQte1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9kZXZpY2Vfb3BzIHZpdmlkX21lZGlhX29wcyA9IHtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo5MDU6XHQucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNjpcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNzpcdC5yZXFfdmFsaWRhdGUgPSB2aXZpZF9yZXFfdmFsaWRhdGUsXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtOTA4LVx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgTWVkaWEgUmVxdWVzdCBBbGxvY2F0aW9uKioKClJpZ2h0LCB0aGV5JiMzOTtyZSBhbGwgc3RhdGljLCBhcmVuJiMzOTt0IHRoZXk/IFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuLi5idXQgYWxzbyBtZWFucyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4gT2theSwgKmBtZWRpYV9yZXF1ZXN0X2FsbG9jYCogYW5kICpgbWVkaWFfcmVxdWVzdF9wdXRgKuKAlHRob3NlIGFyZSBteSBmb2NhbCBwb2ludHMgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG1lZGlhIHJlcXVlc3RzIGFyZSBhbGxvY2F0ZWQgYW5kIHJlbGVhc2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRob3NlIGFyZSB0aGUga2V5IG9wZXJhdGlvbnMsIHNvIHRoZXkmIzM5O2xsIHByb3ZpZGUgdGhlIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudC4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gY2hlY2sgb3V0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYG1jLXJlcXVlc3QuY2AuIExldCYjMzk7cyBzZWUgaG93IGFsbG9jYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4uLiB3aGF0IHRoZSBwcmVjb25kaXRpb25zIGFyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBob3cgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVkaWFfcmVxdWVzdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTI4Nz1FWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyODk6aW50IG1lZGlhX3JlcXVlc3RfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwgaW50ICphbGxvY19mZClcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI5MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDY2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBgbWMtcmVxdWVzdC5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHJlcXVlc3QgaGFuZGxpbmcgaXMgd29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGF0LiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UmIzM5O3JlIGRvaW5nIHRoZSBQVVQgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdywgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbWVkaWEgY2FjaGUgaXRzZWxmLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkIGJlZm9yZSB3ZSBldmVuICp0aGluayogYWJvdXQgb3B0aW1pemluZyBhbnl0aGluZy4gQWxyaWdodCwgbGV0JiMzOTtzIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODIte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjg1OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE0OC1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWRldi1cdTAwM2VyZXFfcXVldWVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCByZXQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzUtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDEtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzNi1cdGlmIChjb21wbGV0ZWQpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XHRcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgRW50cnkgUG9pbnRzIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kaWZpZWQgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyB0byBmb2N1cyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSBzaG91bGQgY2hlY2sgd2hhdCBvdGhlciBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQuCgpMZXQgbWUgc2Vl4oCmIHRoZXJlJiMzOTtzIGBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAsIGBDT05GSUdfVklERU9fVklWSURgLCBgQ09ORklHX01FRElBX1NVUFBPUlRgLCBhbmQgYENPTkZJR19WSURFT19ERVZgLiBSaWdodCwgSSByZW1lbWJlciBgQ09ORklHX01FRElBX1NVUFBPUlRgIGlzIGEgbWVudWNvbmZpZywgd2hpY2ggbWVhbnMgaXQgdHJhbnNsYXRlcyB0byBqdXN0IGBNRURJQV9TVVBQT1JUYCBkdXJpbmcgZXZhbHVhdGlvbi4gYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBpcyBqdXN0IGEgYm9vbGVhbi4gYENPTkZJR19WSURFT19WSVZJRGAgYW5kIGBDT05GSUdfVklERU9fREVWYCBhcmUgdHJpc3RhdGVzLgoKTm93LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWSURFT19WSVZJRGA/IExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQuIEhtbSwgaXQgZGVwZW5kcyBvbiBgVklERU9fREVWICZhbXA7JmFtcDsgIVNQQVJDMzIgJmFtcDsmYW1wOyAhU1BBUkM2NGAsIGFuZCBhbHNvIGBIQVNfRE1BYC4gSXQgYWxzbyBzZWxlY3RzIGEgYnVuY2ggb2Ygb3RoZXIgb3B0aW9uczogYEZPTlRfU1VQUE9SVGAsIGBGT05UXzh4MTZgLCBgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURgIGlmIGBGQl9DT1JFYCwgYFZJREVPQlVGMl9WTUFMTE9DYCwgYFZJREVPQlVGMl9ETUFfQ09OVElHYCwgYFZJREVPX1Y0TDJfVFBHYCwgYW5k4oCmIGhvbGQgb24gYSBtaW51dGXigKYgaXQgc2VsZWN0cyBgTUVESUFfQ09OVFJPTExFUmAgYW5kIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYD8gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHNlbGVjdGVkIG9wdGlvbnMgYXJlIGNvbnNpc3RlbnQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTUVESUFfQ09OVFJPTExFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yPWNvbmZpZyBWSURFT19WSVZJRFxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMTAtXHRzZWxlY3QgVklERU9fVjRMMl9UUEdcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MTE6XHRzZWxlY3QgTUVESUFfQ09OVFJPTExFUlxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIHRoZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGJlZHJvY2sgb2YgaG93IHdlJiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIG1lZGlhIGNvbnRyb2wgaW4gdGhpcyBzZXR1cCwgb3IgYXQgbGVhc3QgaG93IHdlJiMzOTtyZSAqcmVxdWVzdGluZyogaXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgaG93IGl0JiMzOTtzIGRlc2lnbmVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgbWVkaWEgdHlwZXMgYW5kIGNvbnRyb2wgc3VyZmFjZXMuIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdGhlIHJlcXVlc3QgZmxvdywgcGVybWlzc2lvbiBtb2RlbHMgKGlmIGFueSksIGFuZCB0aGUgbWVjaGFuaXNtcyBmb3IgY29tbXVuaWNhdGluZyB0aGVzZSByZXF1ZXN0cyBhY3Jvc3MgcHJvY2Vzc2VzIG9yIHdpdGhpbiBhIHNpbmdsZSBhcHAuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzIHRvIGNoZWNrIGZvciB3aGV0aGVyIGFueSBlZGdlIGNhc2VzIGFyZSBjb25zaWRlcmVkLiBXaGF0IGFyZSB0aGUgZmFsbGJhY2sgcHJvY2VkdXJlcz8gQXJlIHRoZSByZXF1ZXN0JiMzOTtzIHBhcmFtZXRlcnMgY2hlY2tlZCBmb3IgdmFsaWRpdHk/IFRoaXMgaXMgdGhlIGNvcmUgaW50ZXJmYWNlLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXQgaW1wbGljaXRseSBiZWZvcmUgbW92aW5nIG9uLiBXaGF0IGRvICpJKiBrbm93LCBmcm9tIG1lbW9yeSwgYWJvdXQgdGhpcyBBUEk/IERvIEkgbmVlZCB0byBjb25zdWx0IHRoZSBjb2RlIGl0c2VsZiwgb3IgbWF5YmUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIHJlbGF0ZWQgYXJjaGl0ZWN0dXJlPyBMZXQmIzM5O3MgYmVnaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpIbW0sIHRoaXMgaXMgY3VyaW91cy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG9wdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBieSBgVklERU9fVklWSURgLCBidXQgaXQgYXBwZWFycyB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gVGhpcyBpcyB1bmV4cGVjdGVkOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb25zIG9mIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbGlrZWx5IHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2Agb3IgcG9zc2libHkgZGlnZ2luZyBkZWVwZXIgaW50byBgZHJpdmVycy9tZWRpYS9tYy9LY29uZmlnYC4gSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gb3B0aW9ucywgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBhdGggZm9yIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgU2hlbmFuaWdhbnM6IElzIFRoaXMgUmVhbD8qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBzZWVpbmcgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgLi4uIGFuZCB0aGF0JiMzOTtzICpsaXN0ZWQqIGFzIGEgY29uZmlnIG9wdGlvbj8gSW4gYGRyaXZlcnMvbWVkaWEvbWMvS2NvbmZpZ2A/IFNlcmlvdXNseT8gSSBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHN1Z2dlc3RzIHNvbWV0aGluZyBwb3RlbnRpYWxseSBuZXcgb3IsIGF0IGxlYXN0LCBzb21ldGhpbmcgSSBoYXZlbiYjMzk7dCBkaXJlY3RseSBlbmNvdW50ZXJlZCBpbiB0aGlzIGNvbnRleHQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscyBpbiB0aGUgbWVkaWEgY29udHJvbGxlciBkcml2ZXIgc3BhY2UuIElzIHRoaXMgYSBuZXcgQVBJIHJlcXVlc3QsIG9yIHNvbWV0aGluZyB0aWVkIHRvIHRoZSBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIGNvbmZpZ3VyYXRpb24/IFRoaXMgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVyaXRzICppbW1lZGlhdGUqIGludmVzdGlnYXRpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIFgsIFksIG9yIFogaW4gdGhlIGN1cnJlbnQgcHJvamVjdCwgZGVwZW5kaW5nIG9uIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGRyaXZlciBpbnRlcmZhY2VzIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBJJiMzOTt2ZSBnb3QgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaW4gdGhhdCBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCBraW5kIG9mIGNvbnRyb2wgaXQgZ2l2ZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTEyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBtZWRpYSBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBSZW5hbWVkIG9yIFJlbW92ZWQgQVBJIENhbGwqKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIGhhcyBlaXRoZXIgYmVlbiBkZXByZWNhdGVkIG9yIGhhZCBpdHMgbmFtZSBjaGFuZ2VkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmUuIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbWVkaWEvbWMvYC4gVGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb3IgZGVmaW5pdGlvbiBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhhdCBBUEksIGFuZCBjaGVja2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIGlkZWEgaW4gdGhlc2Ugc2l0dWF0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYSBjaGFuZ2UgdG8gdGhlIGJ1aWxkIHByb2Nlc3Mgb3IgbW9kdWxlIGluY2x1c2lvbiBtaWdodCBiZSB0aGUgY3VscHJpdC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyB0cnVseSBnb25lLCBvciBtZXJlbHkgcmVuYW1lZCwgYW5kIHRoZW4gd2hhdCB0aGUgcmVwbGFjZW1lbnQgKGlmIGFueSkgaXMuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIHByb2NlZHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWMtcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcdDo9IG1jLWRldmljZS5vIG1jLWRldm5vZGUubyBtYy1lbnRpdHkubyBcXFxuZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZTo0Olx0ICAgbWMtcmVxdWVzdC5vXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDY0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTG9naWMgZm9yIGBtYy1yZXF1ZXN0LmNgKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbWMtcmVxdWVzdC5jYCBpcyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgaWYgYG1jYCBpcyBjb21waWxlZC4gQW5kIGBtY2AgaXRzZWxmIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBpcyBlbmFibGVkLiBUaGVyZWZvcmUsIGBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAgc2hvdWxkIGJlIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IG5lZWRlZCB0byBlbnN1cmUgdGhhdCBgbWMtcmVxdWVzdC5jYCBpcyBjb21waWxlZC4KCkhvd2V2ZXIsIEkgbmVlZCB0byBjb25zaWRlciBkZXBlbmRlbmNpZXMuIEkgYWxzbyBzZWUgcmVmZXJlbmNlcyB0byBgTUVESUFfU1VQUE9SVGAsIGBWSURFT19ERVZgLCBhbmQgYFZJREVPX1ZJVklEYC4gQWgsIGJ1dCBoZXJlJiMzOTtzIHNvbWV0aGluZyB1c2VmdWw6IGBWSURFT19WSVZJRGAgKnNlbGVjdHMqIGBNRURJQV9DT05UUk9MTEVSYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlcmVmb3JlLCBpZiBgVklERU9fVklWSURgIGlzIGVuYWJsZWQsIHRoZW4gYE1FRElBX0NPTlRST0xMRVJgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCBtZWFucywgdG8gZ2V0IGBtYy1yZXF1ZXN0LmNgIGNvbXBpbGVkLCB0aGUgbWluaW1hbCBhbmQgc3VmZmljaWVudCBjb25maWcgb3B0aW9ucyBJIG5lZWQgYXJlIGBWSURFT19WSVZJRGAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHZpdmlkX3JlcV9hbGxvY2AgaXMgY2FsbGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBjYWxscyBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfYWxsb2NgLiBBbmQgaW4gYHZpdmlkLWNvcmUuY2AsIGB2aXZpZF9tZWRpYV9vcHNgIGFzc2lnbnMgYC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2NgLCBhbmQgdGhpcyBzdHJ1Y3QgaXMgYXNzaWduZWQgdG8gYG1kZXYtJmd0O29wc2AuIFRoYXQgY29uZmlybXMgZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXZpZF9tZWRpYV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jPTg5Mz1zdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDMtXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6OTA0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtOTA1LVx0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9MTgyMz1zdGF0aWMgaW50IHZpdmlkX2NyZWF0ZV9pbnN0YW5jZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaW5zdClcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtMTg1NC1cdG1lZGlhX2RldmljZV9pbml0KFx1MDAyNmRldi1cdTAwM2VtZGV2KTtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzoxODU1Olx0ZGV2LVx1MDAzZW1kZXYub3BzID0gXHUwMDI2dml2aWRfbWVkaWFfb3BzO1xuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTYtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Mzc3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoIGZvciBNZWRpYSBDb250cm9sbGVyIEFQSSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZS4gVGhlIGNvcmUgb2YgdGhpcyBmaXggaXMgY2VudGVyZWQgYXJvdW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgbWMtcmVxdWVzdC5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJLiBUaGUgc29sdXRpb24gaW52b2x2ZXMgYSBjcml0aWNhbCBtb2RpZmljYXRpb24gdG8gdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIOKAkyBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgKmJlZm9yZSogY2FsbGluZyBgcmVxX2ZyZWVgIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheSBhcm91bmQuIFRoaXMga2luZCBvZiBjaGFuZ2UgaXMgZXhhY3RseSB0aGUgc29ydCBvZiB0aGluZyB0aGF0IGNhbiBxdWlldGx5IGludHJvZHVjZSByZWdyZXNzaW9ucywgd2hpY2ggaXMgd2h5IHRoZXkgYXJlIHBhdGNoaW5nIGl0LgoKTm93LCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHZpdmlkLWNvcmUuY2AgZmlsZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgdml2aWQgdGVzdCBkcml2ZXIuIFRoZSBnb2FsIG9mIHRoZXNlIGNhbGxiYWNrcyBpcyB0byBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgYHY0bDJfZGV2YCBvYmplY3QuIEFkZGluZyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBjYWxsYmFja3Mgd2l0aGluIHRoZSBgdml2aWQtY29yZS5jYCBmaWxlIGlzIGludGVyZXN0aW5nIGFuZCBwb2ludHMgdG8gYSBkZWVwZXIgY29uY2Vybi4gVGhhdOKAmXMgcHJvYmFibHkgdGhlIHJlYXNvbiB0aGV5IG1lbnRpb25lZCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgd2l0aCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIEkgY2FuIGVhc2lseSBzZWUgaG93IHRoaXMgYmVjb21lcyByZWFjaGFibGUgaW4gbWFueSBkaWZmZXJlbnQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIHBhdGNoIHRvdWNoZXMgYm90aCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBhbmQgYSB0ZXN0IGRyaXZlciwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgbmV3IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSByb2J1c3QuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZXNlIHR3byBzeW1ib2xzIGFzIEkgZ28gdGhyb3VnaCB0aGlzOiBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGV4cGVjdGluZyB0byBiZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiBgbWMtcmVxdWVzdC5jYC4KCkZpbmFsbHksIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgSSYjMzk7bSBub3RpbmcgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zOiBgVklERU9fVklWSURgLCBgTUVESUFfQ09OVFJPTExFUmAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLiBUaGVzZSBjb25maWd1cmF0aW9ucyB3aWxsIGRpcmVjdGx5IGluZmx1ZW5jZSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBJdCYjMzk7cyBpbXBlcmF0aXZlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBtYy1yZXF1ZXN0LmNgIHRoYXQgY291bGQgYWxzbyBiZSBpbXBhY3RlZC4gQmVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTgxPXZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo4NTpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X3B1dCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04Ni1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0yNTQ9bWVkaWFfcmVxdWVzdF9nZXRfYnlfZmQoc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwgaW50IHJlcXVlc3RfZmQpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg2LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4NzpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzU4PW1lZGlhX3JlcXVlc3Rfb2JqZWN0X2ZpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zNzktfVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2ZpbmQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzgxLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzgyPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM4NS19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzozODY6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM4Ny1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM4OD12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2luaXQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzk2LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjM5NzpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9pbml0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM5OT1pbnQgbWVkaWFfcmVxdWVzdF9vYmplY3RfYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxLFxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzMi19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo0MzM6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfYmluZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00MzQtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00MzU9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3ODpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc5LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NDgwPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfY29tcGxldGUoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjUwNDpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDUtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzOC19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzk6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9tYW51YWxfY29tcGxldGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBNZWRpYSBSZXF1ZXN0IEFsbG9jYXRpb24qKgoKT2theSwgc28gYG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkYCBzZWVtcyBsaWtlIGEgc29saWQgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uIGhlcmU7IGFmdGVyIGFsbCwgaXQmIzM5O3MgYWJvdXQgcmV0cmlldmluZyBhIHJlcXVlc3QsIHdoaWNoIGlzIG9mdGVuIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIE5vdywgSSB0aG91Z2h0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBtaWdodCBiZSBhbm90aGVyIGltcG9ydGFudCBvbmUuLi4gYnV0IGhvbGQgb24sIGlzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uICpub3QqIGV4cG9ydGVkPyBUaGF0IGRvZXNuJiMzOTt0IHNlZW0gcmlnaHQuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYmVjYXVzZSB0aGF0IHdvdWxkIGNoYW5nZSB0aGluZ3Mgc2lnbmlmaWNhbnRseSBpZiB0cnVlLiBUaW1lIHRvIHZlcmlmeSBgbWVkaWFfcmVxdWVzdF9hbGxvY2Agb25jZSBtb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MDMKCQkJCQkJCW91dHB1dDogMTcxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIHN5bWJvbCBpbiBxdWVzdGlvbiBpc24mIzM5O3QgZXhwb3J0ZWQsIGJ1dCBpdCAqaXMqIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbi4gQW5kLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbWMtZGV2aWNlLmNgLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBTaW5jZSBpdCYjMzk7cyBjYWxsZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhhdCBjb250ZXh0LCBpdCBtZWFucyBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgZGVmaW5pdGVseSBhcHByb3ByaWF0ZSBmb3Igb3VyIG5lZWRzLgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgYXMgdGhlIGNvcmUgc3ltYm9scyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJJiMzOTtsbCBiZSBjb25jZW50cmF0aW5nIG9uIGhlcmUuIE5vdywgSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGFmdGVyIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgVUFGIGlmIGByZXFfZnJlZWAgZHJvcHBlZCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIG1lZGlhIGRldmljZSwgY2F1c2luZyBgbWRldmAgdG8gYmUgZnJlZWQgYmVmb3JlIHRoZSBgYXRvbWljX2RlY2Agb3BlcmF0aW9uLiBUaGUgcGF0Y2ggcmVvcmRlcnMgdGhlc2Ugb3BlcmF0aW9ucyB0byBwcmV2ZW50IHRoZSBVQUYuIEFkZGl0aW9uYWxseSwgaXQgaW1wbGVtZW50cyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBpbiB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSBgdjRsMl9kZXZgIHJlZmVyZW5jZSBjb3VudC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxuXG5UaGVyZWZvcmUsIHRoaXMgYnVnIGNsYXNzIChVQUYpIGlzIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAogCW1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTsKIAomIzQzOwlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIAlpZiAobWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZSkKIAkJbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpOwogCWVsc2UKIAkJa2ZyZWUocmVxKTsKLQlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIH0KIAogdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jCmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMKQEAgLTg2OSw2ICYjNDM7ODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB9CiAKICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUgomIzQzO3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7CiYjNDM7CXN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXE7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV9nZXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0MzsJcmV0dXJuIHJlcTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdml2aWRfcmVxX2ZyZWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwomIzQzOwomIzQzOwlrZnJlZShyZXEpOwomIzQzOwl2NGwyX2RldmljZV9wdXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwpAQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0gewomIzQzOwkucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLAomIzQzOwkucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSwKIAkucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLAogCS5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTMxCgkJCQkJCQlvdXRwdXQ6IDMwMAoJCQkJCQkJdGhvdWdodHM6IDEyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWVkaWEgUmVxdWVzdCBMaWZlY3ljbGUgRml4KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aXRoaW4gdGhlIG1lZGlhIHJlcXVlc3QgaGFuZGxpbmcuIFRoZSBjaGFuZ2UgaW4gYG1jLXJlcXVlc3QuY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFdlJiMzOTtyZSBtb2RpZnlpbmcgdGhlIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgY29uY2VybmluZyBgYXRvbWljX2RlYygmYW1wO21kZXYtJmd0O251bV9yZXF1ZXN0cylgIGFuZCBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpYC4gIFRoZSBvcmlnaW5hbCBvcmRlciBwcmVzZW50ZWQgYSBwb3RlbnRpYWwgcHJvYmxlbTogaWYgYG1kZXYtJmd0O29wcy0mZ3Q7cmVxX2ZyZWVgIGZyZWVzIHRoZSBtZWRpYSBkZXZpY2UgKGBtZGV2YCkgKmJlZm9yZSogdGhlIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCwgd2UgaGF2ZSBhIGNsZWFyIHVzZS1hZnRlci1mcmVlLiBUaGUgc3Vic2VxdWVudCBgYXRvbWljX2RlY2Agd291bGQgYmUgb3BlcmF0aW5nIG9uIGEgZnJlZWQgb2JqZWN0LgoKVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgc2hpZnRpbmcgYGF0b21pY19kZWMoJmFtcDttZGV2LSZndDtudW1fcmVxdWVzdHMpYCAqYmVmb3JlKiBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpYC4gVGhhdOKAmXMgdGhlIGNvcmUgZml4OiBlbnN1cmluZyB0aGUgcmVmZXJlbmNlIGNvdW50IGlzIGRlY3JlbWVudGVkICpiZWZvcmUqIGFueSBwb3NzaWJsZSBkZWFsbG9jYXRpb24gb2NjdXJzLiAgSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgYnV0IGNydWNpYWwgZml4IHRvIHByZXZlbnQgdGhpcyB2ZXJ5IGNvbW1vbiB0eXBlIG9mIG1lbW9yeSBjb3JydXB0aW9uLgoKTm93LCB0aGUgYHZpdmlkLWNvcmUuY2AgY2hhbmdlcyBhcmUgaW50ZXJlc3RpbmcsIHNwZWNpZmljYWxseSB0aGUgYWRkaXRpb24gb2YgYHZpdmlkX3JlcV9hbGxvY2AgYW5kIGB2aXZpZF9yZXFfZnJlZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYG1lZGlhX3JlcXVlc3RgIHN0cnVjdCBhbmQsIGNydWNpYWxseSwgdG8gbWFpbnRhaW4gdGhlIGB2NGwyX2RldmAgcmVmZXJlbmNlIGNvdW50LiAgVGhlIHVzZSBvZiBga3phbGxvY19vYmooKnJlcSlgIGlzIGEgc2xpZ2h0IHdyaW5rbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoYXQuIGBremFsbG9jX29iamA/IEFoLCBJIHNlZSwgcHJvYmFibHkgYSBtYWNybyBvciBhIHR5cG8gKG9yIG1heWJlIHNvbWV0aGluZyBjdXN0b20gaW4gdml2aWQgdGhhdCBJIGRvbiYjMzk7dCByZWNhbGwgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCkuIEJ1dCwgaW4gYW55IGNhc2UsIHRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIGFsbG9jYXRlIGFuZCB6ZXJvIHRoZSBtZW1vcnkuCgpFc3NlbnRpYWxseSwgYnkgaW1wbGVtZW50aW5nIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIHdpdGhpbiBgdml2aWRgLCB0aGV5IGFyZSBub3cgY29udHJvbGxpbmcgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiB0aGUgcmVxdWVzdCwgYW5kIGltcG9ydGFudGx5LCBnZXR0aW5nIGFuZCBwdXR0aW5nIGEgcmVmZXJlbmNlIG9uIHRoZSBgdjRsMl9kZXZgIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBUaGlzIHByZXZlbnRzIGB2NGwyX2RldmAgZnJvbSBiZWluZyBmcmVlZCBwcmVtYXR1cmVseSBpZiB0aGVyZSBhcmUgc3RpbGwgcmVxdWVzdHMgb3V0c3RhbmRpbmcuCgpUaGlzIGlzIGEgd2VsbC11bmRlcnN0b29kIHBhdHRlcm4gZm9yIG1hbmFnaW5nIG9iamVjdCBsaWZldGltZXMgd2hlbiBkZWFsaW5nIHdpdGggY2FsbGJhY2tzIHRoYXQgbWlnaHQgcmVsZWFzZSByZXNvdXJjZXMuIFRoZSBwYXRjaCBlc3NlbnRpYWxseSByZXNvbHZlcyBhbiBvYmplY3QgbGlmZXRpbWUgaXNzdWUuCgpDcnVjaWFsbHksIHRoZSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhc3BlY3QgaXMgb2J2aW91cy4gVGhpcyBraW5kIG9mIHVzZS1hZnRlci1mcmVlIGlzICpleGFjdGx5KiB3aGF0IEtBU0FOIGlzIGJ1aWx0IHRvIGRldGVjdC4gVGhpcyBwYXRjaCBmaXhlcyBhIGNsYXNzaWMgcmVmZXJlbmNlIGNvdW50aW5nL1VBRiBidWcsIHNvIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0ZWQgZm9yIGRldGVjdGluZyB0aGlzLgoKVGhlcmVmb3JlLCB0aGlzIGZpeCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGRvbWFpbiBvZiBLQVNBTi4gVGhlcmUmIzM5O3Mgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBmaWVsZHMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBiZSB1bmluaXRpYWxpemVkLCB0aGVyZSYjMzk7cyBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBwcmlvciBpbml0aWFsaXphdGlvbi4gSSBzZWUgbm8gbmVlZCBmb3IgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBmdXp6aW5nIGluIHRoaXMgY2FzZS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaXMgZXhwbGljaXRseSB6ZXJvZWQsIGFuZCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG1lbW9yeSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgZW5zdXJpbmcgYSByZWxlYXNlIGhhcHBlbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIFRoZSByb290IGNhdXNlIGlzIGEgdXNlLWFmdGVyLWZyZWUsIHBsYWluIGFuZCBzaW1wbGUsIGFuZCBLQVNBTiBoYXMgZ290IGl0IGNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byB0aGUgYG1lZGlhX3JlcXVlc3RgIGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJbiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKClgLCBgYXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cylgIHdhcyBwcmV2aW91c2x5IGNhbGxlZCBhZnRlciBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBhcmUgbm8gbmV3IGZpZWxkcyBhZGRlZCB0aGF0IGNvdWxkIGJlIGxlZnQgdW5pbml0aWFsaXplZCwgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb250cm9sIGZsb3cgY2hhbmdlcyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGluIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjbGFzcyAoVUFGKSBpcyBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byB0aGUgYG1lZGlhX3JlcXVlc3RgIGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJbiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKClgLCBgYXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cylgIHdhcyBwcmV2aW91c2x5IGNhbGxlZCBhZnRlciBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBhcmUgbm8gbmV3IGZpZWxkcyBhZGRlZCB0aGF0IGNvdWxkIGJlIGxlZnQgdW5pbml0aWFsaXplZCwgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb250cm9sIGZsb3cgY2hhbmdlcyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGluIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjbGFzcyAoVUFGKSBpcyBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuMzY3NTM1MDA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNzAzMTQxNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJREVPX1ZJVklEXCIsXG4gICAgXCJNRURJQV9DT05UUk9MTEVSXCIsXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gICAgXCJtZWRpYV9yZXF1ZXN0X3B1dFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ5IGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCBiZWZvcmUgY2FsbGluZyByZXFfZnJlZS4gSXQgYWxzbyBhZGRzIHJlcV9hbGxvYyBhbmQgcmVxX2ZyZWUgY2FsbGJhY2tzIHRvIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdjRsMl9kZXYgb2JqZWN0LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgbG9naWMgYW5kIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciwgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuMzY3NTQyMjc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYyODM1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcXG5pbmRleCAxM2U3NzY0ODgwN2MyLi41NGJiMDhlNjU3NzQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXFxuKysrIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcXG5AQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4gXFxuIFxcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcXG4gXFxuK1xcdGF0b21pY19kZWMoXFx1MDAyNm1kZXYtXFx1MDAzZW51bV9yZXF1ZXN0cyk7XFxuIFxcdGlmIChtZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJlcV9mcmVlKVxcbiBcXHRcXHRtZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJlcV9mcmVlKHJlcSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0a2ZyZWUocmVxKTtcXG4tXFx0YXRvbWljX2RlYyhcXHUwMDI2bWRldi1cXHUwMDNlbnVtX3JlcXVlc3RzKTtcXG4gfVxcbiBcXG4gdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xcbkBAIC04NjksNiArODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuIH1cXG4gXFxuICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxcbitzdGF0aWMgc3RydWN0IG1lZGlhX3JlcXVlc3QgKnZpdmlkX3JlcV9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2KVxcbit7XFxuK1xcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcXG4rXFx0c3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcTtcXG4rXFxuK1xcdHJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHR2NGwyX2RldmljZV9nZXQoXFx1MDAyNmRldi1cXHUwMDNldjRsMl9kZXYpO1xcbitcXHRyZXR1cm4gcmVxO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbit7XFxuK1xcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXFx1MDAzZW1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xcbitcXG4rXFx0a2ZyZWUocmVxKTtcXG4rXFx0djRsMl9kZXZpY2VfcHV0KFxcdTAwMjZkZXYtXFx1MDAzZXY0bDJfZGV2KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YocmVxLVxcdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcXG5AQCAtODgxLDYgKzkwMiw4IEBAIHN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XFxuK1xcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXFxuK1xcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxcbiBcXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxcbiBcXHQucmVxX3F1ZXVlID0gdmIyX3JlcXVlc3RfcXVldWUsXFxuIH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjQyLjg0NDczODQyNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MzAzNzU3OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSURFT19WSVZJRFwiLFxuICAgIFwiTUVESUFfQ09OVFJPTExFUlwiLFxuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVkaWFfcmVxdWVzdF9hbGxvY1wiLFxuICAgIFwibWVkaWFfcmVxdWVzdF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IEFQSSB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgZGVjcmVtZW50aW5nIHRoZSByZXF1ZXN0IGNvdW50IGJlZm9yZSBjYWxsaW5nIHJlcV9mcmVlLiBJdCBhbHNvIGFkZHMgcmVxX2FsbG9jIGFuZCByZXFfZnJlZSBjYWxsYmFja3MgdG8gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2NGwyX2RldiBvYmplY3QuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbWVkaWEgY29udHJvbGxlciBsb2dpYyBhbmQgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVxdWVzdCBsaWZlY3ljbGUgYXJlIGhhbmRsZWQgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG5pbmRleCAxM2U3NzY0ODgwN2MyLi41NGJiMDhlNjU3NzQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG5AQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiBcbiBcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcbiBcbitcdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIFx0aWYgKG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9mcmVlKVxuIFx0XHRtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpO1xuIFx0ZWxzZVxuIFx0XHRrZnJlZShyZXEpO1xuLVx0YXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cyk7XG4gfVxuIFxuIHZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xuQEAgLTg2OSw2ICs4NjksMjcgQEAgc3RhdGljIHZvaWQgdml2aWRfZGV2X3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19NRURJQV9DT05UUk9MTEVSXG4rc3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcbit7XG4rXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG4rXHRzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxO1xuK1xuK1x0cmVxID0ga3phbGxvY19vYmooKnJlcSk7XG4rXHRpZiAoIXJlcSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHR2NGwyX2RldmljZV9nZXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbitcdHJldHVybiByZXE7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZpdmlkX3JlcV9mcmVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG4re1xuK1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXHR2NGwyX2RldmljZV9wdXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbit9XG4rXG4gc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbiB7XG4gXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YocmVxLVx1MDAzZW1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xuQEAgLTg4MSw2ICs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xuK1x0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcbitcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxuIFx0LnJlcV92YWxpZGF0ZSA9IHZpdmlkX3JlcV92YWxpZGF0ZSxcbiBcdC5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuODQ0NzM5OTM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5ODEyNjgyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE1lZGlhIENvbnRyb2xsZXIgYW5kIFZJVklEIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBoYW5kbGluZyBhbmQsIHNwZWNpZmljYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBWSVZJRCB0ZXN0IGRyaXZlci4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZTogYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2Agbm93IGRlY3JlbWVudHMgYG1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzYCAqYmVmb3JlKiBjYWxsaW5nIHRoZSByZXF1ZXN0LXNwZWNpZmljIGZyZWUgZnVuY3Rpb24gKGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYCkuIFRoZXkndmUgYWxzbyBhZGRlZCBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCB0byBgdml2aWQtY29yZS5jYCBhbmQgaG9va2VkIHRoZW0gdXAgdG8gdGhlIGB2aXZpZF9tZWRpYV9vcHNgLlxuXG5SaWdodCBhd2F5LCB0aGUgcmVhc29uIGZvciB0aGUgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgY2hhbmdlIGNsaWNrczogaXQncyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24uIElmIGByZXFfZnJlZWAgY291bGQgZHJvcCB0aGUgKmxhc3QqIHJlZmVyZW5jZSB0byBgbWRldmAgKmR1cmluZyogdGhlIGZyZWUgb3BlcmF0aW9uLCB0aGVuIGRlY3JlbWVudGluZyB0aGUgY291bnRlciBhZnRlciBjYWxsaW5nIGl0IHdvdWxkIGJlIHRvbyBsYXRlLiBUaGUgY29kZSBhY2Nlc3NlcyBgbWRldmAgYXMgYW4gYXRvbWljIGNvdW50ZXIsIHdoaWNoIHNlZW1zIHNhZmUuIEJ1dCwgaWYgYSBgcmVxX2ZyZWVgIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgb24gYSB2NGwyIGRldmljZSB0aGVuIGl0IGNvdWxkIGluIHR1cm4gZnJlZSBgdml2aWRfZGV2YCwgd2hpY2ggd291bGQgZnJlZSBgbWRldmAuIElmIHRoaXMgaGFwcGVucywgdGhlbiBkZWNyZW1lbnRpbmcgdGhlIGF0b21pYyBjb3VudGVyIGFmdGVyd2FyZCBiZWNvbWVzIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5LiBTaGlmdGluZyB0aGUgZGVjcmVtZW50IGVuc3VyZXMgdGhpcyBjYW4ndCBoYXBwZW4uIEJyaWxsaWFudCFcblxuVGhlIGB2aXZpZGAgZHJpdmVyIGNoYW5nZXMgc3VwcG9ydCB0aGlzIGZpeC4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBgdml2aWRfcmVxX2FsbG9jYCBuZWVkcyB0byBncmFiIGEgcmVmZXJlbmNlIHRvIHRoZSBgdjRsMl9kZXZgIGFuZCBgdml2aWRfcmVxX2ZyZWVgIG5lZWRzIHRvIHJlbGVhc2UgaXQuIFRoaXMgZXhwbGljaXRseSB0aWVzIHRoZSBsaWZldGltZSBvZiB0aGUgYHZpdmlkX2RldmAgKGFuZCB0aGVyZWZvcmUgYG1kZXZgKSB0byB0aGUgZXhpc3RlbmNlIG9mIGFjdGl2ZSByZXF1ZXN0cy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IHNoaWZ0IGluIGhvdyByZXF1ZXN0cyBhcmUgbWFuYWdlZCBhdCB0aGUgbWVkaWEgY29udHJvbGxlciBsZXZlbCwgYW5kIGl0IGhhcyBkaXJlY3QgaW1wbGljYXRpb25zIGZvciB0aGUgVklWSUQgZHJpdmVyLiBUaGUgVklWSUQgZHJpdmVyLCBiZWluZyBhIHZpcnR1YWwgdmlkZW8gZHJpdmVyLCBtYWtlcyBpdCBlc3BlY2lhbGx5IGFwcGVhbGluZyB0byBmdXp6IHRoaXMgY2hhbmdlLiBJdCdzIGEgbmljZSwgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMuXG5cbk5vdywgbGV0J3MgZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBJIG5lZWQgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBmb3IgdGhlIG1lZGlhIGNvbnRyb2xsZXIgc2lkZSBhbmQgYENPTkZJR19WSURFT19WSVZJRGAgZm9yIHRoZSBWSVZJRCBkcml2ZXIgaXRzZWxmLiBJIHNlZSB0aG9zZSBtZW50aW9uZWQgaW4gYHZpdmlkLWNvcmUuY2Agc28gSSBjYW4gY29uZmlybSBteSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU1LjgyNjAxMTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDE4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19WSVZJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI6Y29uZmlnIFZJREVPX1ZJVklEXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI1OmNvbmZpZyBWSURFT19WSVZJRF9DRUNcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIkVuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzM6Y29uZmlnIFZJREVPX1ZJVklEX09TRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiRW5hYmxlIEZyYW1lYnVmZmVyIGZvciB0ZXN0aW5nIE91dHB1dCBPdmVybGF5XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjQzOmNvbmZpZyBWSURFT19WSVZJRF9NQVhfREVWU1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Mjo1NS44NzcwMzU5MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3ODgwMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgaXNzdWUgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgdGhlIG1lZGlhIHBsYXliYWNrIG9yIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBNRURJQV9DT05UUk9MTEVSYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY2VudHJhbCBzZXR0aW5ncyBkaWN0YXRpbmcgaG93IHRoZSBhcHBsaWNhdGlvbiBpbnRlcmZhY2VzIHdpdGggZXh0ZXJuYWwgbWVkaWEgZGV2aWNlcywgb3IgaGFuZGxlcyBpbnRlcm5hbCBwbGF5YmFjayBzY2VuYXJpb3MuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiBob3cgd2UncmUgZGVmaW5pbmcgdGhlIGNvbnRyb2xsZXIncyBiZWhhdmlvci4gVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMgdGhlIGNyaXRpY2FsIHNldHRpbmdzIGdvdmVybmluZyBjb250cm9sIG9mIG1lZGlhIHBsYXliYWNrIGFuZCBtdXN0IGJlIGNhcmVmdWxseSByZXZpZXdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU5LjQxNDkxODUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTc0NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRURJQV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWc9MTYwPWNvbmZpZyBWSURFT19ERVZcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjktXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE3MDpjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNzEtXFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU5LjQ2MDQ5ODQwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzQ0ODM0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkNoZWNraW5nIHRoZSBgTUVESUFfU1VQUE9SVGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYE1FRElBX1NVUFBPUlRgIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgZm91bmRhdGlvbiwgZm9yIGhvdyB3ZSdyZSBoYW5kbGluZyBtdWx0aW1lZGlhLCBzbyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIHRoZSB3YXkgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IGRldmlhdGlvbnMgYXQgdGhpcyBlYXJseSBzdGFnZSBjYW4gbGVhZCB0byBjYXNjYWRpbmcgaXNzdWVzIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzowMi40MzQ5ODQ2MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NjM3MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjAyLjQ4MDU1Njc5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTkyMjYwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIENoZWNrcG9pbnQ6IE1FRElBXFxfVEVTVFxcX1NVUFBPUlQqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gTXkgaW5zdGluY3QgaGVyZSBpcyB0byBpbW1lZGlhdGVseSBleGFtaW5lIHRoZSBgTUVESUFfVEVTVF9TVVBQT1JUYCBmbGFnIG9yIHZhcmlhYmxlLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2V5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCwgcG9zc2libHkgYSBkZWZpbmVkIGNvbnN0YW50IG9yIGEgZmVhdHVyZSBmbGFnLCB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgY2VydGFpbiBtZWRpYS1yZWxhdGVkIHRlc3QgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCdzIGEgZnVuZGFtZW50YWwgZGVjaXNpb24gcG9pbnQsIGFjdGluZyBhcyBhIGdhdGV3YXkgdG8gcnVubmluZyB0ZXN0IHN1aXRlcy4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBuZXh0IHN0ZXBzIGVudGlyZWx5IGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhpcyB2YXJpYWJsZS4gVGhlIHdob2xlIG1lZGlhIHRlc3RpbmcgcHJvY2VzcyBtYXkgYmUgc2hvcnQtY2lyY3VpdGVkIGlmIHRoZSB2YXJpYWJsZSBpcyBkaXNhYmxlZC4gVGhlIHZhcmlhYmxlIG1pZ2h0IGFmZmVjdCBvdGhlciBwcm9jZXNzZXMsIHNvIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjA1LjY3OTc4NTA2NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMjM4NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX1RFU1RfU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTEyNT1jb25maWcgTUVESUFfUExBVEZPUk1fU1VQUE9SVFxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTM5OmNvbmZpZyBNRURJQV9URVNUX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTQwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MDUuNzUzMDE2Mjk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzQ2Nzc3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogVklERU9fVklWSUQqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIG1ha2Ugc3VyZSB0aGUgYFZJREVPX1ZJVklEYCBlbnZpcm9ubWVudCBvciBtb2R1bGUgaXMgcnVubmluZyBjbGVhbi4gV2hhdCBhcmUgdGhlIGN1cnJlbnQgZGVwZW5kZW5jaWVzP1wiIEknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwgc3VzcGVjdHM6IHRoZSBncmFwaGljcyBwcm9jZXNzaW5nIHVuaXRzLCB0aGUgdmlkZW8gY29kZWMgbGlicmFyaWVzIChGRm1wZWcsIG1heWJlPyksIHRoZSBkcml2ZXIgdmVyc2lvbnMsIGFuZCwgb2YgY291cnNlLCBhbnkgc3BlY2lmaWMgZnJhbWV3b3JrIHZlcnNpb25zIHdlJ3JlIHRpZWQgdG8sIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBzb21lIGludGVybmFsIHBpcGVsaW5lIG9yIGEgdGhpcmQgcGFydHkgc3lzdGVtIHRoYXQgd2UgY2FsbCB1cG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaW52b2x2ZWQgaXMgY29tcGF0aWJsZSBhdCBhbGwgbGV2ZWxzLiBBcmUgd2UgcHVsbGluZyB0aGUgbGF0ZXN0IGRlcGVuZGVuY2llcyBvciBhcmUgd2UgcGlubmluZyBkb3duIGEgc3RhYmxlIHNldD8gSGF2ZSBhbnkgdXBkYXRlcyBoYXBwZW5lZCByZWNlbnRseSB0aGF0IG1pZ2h0IGhhdmUgY2F1c2VkIHJlZ3Jlc3Npb24/IEnigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBsb2dzLCBhbmQgcG90ZW50aWFsbHkgdGVzdCBhZ2FpbnN0IGEga25vd24tZ29vZCBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGhpbiB0aG9zZSBkZXBlbmRlbmNpZXMuIEknbSB0aGlua2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgY29tcGF0aWJpbGl0eSBxdWlya3MsIG9yIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MDkuNDg3Njk2NzMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzOTk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI9Y29uZmlnIFZJREVPX1ZJVklEXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIFZJREVPX0RFViBcXHUwMDI2XFx1MDAyNiAhU1BBUkMzMiBcXHUwMDI2XFx1MDAyNiAhU1BBUkM2NFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NTpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTYtXFx0c2VsZWN0IEZPTlRfU1VQUE9SVFxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yNT1jb25maWcgVklERU9fVklWSURfQ0VDXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJFbmFibGUgQ0VDIGVtdWxhdGlvbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6Mjc6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjgtXFx0c2VsZWN0IENFQ19DT1JFXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTMzPWNvbmZpZyBWSURFT19WSVZJRF9PU0RcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVxcdGJvb2wgXFxcIkVuYWJsZSBGcmFtZWJ1ZmZlciBmb3IgdGVzdGluZyBPdXRwdXQgT3ZlcmxheVxcXCJcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjM1OlxcdGRlcGVuZHMgb24gVklERU9fVklWSUQgXFx1MDAyNlxcdTAwMjYgRkJfQ09SRVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzY6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRD1tIHx8IEZCX0NPUkU9eVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMzctXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTQzPWNvbmZpZyBWSURFT19WSVZJRF9NQVhfREVWU1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDYtXFx0ZGVmYXVsdCBcXFwiNjRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjA5LjUzMzI0MzA1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjkwMTA4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlkZW8gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHZpZGVvIGRyaXZlciBhbmQgaW1tZWRpYXRlbHkgc2VlIHNvbWUga2V5IGRlcGVuZGVuY2llcyBhdCBwbGF5LiBUaGUgXCJ2aXZpZFwiIGRyaXZlciwgaW4gcGFydGljdWxhciwgaGluZ2VzIG9uIGBWSURFT19ERVZgIGFuZCBgSEFTX0RNQWAuIFRoYXQncyBub3QgdW5leHBlY3RlZDsgYFZJREVPX0RFVmAgaXMgcHJldHR5IGZ1bmRhbWVudGFsIGZvciB2aWRlbyBkZXZpY2VzLCBhbmQgRE1BIGlzIGNydWNpYWwgZm9yIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyIGluIG1vc3Qgb2YgdGhlc2UgYXBwbGljYXRpb25zLlxuXG5Ob3csIGBWSURFT19ERVZgIGl0c2VsZiBpc24ndCBhIGZyZWViaWUuIEl0J3MgZGVwZW5kZW50IG9uIGBNRURJQV9TVVBQT1JUYC4gTWFrZXMgc2Vuc2UsIHRoZSBiYXNlIG1lZGlhIGluZnJhc3RydWN0dXJlIGhhcyB0byBiZSB0aGVyZSBmb3IgYW55dGhpbmcgdmlkZW8gcmVsYXRlZCB0byB3b3JrLlxuXG5CdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCBtZSBqdXN0IHF1aWNrbHkgZ2xhbmNlIGF0IGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBtYWtlIHN1cmUgaXQgaXMgaW4gcGxhY2U7IGl0IGlzIHJlbGV2YW50IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyJ3MgcmVxdWVzdCwgYW5kIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGNvbnNpZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTY4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MTMuMjIzMzU0Mzg3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk3MTYyNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzoxMy4yNjgzMzIyNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3ODgwNzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQVBJIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCBkZWZpbml0aW9uLi4uIGJ1dCBob2xkIG9uIGEgc2Vjb25kLiBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIGl0J3Mgbm90IHdoZXJlIEkgaW5pdGlhbGx5IGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGNvbnN0YW50LCBlc3BlY2lhbGx5IHdpdGggYW4gQVBJLXJlbGF0ZWQgbmFtZSwgY291bGQgZWFzaWx5IGJlIGFic3RyYWN0ZWQgb3V0IGFuZCBkZWZpbmVkIGluIGEgY29tcGxldGVseSBkaWZmZXJlbnQgbW9kdWxlIG9yIGhlYWRlciBmaWxlIHRoYW4gSSdtIGN1cnJlbnRseSBsb29raW5nIGF0LiBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2YgbXkgc2VhcmNoLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwcm9qZWN0J3MgaW5jbHVkZSBwYXRocyBhbmQgbG9vayBmb3IgYSBtb3JlIGRlZGljYXRlZCBBUEktcmVsYXRlZCBoZWFkZXIuIEl0J3MgYSBjb21tb24gcGF0dGVybiB0byBrZWVwIEFQSS1zcGVjaWZpYyBkZWZpbml0aW9ucyBzZXBhcmF0ZSBmb3IgY2xhcml0eSwgbWFpbnRhaW5hYmlsaXR5LCBhbmQgdmVyc2lvbmluZyBjb250cm9sLiBMZXQncyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkgaGF2ZSB0byBjaGFuZ2UgbXkgc2VhcmNoIHRvIGJlIG1vcmUgc3lzdGVtaWMgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MTguNDQ3MTQyNjg2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQxMDY4NDkxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjIwLjE4ODIxNjg2N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg0MzY3OTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEZWNpcGhlcmluZyB0aGUgTWVkaWEgQ29udHJvbGxlciBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIHVzaW5nIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBnYXRlIHNvbWUgZnVuY3Rpb25hbGl0eS4gQnV0LCBubywgdGhhdCdzIG5vdCBpdC4gVGhlIHBhdGNoIGNsZWFybHkgcmVsaWVzIG9uIGFuIGAjaWZkZWYgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGNvbnN0cnVjdC4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiB0aGUgY29tcGlsYXRpb24gb2YgYG1jLXJlcXVlc3QuY2AgZGVwZW5kcyBvbi4gV2hhdCdzIHRoZSB0cmlnZ2VyaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG1hY3JvIHdhc24ndCByaWdodCwgc28gbm93IEkgbmVlZCB0byBiYWNrdHJhY2sgYW5kIHRyYWNlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgdGhpcyBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MjQuMDcyNTg4Mzk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODEyNDk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYy1yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcXHQ6PSBtYy1kZXZpY2UubyBtYy1kZXZub2RlLm8gbWMtZW50aXR5Lm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGU6NDpcXHQgICBtYy1yZXF1ZXN0Lm9cXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjI0LjEyMDcyMDQxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc4NDc2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVgLiBUaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpczogKndoYXQgYWN0dWFsbHkgZGljdGF0ZXMgaXRzIGNvbXBpbGF0aW9uPyogSXQncyBub3QgdXN1YWxseSBhIHN0YW5kYWxvbmUgdGFyZ2V0LiBJdCdzIGFsbW9zdCBhbHdheXMgYnVpbHQgYXMgcGFydCBvZiBhIGxhcmdlciBtdWx0aW1lZGlhIG9yIGtlcm5lbCBtb2R1bGUgYnVpbGQgcHJvY2Vzcy4gU28sIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSdtIHRoaW5raW5nLCBpcyBpdCB0aWVkIHRvIHRoZSBvdmVyYWxsIGBLY29uZmlnYCBmb3IgdGhlIG1lZGlhIHN1YnN5c3RlbSwgb3Igc3BlY2lmaWMgZmVhdHVyZXMgd2l0aGluPyBBcmUgdGhlcmUgYW55IHRvcC1sZXZlbCBgTWFrZWZpbGVgcyB0aGF0IGluY2x1ZGUgaXQgZGlyZWN0bHk/IE9yLCBpcyBpdCBpbmNsdWRlZCB2aWEgc29tZSBnZW5lcmljIHJ1bGVzIG9yIHZhcmlhYmxlcywgbGlrZSBgb2JqLSQoQ09ORklHX1NPTUVUSElORylgP1xuXG5JJ20gcHJvYmFibHkgZ29pbmcgdG8gbmVlZCB0byBsb29rIGF0IHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMgdW5kZXIgYGRyaXZlcnMvbWVkaWFgLCBhbmQgbWF5YmUgZXZlbiBoaWdoZXIgdXAgaW4gdGhlIGtlcm5lbCdzIHNvdXJjZSB0cmVlLCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgYE1ha2VmaWxlYC4gSSdsbCBoYXZlIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBgQ09ORklHX2AgZmxhZ3MgYW5kIHRoZWlyIGRlcGVuZGVuY2llcywgYXMgd2VsbCBhcyBhbnkgb3RoZXIgaW5kaXJlY3QgbWVjaGFuaXNtcy4gVGhlcmUgYXJlIGRlZmluaXRlbHkgYSBsb3Qgb2YgYW5nbGVzIHRvIGNvbnNpZGVyLiBUaGUgd2hvbGUgcG9pbnQgaXMsIHdoYXQgdHJpZ2dlcnMgaXQgdG8gZ2V0IGJ1aWx0LCBhbmQgaG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MjguMTk5MjAwMDkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjEwNjM2NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL01ha2VmaWxlPTE2PWlmZXEgKCQoQ09ORklHX01FRElBX0NPTlRST0xMRVIpLHkpXFxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZToxNzogIG9iai0kKENPTkZJR19NRURJQV9TVVBQT1JUKSArPSBtYy9cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTE4LWVuZGlmXFxuLS1cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19DRUNfQ09SRSkgKz0gY2VjL1xcbi0tXFxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZS0zMS1cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlOjMyOm9iai15ICs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTMzLW9iai0kKENPTkZJR19WSURFT19ERVYpICs9IHJhZGlvL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzoyOC41NjAyNzA2MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1NjA1NDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIGNvbnRleHQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBNZWRpYSBTdXBwb3J0KipcblxuQWxyaWdodCwgbGV0IG1lIHF1aWNrbHkgc3VtbWFyaXplIHdoYXQgSSdtIGxvb2tpbmcgYXQuIEZpcnN0LCB0byBnZXQgYW55IG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBnb2luZywgSSBrbm93IEknbGwgbmVlZCBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGFuZCBgQ09ORklHX01FRElBX1NVUFBPUlRgIGVuYWJsZWQuIFRoZXkncmUgcHJldHR5IG11Y2ggZnVuZGFtZW50YWwgdG8gdGhlIHdob2xlIG1lZGlhIHN1YnN5c3RlbS4gQW5kIHRoZW4sIHNwZWNpZmljYWxseSBmb3IgdGhlIHZpdmlkIGRyaXZlciwgYENPTkZJR19WSURFT19WSVZJRGAgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIG1ha2VzIHNlbnNlIHNpbmNlIHRoYXQgZW5hYmxlcyB0aGUgZHJpdmVyIGl0c2VsZi4gQWxzbywgbmF0dXJhbGx5LCBgQ09ORklHX1ZJREVPX0RFVmAgaXMgcmVxdWlyZWQgYmVjYXVzZSwgd2VsbCwgdml2aWQgaXMgYSB2aWRlbyBkZXZpY2UhIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGFib3V0IGBDT05GSUdfTUVESUFfVEVTVF9TVVBQT1JUYD8gVGhlIG5vdGVzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBuZWVkZWQgZm9yIHRlc3QgZHJpdmVycywgYnV0IHRvIGJlIHN1cmUsIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9gIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIEdvdHRhIGJlIHByZWNpc2UgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg4MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjM1LjMxNjMyNzM4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1NjIwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidml2aWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX1ZJREVPX1ZJTUMpICs9IHZpbWMvXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1ZJREVPX1ZJVklEKSArPSB2aXZpZC9cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfVklERU9fVklTTCkgKz0gdmlzbC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MzUuMzYzODkzOTM2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjY1NDE2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVklWSUQgRHJpdmVyIEJ1aWxkIGFuZCBSZXNvdXJjZSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTWFrZWZpbGVgIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVyc2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGdldHMgaW5jbHVkZWQgdW5jb25kaXRpb25hbGx5LiBJbnRlcmVzdGluZy4gV2UgaGF2ZSBgb2JqLXkgKz0gY29tbW9uLyBwbGF0Zm9ybS8gcGNpLyB1c2IvIG1tYy8gZmlyZXdpcmUvIHNwaS8gdGVzdC1kcml2ZXJzL2AsIG1lYW5pbmcgdGhhdCBhcyBsb25nIGFzIHRoZSBtb2R1bGUgaXMgYmVpbmcgYnVpbHQgYXQgYWxsLCB0aGlzIHdob2xlIHRyZWUgaXMgaW5jbHVkZWQuIFRoYXQgbWVhbnMgZW5hYmxpbmcgYENPTkZJR19WSURFT19WSVZJRGAgYWxvbmUgaXMgc3VmZmljaWVudCB0byBwdWxsIGV2ZXJ5dGhpbmcgaW4uIEdvdCBpdC5cblxuTm93LCBteSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9mIHJlc291cmNlcyB3aXRoaW4gdGhpcyBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgdml2aWQtY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIGB2aXZpZF9yZXFfYWxsb2NgIGFuZCBgdml2aWRfcmVxX2ZyZWVgLiBUaG9zZSBhcmUga2V5IHN5bWJvbHMuIFdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHJlcXVlc3QgaGFuZGxpbmcgaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIC0gYW5kIHRoYXQgbWFrZXMgbWUgdGhpbmsgb2YgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2AuXG5cbkFoYSwgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaXMgYHN0YXRpY2AuIFRoYXTigJlzIGdvb2QgdG8ga25vdy4gVGhlIHNpZ25hdHVyZSBpcyBgc3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIHNlZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGlzIGV4cG9ydGVkISBUaGF04oCZcyB1bmV4cGVjdGVkLiBJdCdzIGRlZmluZWQgYXMgYHZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlgLiBPa2F5LCBsZXQgbWUgcGl2b3Qgb3ZlciB0byBgbWMtcmVxdWVzdC5jYCBhZ2FpbiwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB1c2FnZSBvZiBgbWVkaWFfcmVxdWVzdF9wdXRgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlZmNvdW50aW5nIGFuZCByZXNvdXJjZSBsaWZlY3ljbGUgYXJlIG1hbmFnZWQgd2l0aCB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjQ1LjYyOTMxMzE0MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMTk2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVkaWFfcmVxdWVzdF9wdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODAtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgyLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo4NTpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X3B1dCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODYtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTAtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy05Mi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTEyMT1zdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsX3F1ZXVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xNDgtXFx0XFx0XFx0cmVxLVxcdTAwM2VkZWJ1Z19zdHIsIG1lZGlhX3JlcXVlc3Rfc3RhdGVfc3RyKHN0YXRlKSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWRldi1cXHUwMDNlcmVxX3F1ZXVlX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cXHRcXHRcXHRyZXEtXFx1MDAzZWRlYnVnX3N0ciwgcmV0KTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoxODQ6XFx0XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xODUtXFx0fVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NDM1PXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfdW5iaW5kKHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc1LVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQ4MD12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2NvbXBsZXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAxLVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTUwNj12b2lkIG1lZGlhX3JlcXVlc3RfbWFudWFsX2NvbXBsZXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzYtXFx0aWYgKGNvbXBsZXRlZClcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XFx0XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Mzo0NS42OTg0Mzc1MjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MzI2ODIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRm9jdXMgUG9pbnRzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBiYXNlZCBvbiB3aGF0IEkndmUgYmVlbiBjb25zaWRlcmluZyBsYXRlbHksIHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBzb2xpZCBhbmNob3IgcG9pbnQgZm9yIGRpdmluZyBkZWVwZXIgaW50byB0aGlzIGFyZWEuIEl0J3Mgb2Z0ZW4gYSBrZXkgZnVuY3Rpb24gd2hlbiB0aGlua2luZyBhYm91dCBtZWRpYSByZXF1ZXN0cy4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgc29tZSBvZiBteSBpbnZlc3RpZ2F0aW9uIHRoZXJlLiBBbHNvLCBkb24ndCBmb3JnZXQgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgbGlrZWx5IHJlbGV2YW50LCBhbmQgbWF5IHBsYXkgYW4gaW1wb3J0YW50IHJvbGUsIHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHJlcXVlc3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjczLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6NDguNzcxNzA4NTQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTI4Nz1FWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg4LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI5MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjQ4LjgxNjc4MTM2MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzc3NTgxNDc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVml2aWQgQ29yZSdzIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYHZpdmlkLWNvcmUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBhcmUgc3RhdGljLCB3aGljaCBsaW1pdHMgdGhlaXIgdXNlIGFzIGZvY3VzIHN5bWJvbHMsIHVuZm9ydHVuYXRlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFuZCBob3cgdGhleSdyZSB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmV4cG9zZWQqIGZyb20gdGhpcyBtb2R1bGUuXG5cbkxldCdzIHNlZeKApiBJIGtub3cgdGhhdCBgdml2aWRfcmVxX2FsbG9jYCBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCwgd2hpY2ggaW4gdHVybiBjYWxscyBpdCB2aWEgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9hbGxvY2AuIFNpbWlsYXJseSwgYHZpdmlkX3JlcV9mcmVlYCBnZXRzIGNhbGxlZCBieSBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBhZnRlciBnb2luZyB0aHJvdWdoIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZWAuIFNvLCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgc2VlbSBsaWtlIG15IGtleSBlbnRyeSBwb2ludHMgYmVjYXVzZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGNhbGxzIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgLiBHb29kLiBUaGF0IGdldHMgbWUgd2hlcmUgSSBuZWVkIHRvIGJlLlxuXG5CdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4gSSBhbHNvIHNlZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgYGlvY3RsYCBmdW5jdGlvbnMgbGlrZSBgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZWAgYW5kIGBtZWRpYV9yZXF1ZXN0X2lvY3RsYCB0aGF0IGNvdWxkIGFsc28gYmUgZW50cnkgcG9pbnRzLiBUaGUgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSByZWxldmFudCBpcyBgbWVkaWFfcmVxdWVzdF9jbG9zZWAuIExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjEyLjU5MjU5ODEyOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Mzk3NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVkaWFfcmVxdWVzdF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz05NT1zdGF0aWMgX19wb2xsX3QgbWVkaWFfcmVxdWVzdF9wb2xsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjEyMTpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsX3F1ZXVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIyLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4OS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoxOTA6c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9yZWluaXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjI3LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIyODpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIyOS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNC1cXHRjYXNlIE1FRElBX1JFUVVFU1RfSU9DX1FVRVVFOlxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIzNTpcXHRcXHRyZXR1cm4gbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNi1cXHRjYXNlIE1FRElBX1JFUVVFU1RfSU9DX1JFSU5JVDpcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyMzc6XFx0XFx0cmV0dXJuIG1lZGlhX3JlcXVlc3RfaW9jdGxfcmVpbml0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjM4LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0yNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVxdWVzdF9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjQ1LVxcdC5wb2xsID0gbWVkaWFfcmVxdWVzdF9wb2xsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0NjpcXHQudW5sb2NrZWRfaW9jdGwgPSBtZWRpYV9yZXF1ZXN0X2lvY3RsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI0Ny0jaWZkZWYgQ09ORklHX0NPTVBBVFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0ODpcXHQuY29tcGF0X2lvY3RsID0gbWVkaWFfcmVxdWVzdF9pb2N0bCxcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDktI2VuZGlmIC8qIENPTkZJR19DT01QQVQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MTIuNjcxMjQ5OTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDM4Mzg2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHBocmFzZWQgYXMgYSBzdW1tYXJ5IG9mIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludGVybmFsIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZm9yIG1lZGlhLXJlbGF0ZWQgcmVxdWVzdHMuIFJpZ2h0IG5vdywgSSdtIHplcm9pbmcgaW4gb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgc2VlbXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJ3ZlIGdvdCwgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgZGVmaW5pdGVseSAqY2FsbGVkKiBmcm9tIHdpdGhpbiBgbWVkaWFfZGV2aWNlX3JlcXVlc3RfYWxsb2NgLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIHBvaW50IEkgbmVlZCB0byBoYXZlIGxvY2tlZCBkb3duLiBUaGlzIGNsYXJpZmllcyB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gYXQgd29yayBoZXJlIGFuZCBpbmZvcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRyb2wgZmxvdy4gTm93IEkgY2FuIG1vdmUgb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgcm9sZSBvZiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCByZXF1ZXN0IGxpZmVjeWNsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoxNi44NzUwOTA3MjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDIzNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz0yMzA9c3RhdGljIGxvbmcgbWVkaWFfZGV2aWNlX2dldF90b3BvbG9neShzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTM3Mi1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjM3MzpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy0zNzQte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz00MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9pb2N0bF9pbmZvIGlvY3RsX2luZm9bXSA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNDMwLVxcdE1FRElBX0lPQyhHX1RPUE9MT0dZLCBtZWRpYV9kZXZpY2VfZ2V0X3RvcG9sb2d5LCBNRURJQV9JT0NfRkxfR1JBUEhfTVVURVgpLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NDMxOlxcdE1FRElBX0lPQyhSRVFVRVNUX0FMTE9DLCBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYywgMCksXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzItfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MTYuOTIwMTE4Mjg0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzA0ODM3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBEZXZpY2UgUmVxdWVzdCBBbGxvY2F0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYCBmdW5jdGlvbi4gSXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgdGhhdCBgTUVESUFfSU9DX1JFUVVFU1RfQUxMT0NgIGlvY3RsLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBqdXN0IHJvdXRpbmcgdGhlIGlvY3RsIGNhbGwuIE5vdywgbGV0J3Mgc2VlIGhvdyB0aGF0IHJlcXVlc3QgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXBwZW5zLi4uIEFoLCBoZXJlIGl0IGlzLCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgY2FsbGVkIHdpdGhpbiB0aGF0IGhhbmRsZXIuIEdvb2QsIG5vdyBJIGhhdmUgYSBsZWFkIG9uIHdoZXJlIHRoZSBhbGxvY2F0aW9uIGxvZ2ljIGlzIGxvY2F0ZWQuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGludG8gYG1lZGlhX3JlcXVlc3RfYWxsb2NgIHNwZWNpZmljYWxseSwgbGV0J3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZ2V0IGEgYnJvYWRlciB2aWV3LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgbWVkaWFfZGV2aWNlX2lvY3RsYCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBpb2N0bCBoYW5kbGluZyB3aXRoaW4gdGhlIG1lZGlhIGRldmljZSBmcmFtZXdvcmsuIFRoYXQgd2lsbCBoZWxwIG1lIGdyYXNwIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGluIHRoZSB3ZWVkcy4gQ29udGV4dCBpcyBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoyMC41NTA2MDQ5MThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX2RldmljZV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfaW9jdGxfaW5mbyBpb2N0bF9pbmZvW10gPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzMy1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjQzNDpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzUtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgX19hcmcpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTUxOD1zdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy01MzMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjUzNDpcXHRcXHRyZXR1cm4gbWVkaWFfZGV2aWNlX2lvY3RsKGZpbHAsIGNtZCwgYXJnKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTUzNS1cXHR9XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTU0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2ZpbGVfb3BlcmF0aW9ucyBtZWRpYV9kZXZpY2VfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQzLVxcdC5vcGVuID0gbWVkaWFfZGV2aWNlX29wZW4sXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYzo1NDQ6XFx0LmlvY3RsID0gbWVkaWFfZGV2aWNlX2lvY3RsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQ1LSNpZmRlZiBDT05GSUdfQ09NUEFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjIwLjU5NTM5MTQ2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjczMzk1NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBWaXZpZC1Db3JlLmMgZm9yIFJlcXVlc3QgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgIGFyZSBleHBvcnRlZCBhbmQgbm90IHN0YXRpYyB3aXRoaW4gYHZpdmlkLWNvcmUuY2AuIEV4Y2VsbGVudCwgdGhvc2UgYXJlIHByZWNpc2VseSB0aGUga2luZCBvZiBzeW1ib2xzIEknbSBsb29raW5nIGZvciDigJMgdGhleSdyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyByZXF1ZXN0cyBhcmUgY3JlYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgcmVxdWVzdCBsaWZlY3ljbGUuXG5cbk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYHZpdmlkLWNvcmUuY2AgdGhhdCBhcmUgc29tZWhvdyBpbnZvbHZlZCB3aXRoIHJlcXVlc3QgbWFuYWdlbWVudC4gSSdtIHRoaW5raW5nIEkgbWlnaHQgZmluZCBzb21lIGludGVybWVkaWF0ZSBmdW5jdGlvbnMsIHJlbGF0ZWQgaGVscGVyIGZ1bmN0aW9ucywgb3IgcG90ZW50aWFsbHkgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGVycm9yIHN0YXRlcyBjb25uZWN0ZWQgdG8gcmVxdWVzdHMuIExldCdzIHNlZSB3aGF0IGVsc2UgYHZpdmlkLWNvcmUuY2Agb2ZmZXJzIGluIHRoaXMgcmVnYXJkLiBUaGlzIGNvdWxkIHJldmVhbCBvdGhlciB1c2VmdWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjI0LjI2ODc4OTI4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNDgzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidml2aWRfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9ODUyPXN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODcxLSNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo4NzI6c3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODczLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04ODQtXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjg4NTpzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04ODYte1xcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5Mi1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6ODkzOnN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5NC17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9OTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNTpcXHQucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo5MDY6XFx0LnJlcV9mcmVlID0gdml2aWRfcmVxX2ZyZWUsXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNzpcXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDgtXFx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoyNC4zMTMwNDUzMDFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg3NTYyMDEyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBNZWRpYSBSZXF1ZXN0IEFsbG9jYXRpb24qKlxuXG5SaWdodCwgdGhleSdyZSBhbGwgc3RhdGljLCBhcmVuJ3QgdGhleT8gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4uLmJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHdoYXQgSSdtIGxvb2tpbmcgYXQuIE9rYXksICpgbWVkaWFfcmVxdWVzdF9hbGxvY2AqIGFuZCAqYG1lZGlhX3JlcXVlc3RfcHV0YCrigJR0aG9zZSBhcmUgbXkgZm9jYWwgcG9pbnRzIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBtZWRpYSByZXF1ZXN0cyBhcmUgYWxsb2NhdGVkIGFuZCByZWxlYXNlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaG9zZSBhcmUgdGhlIGtleSBvcGVyYXRpb25zLCBzbyB0aGV5J2xsIHByb3ZpZGUgdGhlIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudC5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGNoZWNrIG91dCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBtYy1yZXF1ZXN0LmNgLiBMZXQncyBzZWUgaG93IGFsbG9jYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4uLiB3aGF0IHRoZSBwcmVjb25kaXRpb25zIGFyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBob3cgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkLiBJJ20gbG9va2luZyBmb3IgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjM0LjE4ODY2NzE3MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc3NDA4NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mjg5OmludCBtZWRpYV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCAqYWxsb2NfZmQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MzQuNTY2MDgyNzQyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzQwMTYwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gYG1jLXJlcXVlc3QuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHJlcXVlc3QgaGFuZGxpbmcgaXMgd29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoYXQuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlJ3JlIGRvaW5nIHRoZSBQVVQgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdywgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbWVkaWEgY2FjaGUgaXRzZWxmLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkIGJlZm9yZSB3ZSBldmVuICp0aGluayogYWJvdXQgb3B0aW1pemluZyBhbnl0aGluZy4gQWxyaWdodCwgbGV0J3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0NjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDo1Ny4zMDYyNDU4NzhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzcwNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTYxPXN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjgxOnZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04Mi17XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODU6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9wdXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTg3PXN0YXRpYyBpbnQgbWVkaWFfcmVxdWVzdF9jbG9zZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjkxOlxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTQ4LVxcdFxcdFxcdHJlcS1cXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjE0OTpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE1MC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1kZXYtXFx1MDAzZXJlcV9xdWV1ZV9tdXRleCk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xODMtXFx0XFx0XFx0cmVxLVxcdTAwM2VkZWJ1Z19zdHIsIHJldCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3NS1cXHRpZiAoY29tcGxldGVkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3NjpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3Ny19XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMS1cXHRpZiAoY29tcGxldGVkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjUwMjpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMy19XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTM2LVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTM3OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTM4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6NTcuMzc1MDIwOTUxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NTg5ODI2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlJ3MgRW50cnkgUG9pbnRzIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgYW5kIGl0IHNlZW1zIGxpa2UgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuIEkgc2hvdWxkIGNoZWNrIHdoYXQgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LlxuXG5MZXQgbWUgc2Vl4oCmIHRoZXJlJ3MgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCwgYENPTkZJR19WSURFT19WSVZJRGAsIGBDT05GSUdfTUVESUFfU1VQUE9SVGAsIGFuZCBgQ09ORklHX1ZJREVPX0RFVmAuIFJpZ2h0LCBJIHJlbWVtYmVyIGBDT05GSUdfTUVESUFfU1VQUE9SVGAgaXMgYSBtZW51Y29uZmlnLCB3aGljaCBtZWFucyBpdCB0cmFuc2xhdGVzIHRvIGp1c3QgYE1FRElBX1NVUFBPUlRgIGR1cmluZyBldmFsdWF0aW9uLiBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGlzIGp1c3QgYSBib29sZWFuLiBgQ09ORklHX1ZJREVPX1ZJVklEYCBhbmQgYENPTkZJR19WSURFT19ERVZgIGFyZSB0cmlzdGF0ZXMuXG5cbk5vdywgd2hhdCBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVklERU9fVklWSURgPyBMZXQncyBkZWx2ZSBpbnRvIHRoYXQuIEhtbSwgaXQgZGVwZW5kcyBvbiBgVklERU9fREVWIFx1MDAyNlx1MDAyNiAhU1BBUkMzMiBcdTAwMjZcdTAwMjYgIVNQQVJDNjRgLCBhbmQgYWxzbyBgSEFTX0RNQWAuIEl0IGFsc28gc2VsZWN0cyBhIGJ1bmNoIG9mIG90aGVyIG9wdGlvbnM6IGBGT05UX1NVUFBPUlRgLCBgRk9OVF84eDE2YCwgYEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEYCBpZiBgRkJfQ09SRWAsIGBWSURFT0JVRjJfVk1BTExPQ2AsIGBWSURFT0JVRjJfRE1BX0NPTlRJR2AsIGBWSURFT19WNEwyX1RQR2AsIGFuZOKApiBob2xkIG9uIGEgbWludXRl4oCmIGl0IHNlbGVjdHMgYE1FRElBX0NPTlRST0xMRVJgIGFuZCBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWA/IFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHNlbGVjdGVkIG9wdGlvbnMgYXJlIGNvbnNpc3RlbnQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ0NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NTowNC4zMzQwMDc4OTRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTYyMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNRURJQV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yPWNvbmZpZyBWSURFT19WSVZJRFxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVklERU9fVjRMMl9UUEdcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjExOlxcdHNlbGVjdCBNRURJQV9DT05UUk9MTEVSXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjA0LjM4MDE5NjM5OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDA1NDI5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgaXQncyB0aGUgYmVkcm9jayBvZiBob3cgd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCBtZWRpYSBjb250cm9sIGluIHRoaXMgc2V0dXAsIG9yIGF0IGxlYXN0IGhvdyB3ZSdyZSAqcmVxdWVzdGluZyogaXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgaG93IGl0J3MgZGVzaWduZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBtZWRpYSB0eXBlcyBhbmQgY29udHJvbCBzdXJmYWNlcy4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgd2UncmUgaGFuZGxpbmcgdGhlIHJlcXVlc3QgZmxvdywgcGVybWlzc2lvbiBtb2RlbHMgKGlmIGFueSksIGFuZCB0aGUgbWVjaGFuaXNtcyBmb3IgY29tbXVuaWNhdGluZyB0aGVzZSByZXF1ZXN0cyBhY3Jvc3MgcHJvY2Vzc2VzIG9yIHdpdGhpbiBhIHNpbmdsZSBhcHAuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzIHRvIGNoZWNrIGZvciB3aGV0aGVyIGFueSBlZGdlIGNhc2VzIGFyZSBjb25zaWRlcmVkLiBXaGF0IGFyZSB0aGUgZmFsbGJhY2sgcHJvY2VkdXJlcz8gQXJlIHRoZSByZXF1ZXN0J3MgcGFyYW1ldGVycyBjaGVja2VkIGZvciB2YWxpZGl0eT8gVGhpcyBpcyB0aGUgY29yZSBpbnRlcmZhY2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdCBpbXBsaWNpdGx5IGJlZm9yZSBtb3Zpbmcgb24uIFdoYXQgZG8gKkkqIGtub3csIGZyb20gbWVtb3J5LCBhYm91dCB0aGlzIEFQST8gRG8gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNvZGUgaXRzZWxmLCBvciBtYXliZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgcmVsYXRlZCBhcmNoaXRlY3R1cmU/IExldCdzIGJlZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI1MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjExLjc4NTYyODczNVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MDE1NzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjExLjgzMzAzNzI4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyNTIwNTAxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIERpc2NyZXBhbmN5KipcblxuSG1tLCB0aGlzIGlzIGN1cmlvdXMuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCBvcHRpb24gc2hvdWxkIGJlIGVuYWJsZWQgYnkgYFZJREVPX1ZJVklEYCwgYnV0IGl0IGFwcGVhcnMgdGhhdCdzIG5vdCB0aGUgY2FzZS4gVGhpcyBpcyB1bmV4cGVjdGVkOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIGxpa2VseSBzdGFydGluZyB3aXRoIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIG9yIHBvc3NpYmx5IGRpZ2dpbmcgZGVlcGVyIGludG8gYGRyaXZlcnMvbWVkaWEvbWMvS2NvbmZpZ2AuIEknbGwgdHJhY2UgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gb3B0aW9ucywgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBhdGggZm9yIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NToyMS4wODUwOTAwNzNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODUwODIxOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjIxLjIwMzYwNzA0MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjEzODYyNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIFNoZW5hbmlnYW5zOiBJcyBUaGlzIFJlYWw/KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHNlZWluZyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAuLi4gYW5kIHRoYXQncyAqbGlzdGVkKiBhcyBhIGNvbmZpZyBvcHRpb24/IEluIGBkcml2ZXJzL21lZGlhL21jL0tjb25maWdgPyBTZXJpb3VzbHk/IEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdC4gVGhhdCBzdWdnZXN0cyBzb21ldGhpbmcgcG90ZW50aWFsbHkgbmV3IG9yLCBhdCBsZWFzdCwgc29tZXRoaW5nIEkgaGF2ZW4ndCBkaXJlY3RseSBlbmNvdW50ZXJlZCBpbiB0aGlzIGNvbnRleHQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscyBpbiB0aGUgbWVkaWEgY29udHJvbGxlciBkcml2ZXIgc3BhY2UuIElzIHRoaXMgYSBuZXcgQVBJIHJlcXVlc3QsIG9yIHNvbWV0aGluZyB0aWVkIHRvIHRoZSBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIGNvbmZpZ3VyYXRpb24/IFRoaXMgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVyaXRzICppbW1lZGlhdGUqIGludmVzdGlnYXRpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIFgsIFksIG9yIFogaW4gdGhlIGN1cnJlbnQgcHJvamVjdCwgZGVwZW5kaW5nIG9uIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGRyaXZlciBpbnRlcmZhY2VzIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBJJ3ZlIGdvdCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGF0IEtjb25maWcgZmlsZS4gTGV0J3Mgc2VlIHdoYXQga2luZCBvZiBjb250cm9sIGl0IGdpdmVzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg0NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjAzLjM0MjIzMzU2NloiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNDU0NTgxMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NjowNS40NzY3OTA4MjdaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwNjMzNDY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgbWVkaWEgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBSZW5hbWVkIG9yIFJlbW92ZWQgQVBJIENhbGwqKlxuXG5SaWdodCwgc28gaXQgbG9va3MgbGlrZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgaGFzIGVpdGhlciBiZWVuIGRlcHJlY2F0ZWQgb3IgaGFkIGl0cyBuYW1lIGNoYW5nZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLiBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL21lZGlhL21jL2AuIFRoZSBgbWMtcmVxdWVzdC5jYCBmaWxlIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb3IgZGVmaW5pdGlvbiBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhhdCBBUEksIGFuZCBjaGVja2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIGlkZWEgaW4gdGhlc2Ugc2l0dWF0aW9ucy4gSXQncyBsaWtlbHkgdGhhdCBhIGNoYW5nZSB0byB0aGUgYnVpbGQgcHJvY2VzcyBvciBtb2R1bGUgaW5jbHVzaW9uIG1pZ2h0IGJlIHRoZSBjdWxwcml0LiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0J3MgdHJ1bHkgZ29uZSwgb3IgbWVyZWx5IHJlbmFtZWQsIGFuZCB0aGVuIHdoYXQgdGhlIHJlcGxhY2VtZW50IChpZiBhbnkpIGlzLiBUaGlzIGlzIGFsbCBzdGFuZGFyZCBwcm9jZWR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTI4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6MjIuNTQwMTQxNTIxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzczNTAyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYy1yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcXHQ6PSBtYy1kZXZpY2UubyBtYy1kZXZub2RlLm8gbWMtZW50aXR5Lm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGU6NDpcXHQgICBtYy1yZXF1ZXN0Lm9cXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjIyLjYyMzg5MjA1MloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzI3OTMxNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTG9naWMgZm9yIGBtYy1yZXF1ZXN0LmNgKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBtYy1yZXF1ZXN0LmNgIGlzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBpZiBgbWNgIGlzIGNvbXBpbGVkLiBBbmQgYG1jYCBpdHNlbGYgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGlzIGVuYWJsZWQuIFRoZXJlZm9yZSwgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBzaG91bGQgYmUgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IGBtYy1yZXF1ZXN0LmNgIGlzIGNvbXBpbGVkLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgZGVwZW5kZW5jaWVzLiBJIGFsc28gc2VlIHJlZmVyZW5jZXMgdG8gYE1FRElBX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYW5kIGBWSURFT19WSVZJRGAuIEFoLCBidXQgaGVyZSdzIHNvbWV0aGluZyB1c2VmdWw6IGBWSURFT19WSVZJRGAgKnNlbGVjdHMqIGBNRURJQV9DT05UUk9MTEVSYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlcmVmb3JlLCBpZiBgVklERU9fVklWSURgIGlzIGVuYWJsZWQsIHRoZW4gYE1FRElBX0NPTlRST0xMRVJgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCBtZWFucywgdG8gZ2V0IGBtYy1yZXF1ZXN0LmNgIGNvbXBpbGVkLCB0aGUgbWluaW1hbCBhbmQgc3VmZmljaWVudCBjb25maWcgb3B0aW9ucyBJIG5lZWQgYXJlIGBWSURFT19WSVZJRGAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGNhbGxlZC4gT2theSwgaXQgbG9va3MgbGlrZSBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgY2FsbHMgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9hbGxvY2AuIEFuZCBpbiBgdml2aWQtY29yZS5jYCwgYHZpdmlkX21lZGlhX29wc2AgYXNzaWducyBgLnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvY2AsIGFuZCB0aGlzIHN0cnVjdCBpcyBhc3NpZ25lZCB0byBgbWRldi1cdTAwM2VvcHNgLiBUaGF0IGNvbmZpcm1zIGV2ZXJ5dGhpbmcgaXMgY29ycmVjdGx5IGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0NjQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6MzEuMzUxODI2MzAyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4ODAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXZpZF9tZWRpYV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz04OTM9c3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDMtXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNDpzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDUtXFx0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz0xODIzPXN0YXRpYyBpbnQgdml2aWRfY3JlYXRlX2luc3RhbmNlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpbnN0KVxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTQtXFx0bWVkaWFfZGV2aWNlX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlbWRldik7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjE4NTU6XFx0ZGV2LVxcdTAwM2VtZGV2Lm9wcyA9IFxcdTAwMjZ2aXZpZF9tZWRpYV9vcHM7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTYtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjMxLjM5OTUyMjcwN1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1MTU0MDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCBmb3IgTWVkaWEgQ29udHJvbGxlciBBUEkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlLiBUaGUgY29yZSBvZiB0aGlzIGZpeCBpcyBjZW50ZXJlZCBhcm91bmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkuIFRoZSBzb2x1dGlvbiBpbnZvbHZlcyBhIGNyaXRpY2FsIG1vZGlmaWNhdGlvbiB0byB0aGUgcmVxdWVzdCBsaWZlY3ljbGUg4oCTIGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCAqYmVmb3JlKiBjYWxsaW5nIGByZXFfZnJlZWAgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gVGhpcyBraW5kIG9mIGNoYW5nZSBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHRoYXQgY2FuIHF1aWV0bHkgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCB3aGljaCBpcyB3aHkgdGhleSBhcmUgcGF0Y2hpbmcgaXQuXG5cbk5vdywgSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGB2aXZpZC1jb3JlLmNgIGZpbGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLiBUaGUgZ29hbCBvZiB0aGVzZSBjYWxsYmFja3MgaXMgdG8gbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGB2NGwyX2RldmAgb2JqZWN0LiBBZGRpbmcgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHZpdmlkLWNvcmUuY2AgZmlsZSBpcyBpbnRlcmVzdGluZyBhbmQgcG9pbnRzIHRvIGEgZGVlcGVyIGNvbmNlcm4uIFRoYXTigJlzIHByb2JhYmx5IHRoZSByZWFzb24gdGhleSBtZW50aW9uZWQgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgd2l0aCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIEkgY2FuIGVhc2lseSBzZWUgaG93IHRoaXMgYmVjb21lcyByZWFjaGFibGUgaW4gbWFueSBkaWZmZXJlbnQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIHBhdGNoIHRvdWNoZXMgYm90aCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBhbmQgYSB0ZXN0IGRyaXZlciwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgbmV3IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSByb2J1c3QuXG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGVzZSB0d28gc3ltYm9scyBhcyBJIGdvIHRocm91Z2ggdGhpczogYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSdtIGV4cGVjdGluZyB0byBiZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiBgbWMtcmVxdWVzdC5jYC5cblxuRmluYWxseSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBJJ20gbm90aW5nIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uczogYFZJREVPX1ZJVklEYCwgYE1FRElBX0NPTlRST0xMRVJgLCBgTUVESUFfU1VQUE9SVGAsIGFuZCBgVklERU9fREVWYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgd2lsbCBkaXJlY3RseSBpbmZsdWVuY2UgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aC4gSXQncyBpbXBlcmF0aXZlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbWMtcmVxdWVzdC5jYCB0aGF0IGNvdWxkIGFsc28gYmUgaW1wYWN0ZWQuIEJlc3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mzc3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjQyLjU1MTA2NjY2MVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5ODA1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz04MT12b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODU6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9wdXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MjU0PW1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCByZXF1ZXN0X2ZkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg2LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyODc6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9nZXRfYnlfZmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM1OD1tZWRpYV9yZXF1ZXN0X29iamVjdF9maW5kKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zNzktfVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjM4MDpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9maW5kKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zODEtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzgyPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzg1LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzozODY6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zODctXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mzg4PXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfaW5pdChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5Ni19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mzk3OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2luaXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5OC1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0zOTk9aW50IG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2JpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzMi19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDMzOkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2JpbmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzNC1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00MzU9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzctfVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3ODpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3OS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMy19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTA0OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2NvbXBsZXRlKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDUtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NTA2PXZvaWQgbWVkaWFfcmVxdWVzdF9tYW51YWxfY29tcGxldGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzOC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTM5OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfbWFudWFsX2NvbXBsZXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NDIuNTk3MDUzMzA2WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk5NTM3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE1lZGlhIFJlcXVlc3QgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIGBtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZGAgc2VlbXMgbGlrZSBhIHNvbGlkIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbiBoZXJlOyBhZnRlciBhbGwsIGl0J3MgYWJvdXQgcmV0cmlldmluZyBhIHJlcXVlc3QsIHdoaWNoIGlzIG9mdGVuIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIE5vdywgSSB0aG91Z2h0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBtaWdodCBiZSBhbm90aGVyIGltcG9ydGFudCBvbmUuLi4gYnV0IGhvbGQgb24sIGlzbid0IHRoYXQgZnVuY3Rpb24gKm5vdCogZXhwb3J0ZWQ/IFRoYXQgZG9lc24ndCBzZWVtIHJpZ2h0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGJlY2F1c2UgdGhhdCB3b3VsZCBjaGFuZ2UgdGhpbmdzIHNpZ25pZmljYW50bHkgaWYgdHJ1ZS4gVGltZSB0byB2ZXJpZnkgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIG9uY2UgbW9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Njo0NS43ODcwMDk1NThaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjE2OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mjg5OmludCBtZWRpYV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCAqYWxsb2NfZmQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NDUuODMyNjMwOTY0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NzIwNjY2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB0aGUgc3ltYm9sIGluIHF1ZXN0aW9uIGlzbid0IGV4cG9ydGVkLCBidXQgaXQgKmlzKiBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24uIEFuZCwgaXQncyBjYWxsZWQgZnJvbSBgbWMtZGV2aWNlLmNgLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFNpbmNlIGl0J3MgY2FsbGVkIGludGVybmFsbHkgd2l0aGluIHRoYXQgY29udGV4dCwgaXQgbWVhbnMgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGlzIGRlZmluaXRlbHkgYXBwcm9wcmlhdGUgZm9yIG91ciBuZWVkcy5cblxuT2theSwgc28gSSdtIGZvY3VzaW5nIGluIG9uIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBhcyB0aGUgY29yZSBzeW1ib2xzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEknbGwgYmUgY29uY2VudHJhdGluZyBvbiBoZXJlLiBOb3csIEknbGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MDMsIk91dHB1dFRva2VucyI6MTcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NTUuODA0NzAwMzY2WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc2MTQ1NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJREVPX1ZJVklEXCIsXG4gICAgXCJNRURJQV9DT05UUk9MTEVSXCIsXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gICAgXCJtZWRpYV9yZXF1ZXN0X3B1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklERU9fVklWSURcIixcbiAgICBcIk1FRElBX0NPTlRST0xMRVJcIixcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIlZJREVPX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgICBcIm1lZGlhX3JlcXVlc3RfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ5IGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCBiZWZvcmUgY2FsbGluZyByZXFfZnJlZS4gSXQgYWxzbyBhZGRzIHJlcV9hbGxvYyBhbmQgcmVxX2ZyZWUgY2FsbGJhY2tzIHRvIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdjRsMl9kZXYgb2JqZWN0LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgbG9naWMgYW5kIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciwgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NTUuODgyMzIyMTM4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4ODM0NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjU1Ljg4MjkyMTMyOFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODE4Nzc0MTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTRhM2U5MWQ0YTBmOTE5YWMwZDIwNTNhZjhjOGM5YzY4YzE1ZjM5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMgYi9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuaW5kZXggMTNlNzc2NDg4MDdjMi4uNTRiYjA4ZTY1Nzc0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG4rKysgYi9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuQEAgLTcxLDExICs3MSwxMSBAQCBzdGF0aWMgdm9pZCBtZWRpYV9yZXF1ZXN0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpXG4gXG4gXHRtZWRpYV9yZXF1ZXN0X2NsZWFuKHJlcSk7XG4gXG4rXHRhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKTtcbiBcdGlmIChtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZSlcbiBcdFx0bWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKTtcbiBcdGVsc2VcbiBcdFx0a2ZyZWUocmVxKTtcbi1cdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIH1cbiBcbiB2b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG4rKysgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbkBAIC04NjksNiArODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXG4gfVxuIFxuICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxuK3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpXG4re1xuK1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xuK1x0c3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcTtcbitcbitcdHJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpO1xuK1x0aWYgKCFyZXEpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0djRsMl9kZXZpY2VfZ2V0KFx1MDAyNmRldi1cdTAwM2V2NGwyX2Rldik7XG4rXHRyZXR1cm4gcmVxO1xuK31cbitcbitzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuK3tcbitcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXHUwMDNlbWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG4rXG4rXHRrZnJlZShyZXEpO1xuK1x0djRsMl9kZXZpY2VfcHV0KFx1MDAyNmRldi1cdTAwM2V2NGwyX2Rldik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG4ge1xuIFx0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbkBAIC04ODEsNiArOTAyLDggQEAgc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9kZXZpY2Vfb3BzIHZpdmlkX21lZGlhX29wcyA9IHtcbitcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXG4rXHQucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSxcbiBcdC5yZXFfdmFsaWRhdGUgPSB2aXZpZF9yZXFfdmFsaWRhdGUsXG4gXHQucmVxX3F1ZXVlID0gdmIyX3JlcXVlc3RfcXVldWUsXG4gfTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjU1Ljg4MjkyMjI1OFoiLCJTZXEiOjU5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODE4NzcxMzM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBNZWRpYSBSZXF1ZXN0IExpZmVjeWNsZSBGaXgqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aXRoaW4gdGhlIG1lZGlhIHJlcXVlc3QgaGFuZGxpbmcuIFRoZSBjaGFuZ2UgaW4gYG1jLXJlcXVlc3QuY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFdlJ3JlIG1vZGlmeWluZyB0aGUgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBjb25jZXJuaW5nIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgYW5kIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gIFRoZSBvcmlnaW5hbCBvcmRlciBwcmVzZW50ZWQgYSBwb3RlbnRpYWwgcHJvYmxlbTogaWYgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9mcmVlYCBmcmVlcyB0aGUgbWVkaWEgZGV2aWNlIChgbWRldmApICpiZWZvcmUqIHRoZSByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQsIHdlIGhhdmUgYSBjbGVhciB1c2UtYWZ0ZXItZnJlZS4gVGhlIHN1YnNlcXVlbnQgYGF0b21pY19kZWNgIHdvdWxkIGJlIG9wZXJhdGluZyBvbiBhIGZyZWVkIG9iamVjdC5cblxuVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgc2hpZnRpbmcgYGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpYCAqYmVmb3JlKiBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoYXTigJlzIHRoZSBjb3JlIGZpeDogZW5zdXJpbmcgdGhlIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAqYmVmb3JlKiBhbnkgcG9zc2libGUgZGVhbGxvY2F0aW9uIG9jY3Vycy4gIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgYnV0IGNydWNpYWwgZml4IHRvIHByZXZlbnQgdGhpcyB2ZXJ5IGNvbW1vbiB0eXBlIG9mIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5Ob3csIHRoZSBgdml2aWQtY29yZS5jYCBjaGFuZ2VzIGFyZSBpbnRlcmVzdGluZywgc3BlY2lmaWNhbGx5IHRoZSBhZGRpdGlvbiBvZiBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYW5hZ2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBgbWVkaWFfcmVxdWVzdGAgc3RydWN0IGFuZCwgY3J1Y2lhbGx5LCB0byBtYWludGFpbiB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuICBUaGUgdXNlIG9mIGBremFsbG9jX29iaigqcmVxKWAgaXMgYSBzbGlnaHQgd3JpbmtsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhhdC4gYGt6YWxsb2Nfb2JqYD8gQWgsIEkgc2VlLCBwcm9iYWJseSBhIG1hY3JvIG9yIGEgdHlwbyAob3IgbWF5YmUgc29tZXRoaW5nIGN1c3RvbSBpbiB2aXZpZCB0aGF0IEkgZG9uJ3QgcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQpLiBCdXQsIGluIGFueSBjYXNlLCB0aGUgaW50ZW50IGlzIGNsZWFyOiB0byBhbGxvY2F0ZSBhbmQgemVybyB0aGUgbWVtb3J5LlxuXG5Fc3NlbnRpYWxseSwgYnkgaW1wbGVtZW50aW5nIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIHdpdGhpbiBgdml2aWRgLCB0aGV5IGFyZSBub3cgY29udHJvbGxpbmcgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiB0aGUgcmVxdWVzdCwgYW5kIGltcG9ydGFudGx5LCBnZXR0aW5nIGFuZCBwdXR0aW5nIGEgcmVmZXJlbmNlIG9uIHRoZSBgdjRsMl9kZXZgIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBUaGlzIHByZXZlbnRzIGB2NGwyX2RldmAgZnJvbSBiZWluZyBmcmVlZCBwcmVtYXR1cmVseSBpZiB0aGVyZSBhcmUgc3RpbGwgcmVxdWVzdHMgb3V0c3RhbmRpbmcuXG5cblRoaXMgaXMgYSB3ZWxsLXVuZGVyc3Rvb2QgcGF0dGVybiBmb3IgbWFuYWdpbmcgb2JqZWN0IGxpZmV0aW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBjYWxsYmFja3MgdGhhdCBtaWdodCByZWxlYXNlIHJlc291cmNlcy4gVGhlIHBhdGNoIGVzc2VudGlhbGx5IHJlc29sdmVzIGFuIG9iamVjdCBsaWZldGltZSBpc3N1ZS5cblxuQ3J1Y2lhbGx5LCB0aGUgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYXNwZWN0IGlzIG9idmlvdXMuIFRoaXMga2luZCBvZiB1c2UtYWZ0ZXItZnJlZSBpcyAqZXhhY3RseSogd2hhdCBLQVNBTiBpcyBidWlsdCB0byBkZXRlY3QuIFRoaXMgcGF0Y2ggZml4ZXMgYSBjbGFzc2ljIHJlZmVyZW5jZSBjb3VudGluZy9VQUYgYnVnLCBzbyBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIGZvciBkZXRlY3RpbmcgdGhpcy5cblxuVGhlcmVmb3JlLCB0aGlzIGZpeCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGRvbWFpbiBvZiBLQVNBTi4gVGhlcmUncyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGZpZWxkcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVuaW5pdGlhbGl6ZWQsIHRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgcHJpb3IgaW5pdGlhbGl6YXRpb24uIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgZnV6emluZyBpbiB0aGlzIGNhc2UuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGlzIGV4cGxpY2l0bHkgemVyb2VkLCBhbmQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBXZSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFuZCBlbnN1cmluZyBhIHJlbGVhc2UgaGFwcGVucyBpbiB0aGUgY29ycmVjdCBvcmRlci4gVGhlIHJvb3QgY2F1c2UgaXMgYSB1c2UtYWZ0ZXItZnJlZSwgcGxhaW4gYW5kIHNpbXBsZSwgYW5kIEtBU0FOIGhhcyBnb3QgaXQgY292ZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMSwiT3V0cHV0VG9rZW5zIjozMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTc6MTQuMDcwNjM5OFoiLCJTZXEiOjYwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 12:50:39 +0000 UTC FinishedAt: 2026-08-18 12:57:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "8d3ae59288f1e7d58d76558a6ee96d533bc5019f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIDEO_VIVID", "MEDIA_CONTROLLER", "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "8d3ae59288f1e7d58d76558a6ee96d533bc5019f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIDEO_VIVID", "MEDIA_CONTROLLER", "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "dcd681b1-ed1e-4484-8a5d-18827cb93702" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "media_request_alloc", "media_request_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGFmdGVyIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgVUFGIGlmIGByZXFfZnJlZWAgZHJvcHBlZCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIG1lZGlhIGRldmljZSwgY2F1c2luZyBgbWRldmAgdG8gYmUgZnJlZWQgYmVmb3JlIHRoZSBgYXRvbWljX2RlY2Agb3BlcmF0aW9uLiBUaGUgcGF0Y2ggcmVvcmRlcnMgdGhlc2Ugb3BlcmF0aW9ucyB0byBwcmV2ZW50IHRoZSBVQUYuIEFkZGl0aW9uYWxseSwgaXQgaW1wbGVtZW50cyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBpbiB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSBgdjRsMl9kZXZgIHJlZmVyZW5jZSBjb3VudC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxuXG5UaGVyZWZvcmUsIHRoaXMgYnVnIGNsYXNzIChVQUYpIGlzIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IEFQSSB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgZGVjcmVtZW50aW5nIHRoZSByZXF1ZXN0IGNvdW50IGJlZm9yZSBjYWxsaW5nIHJlcV9mcmVlLiBJdCBhbHNvIGFkZHMgcmVxX2FsbG9jIGFuZCByZXFfZnJlZSBjYWxsYmFja3MgdG8gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2NGwyX2RldiBvYmplY3QuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbWVkaWEgY29udHJvbGxlciBsb2dpYyBhbmQgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVxdWVzdCBsaWZlY3ljbGUgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTRhM2U5MWQ0YTBmOTE5YWMwZDIwNTNhZjhjOGM5YzY4YzE1ZjM5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiBcbiBcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcbiBcbiYjNDM7XHRhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKTtcbiBcdGlmIChtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZSlcbiBcdFx0bWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKTtcbiBcdGVsc2VcbiBcdFx0a2ZyZWUocmVxKTtcbi1cdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIH1cbiBcbiB2b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbkBAIC04NjksNiAmIzQzOzg2OSwyNyBAQCBzdGF0aWMgdm9pZCB2aXZpZF9kZXZfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIH1cbiBcbiAjaWZkZWYgQ09ORklHX01FRElBX0NPTlRST0xMRVJcbiYjNDM7c3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxO1xuJiM0MztcbiYjNDM7XHRyZXEgPSBremFsbG9jX29iaigqcmVxKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHR2NGwyX2RldmljZV9nZXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmVxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUocmVxKTtcbiYjNDM7XHR2NGwyX2RldmljZV9wdXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIHtcbiBcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXHUwMDNlbWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG5AQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xuJiM0MztcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXG4mIzQzO1x0LnJlcV9mcmVlID0gdml2aWRfcmVxX2ZyZWUsXG4gXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxuIFx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxuIH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAogCW1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTsKIAomIzQzOwlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIAlpZiAobWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZSkKIAkJbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpOwogCWVsc2UKIAkJa2ZyZWUocmVxKTsKLQlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIH0KIAogdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jCmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMKQEAgLTg2OSw2ICYjNDM7ODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB9CiAKICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUgomIzQzO3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7CiYjNDM7CXN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXE7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV9nZXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0MzsJcmV0dXJuIHJlcTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdml2aWRfcmVxX2ZyZWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwomIzQzOwomIzQzOwlrZnJlZShyZXEpOwomIzQzOwl2NGwyX2RldmljZV9wdXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwpAQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0gewomIzQzOwkucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLAomIzQzOwkucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSwKIAkucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLAogCS5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE1lZGlhIENvbnRyb2xsZXIgYW5kIFZJVklEIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IGhhbmRsaW5nIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFZJVklEIHRlc3QgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlOiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBpbiBgbWMtcmVxdWVzdC5jYCBub3cgZGVjcmVtZW50cyBgbWRldi0mZ3Q7bnVtX3JlcXVlc3RzYCAqYmVmb3JlKiBjYWxsaW5nIHRoZSByZXF1ZXN0LXNwZWNpZmljIGZyZWUgZnVuY3Rpb24gKGBtZGV2LSZndDtvcHMtJmd0O3JlcV9mcmVlKHJlcSlgKS4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCB0byBgdml2aWQtY29yZS5jYCBhbmQgaG9va2VkIHRoZW0gdXAgdG8gdGhlIGB2aXZpZF9tZWRpYV9vcHNgLgoKUmlnaHQgYXdheSwgdGhlIHJlYXNvbiBmb3IgdGhlIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGNoYW5nZSBjbGlja3M6IGl0JiMzOTtzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSWYgYHJlcV9mcmVlYCBjb3VsZCBkcm9wIHRoZSAqbGFzdCogcmVmZXJlbmNlIHRvIGBtZGV2YCAqZHVyaW5nKiB0aGUgZnJlZSBvcGVyYXRpb24sIHRoZW4gZGVjcmVtZW50aW5nIHRoZSBjb3VudGVyIGFmdGVyIGNhbGxpbmcgaXQgd291bGQgYmUgdG9vIGxhdGUuIFRoZSBjb2RlIGFjY2Vzc2VzIGBtZGV2YCBhcyBhbiBhdG9taWMgY291bnRlciwgd2hpY2ggc2VlbXMgc2FmZS4gQnV0LCBpZiBhIGByZXFfZnJlZWAgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiBhIHY0bDIgZGV2aWNlIHRoZW4gaXQgY291bGQgaW4gdHVybiBmcmVlIGB2aXZpZF9kZXZgLCB3aGljaCB3b3VsZCBmcmVlIGBtZGV2YC4gSWYgdGhpcyBoYXBwZW5zLCB0aGVuIGRlY3JlbWVudGluZyB0aGUgYXRvbWljIGNvdW50ZXIgYWZ0ZXJ3YXJkIGJlY29tZXMgYSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuIFNoaWZ0aW5nIHRoZSBkZWNyZW1lbnQgZW5zdXJlcyB0aGlzIGNhbiYjMzk7dCBoYXBwZW4uIEJyaWxsaWFudCEKClRoZSBgdml2aWRgIGRyaXZlciBjaGFuZ2VzIHN1cHBvcnQgdGhpcyBmaXguIEl0IG1ha2VzIHNlbnNlIHRoYXQgYHZpdmlkX3JlcV9hbGxvY2AgbmVlZHMgdG8gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGUgYHY0bDJfZGV2YCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBuZWVkcyB0byByZWxlYXNlIGl0LiBUaGlzIGV4cGxpY2l0bHkgdGllcyB0aGUgbGlmZXRpbWUgb2YgdGhlIGB2aXZpZF9kZXZgIChhbmQgdGhlcmVmb3JlIGBtZGV2YCkgdG8gdGhlIGV4aXN0ZW5jZSBvZiBhY3RpdmUgcmVxdWVzdHMuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHJlcXVlc3RzIGFyZSBtYW5hZ2VkIGF0IHRoZSBtZWRpYSBjb250cm9sbGVyIGxldmVsLCBhbmQgaXQgaGFzIGRpcmVjdCBpbXBsaWNhdGlvbnMgZm9yIHRoZSBWSVZJRCBkcml2ZXIuIFRoZSBWSVZJRCBkcml2ZXIsIGJlaW5nIGEgdmlydHVhbCB2aWRlbyBkcml2ZXIsIG1ha2VzIGl0IGVzcGVjaWFsbHkgYXBwZWFsaW5nIHRvIGZ1enogdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIGEgbmljZSwgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMuCgpOb3csIGxldCYjMzk7cyBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnM6IEkgbmVlZCBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGZvciB0aGUgbWVkaWEgY29udHJvbGxlciBzaWRlIGFuZCBgQ09ORklHX1ZJREVPX1ZJVklEYCBmb3IgdGhlIFZJVklEIGRyaXZlciBpdHNlbGYuIEkgc2VlIHRob3NlIG1lbnRpb25lZCBpbiBgdml2aWQtY29yZS5jYCBzbyBJIGNhbiBjb25maXJtIG15IGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSURFT19WSVZJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzoyOmNvbmZpZyBWSURFT19WSVZJRFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBWaWRlbyBUZXN0IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI1OmNvbmZpZyBWSURFT19WSVZJRF9DRUNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjYtXHRib29sIFwmIzM0O0VuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMyLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzozMzpjb25maWcgVklERU9fVklWSURfT1NEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgRnJhbWVidWZmZXIgZm9yIHRlc3RpbmcgT3V0cHV0IE92ZXJsYXlcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQyLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZzo0Mzpjb25maWcgVklERU9fVklWSURfTUFYX0RFVlNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgZGV2aWNlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGlzc3VlIGF0IGhhbmQgbGlrZWx5IGludm9sdmVzIHRoZSBtZWRpYSBwbGF5YmFjayBvciBjb250cm9sIGZsb3cuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgTUVESUFfQ09OVFJPTExFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjZW50cmFsIHNldHRpbmdzIGRpY3RhdGluZyBob3cgdGhlIGFwcGxpY2F0aW9uIGludGVyZmFjZXMgd2l0aCBleHRlcm5hbCBtZWRpYSBkZXZpY2VzLCBvciBoYW5kbGVzIGludGVybmFsIHBsYXliYWNrIHNjZW5hcmlvcy4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoZSBwcm9ibGVtIGxpZXMgd2l0aGluIGhvdyB3ZSYjMzk7cmUgZGVmaW5pbmcgdGhlIGNvbnRyb2xsZXImIzM5O3MgYmVoYXZpb3IuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5zIHRoZSBjcml0aWNhbCBzZXR0aW5ncyBnb3Zlcm5pbmcgY29udHJvbCBvZiBtZWRpYSBwbGF5YmFjayBhbmQgbXVzdCBiZSBjYXJlZnVsbHkgcmV2aWV3ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0NPTlRST0xMRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE2MD1jb25maWcgVklERU9fREVWXG4tLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE2OS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNzA6Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O01lZGlhIENvbnRyb2xsZXIgQVBJXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkNoZWNraW5nIHRoZSBgTUVESUFfU1VQUE9SVGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvcmUgb2YgdGhpcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYE1FRElBX1NVUFBPUlRgIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIGZvdW5kYXRpb24sIGZvciBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIG11bHRpbWVkaWEsIHNvIGEgc29saWQgdW5kZXJzdGFuZGluZyBoZXJlIGlzIGNyaXRpY2FsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0IHVwIHRoZSB3YXkgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IGRldmlhdGlvbnMgYXQgdGhpcyBlYXJseSBzdGFnZSBjYW4gbGVhZCB0byBjYXNjYWRpbmcgaXNzdWVzIGxhdGVyIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpbWVkaWEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MjU6Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIENoZWNrcG9pbnQ6IE1FRElBXF9URVNUXF9TVVBQT1JUKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBNeSBpbnN0aW5jdCBoZXJlIGlzIHRvIGltbWVkaWF0ZWx5IGV4YW1pbmUgdGhlIGBNRURJQV9URVNUX1NVUFBPUlRgIGZsYWcgb3IgdmFyaWFibGUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2V5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCwgcG9zc2libHkgYSBkZWZpbmVkIGNvbnN0YW50IG9yIGEgZmVhdHVyZSBmbGFnLCB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgY2VydGFpbiBtZWRpYS1yZWxhdGVkIHRlc3QgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRlY2lzaW9uIHBvaW50LCBhY3RpbmcgYXMgYSBnYXRld2F5IHRvIHJ1bm5pbmcgdGVzdCBzdWl0ZXMuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgbmV4dCBzdGVwcyBlbnRpcmVseSBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdmFyaWFibGUuIFRoZSB3aG9sZSBtZWRpYSB0ZXN0aW5nIHByb2Nlc3MgbWF5IGJlIHNob3J0LWNpcmN1aXRlZCBpZiB0aGUgdmFyaWFibGUgaXMgZGlzYWJsZWQuIFRoZSB2YXJpYWJsZSBtaWdodCBhZmZlY3Qgb3RoZXIgcHJvY2Vzc2VzLCBzbyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfVEVTVF9TVVBQT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMjU9Y29uZmlnIE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTM4LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEzOTpjb25maWcgTUVESUFfVEVTVF9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTQwLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBWSURFT19WSVZJRCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGBWSURFT19WSVZJRGAgZW52aXJvbm1lbnQgb3IgbW9kdWxlIGlzIHJ1bm5pbmcgY2xlYW4uIFdoYXQgYXJlIHRoZSBjdXJyZW50IGRlcGVuZGVuY2llcz8mIzM0OyBJJiMzOTttIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBzdXNwZWN0czogdGhlIGdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMsIHRoZSB2aWRlbyBjb2RlYyBsaWJyYXJpZXMgKEZGbXBlZywgbWF5YmU/KSwgdGhlIGRyaXZlciB2ZXJzaW9ucywgYW5kLCBvZiBjb3Vyc2UsIGFueSBzcGVjaWZpYyBmcmFtZXdvcmsgdmVyc2lvbnMgd2UmIzM5O3JlIHRpZWQgdG8sIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBzb21lIGludGVybmFsIHBpcGVsaW5lIG9yIGEgdGhpcmQgcGFydHkgc3lzdGVtIHRoYXQgd2UgY2FsbCB1cG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaW52b2x2ZWQgaXMgY29tcGF0aWJsZSBhdCBhbGwgbGV2ZWxzLiBBcmUgd2UgcHVsbGluZyB0aGUgbGF0ZXN0IGRlcGVuZGVuY2llcyBvciBhcmUgd2UgcGlubmluZyBkb3duIGEgc3RhYmxlIHNldD8gSGF2ZSBhbnkgdXBkYXRlcyBoYXBwZW5lZCByZWNlbnRseSB0aGF0IG1pZ2h0IGhhdmUgY2F1c2VkIHJlZ3Jlc3Npb24/IEnigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBsb2dzLCBhbmQgcG90ZW50aWFsbHkgdGVzdCBhZ2FpbnN0IGEga25vd24tZ29vZCBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGhpbiB0aG9zZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gdGhpbmtpbmcgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGNvbXBhdGliaWxpdHkgcXVpcmtzLCBvciBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciB0aGUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI9Y29uZmlnIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIFZJREVPX0RFViBcdTAwMjZcdTAwMjYgIVNQQVJDMzIgXHUwMDI2XHUwMDI2ICFTUEFSQzY0XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIEhBU19ETUFcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNi1cdHNlbGVjdCBGT05UX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI1PWNvbmZpZyBWSURFT19WSVZJRF9DRUNcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjYtXHRib29sIFwmIzM0O0VuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6Mjc6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTI4LVx0c2VsZWN0IENFQ19DT1JFXG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0zMz1jb25maWcgVklERU9fVklWSURfT1NEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtFbmFibGUgRnJhbWVidWZmZXIgZm9yIHRlc3RpbmcgT3V0cHV0IE92ZXJsYXlcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEIFx1MDAyNlx1MDAyNiBGQl9DT1JFXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjM2Olx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRD1tIHx8IEZCX0NPUkU9eVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zNy1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc9NDM9Y29uZmlnIFZJREVPX1ZJVklEX01BWF9ERVZTXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQ0LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIFZJREVPX1ZJVklEXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTQ2LVx0ZGVmYXVsdCBcJiMzNDs2NFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTY4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWaWRlbyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyB2aWRlbyBkcml2ZXIgYW5kIGltbWVkaWF0ZWx5IHNlZSBzb21lIGtleSBkZXBlbmRlbmNpZXMgYXQgcGxheS4gVGhlICYjMzQ7dml2aWQmIzM0OyBkcml2ZXIsIGluIHBhcnRpY3VsYXIsIGhpbmdlcyBvbiBgVklERU9fREVWYCBhbmQgYEhBU19ETUFgLiBUaGF0JiMzOTtzIG5vdCB1bmV4cGVjdGVkOyBgVklERU9fREVWYCBpcyBwcmV0dHkgZnVuZGFtZW50YWwgZm9yIHZpZGVvIGRldmljZXMsIGFuZCBETUEgaXMgY3J1Y2lhbCBmb3IgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIgaW4gbW9zdCBvZiB0aGVzZSBhcHBsaWNhdGlvbnMuCgpOb3csIGBWSURFT19ERVZgIGl0c2VsZiBpc24mIzM5O3QgYSBmcmVlYmllLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gYE1FRElBX1NVUFBPUlRgLiBNYWtlcyBzZW5zZSwgdGhlIGJhc2UgbWVkaWEgaW5mcmFzdHJ1Y3R1cmUgaGFzIHRvIGJlIHRoZXJlIGZvciBhbnl0aGluZyB2aWRlbyByZWxhdGVkIHRvIHdvcmsuCgpCdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCBtZSBqdXN0IHF1aWNrbHkgZ2xhbmNlIGF0IGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBtYWtlIHN1cmUgaXQgaXMgaW4gcGxhY2U7IGl0IGlzIHJlbGV2YW50IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyJiMzOTtzIHJlcXVlc3QsIGFuZCB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NDAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBBUEkgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgZGVmaW5pdGlvbi4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSBpdCYjMzk7cyBub3Qgd2hlcmUgSSBpbml0aWFsbHkgZXhwZWN0ZWQgaXQgdG8gYmUuIFRoaXMgY29uc3RhbnQsIGVzcGVjaWFsbHkgd2l0aCBhbiBBUEktcmVsYXRlZCBuYW1lLCBjb3VsZCBlYXNpbHkgYmUgYWJzdHJhY3RlZCBvdXQgYW5kIGRlZmluZWQgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBtb2R1bGUgb3IgaGVhZGVyIGZpbGUgdGhhbiBJJiMzOTttIGN1cnJlbnRseSBsb29raW5nIGF0LiBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2YgbXkgc2VhcmNoLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwcm9qZWN0JiMzOTtzIGluY2x1ZGUgcGF0aHMgYW5kIGxvb2sgZm9yIGEgbW9yZSBkZWRpY2F0ZWQgQVBJLXJlbGF0ZWQgaGVhZGVyLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuIHRvIGtlZXAgQVBJLXNwZWNpZmljIGRlZmluaXRpb25zIHNlcGFyYXRlIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIGFuZCB2ZXJzaW9uaW5nIGNvbnRyb2wuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkgaGF2ZSB0byBjaGFuZ2UgbXkgc2VhcmNoIHRvIGJlIG1vcmUgc3lzdGVtaWMgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRlY2lwaGVyaW5nIHRoZSBNZWRpYSBDb250cm9sbGVyIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGluaXRpYWxseSwgSSB0aG91Z2h0IGl0IHdhcyB1c2luZyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgdG8gZ2F0ZSBzb21lIGZ1bmN0aW9uYWxpdHkuIEJ1dCwgbm8sIHRoYXQmIzM5O3Mgbm90IGl0LiBUaGUgcGF0Y2ggY2xlYXJseSByZWxpZXMgb24gYW4gYCNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAgY29uc3RydWN0LiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIHRoZSBjb21waWxhdGlvbiBvZiBgbWMtcmVxdWVzdC5jYCBkZXBlbmRzIG9uLiBXaGF0JiMzOTtzIHRoZSB0cmlnZ2VyaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG1hY3JvIHdhc24mIzM5O3QgcmlnaHQsIHNvIG5vdyBJIG5lZWQgdG8gYmFja3RyYWNrIGFuZCB0cmFjZSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLiBJIGhhdmUgdG8gZmluZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWMtcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcdDo9IG1jLWRldmljZS5vIG1jLWRldm5vZGUubyBtYy1lbnRpdHkubyBcXFxuZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZTo0Olx0ICAgbWMtcmVxdWVzdC5vXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzOTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzOiAqd2hhdCBhY3R1YWxseSBkaWN0YXRlcyBpdHMgY29tcGlsYXRpb24/KiBJdCYjMzk7cyBub3QgdXN1YWxseSBhIHN0YW5kYWxvbmUgdGFyZ2V0LiBJdCYjMzk7cyBhbG1vc3QgYWx3YXlzIGJ1aWx0IGFzIHBhcnQgb2YgYSBsYXJnZXIgbXVsdGltZWRpYSBvciBrZXJuZWwgbW9kdWxlIGJ1aWxkIHByb2Nlc3MuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkmIzM5O20gdGhpbmtpbmcsIGlzIGl0IHRpZWQgdG8gdGhlIG92ZXJhbGwgYEtjb25maWdgIGZvciB0aGUgbWVkaWEgc3Vic3lzdGVtLCBvciBzcGVjaWZpYyBmZWF0dXJlcyB3aXRoaW4/IEFyZSB0aGVyZSBhbnkgdG9wLWxldmVsIGBNYWtlZmlsZWBzIHRoYXQgaW5jbHVkZSBpdCBkaXJlY3RseT8gT3IsIGlzIGl0IGluY2x1ZGVkIHZpYSBzb21lIGdlbmVyaWMgcnVsZXMgb3IgdmFyaWFibGVzLCBsaWtlIGBvYmotJChDT05GSUdfU09NRVRISU5HKWA/CgpJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIHVuZGVyIGBkcml2ZXJzL21lZGlhYCwgYW5kIG1heWJlIGV2ZW4gaGlnaGVyIHVwIGluIHRoZSBrZXJuZWwmIzM5O3Mgc291cmNlIHRyZWUsIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgY29udHJvbCB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgcGFydGljdWxhciBgTWFrZWZpbGVgLiBJJiMzOTtsbCBoYXZlIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBgQ09ORklHX2AgZmxhZ3MgYW5kIHRoZWlyIGRlcGVuZGVuY2llcywgYXMgd2VsbCBhcyBhbnkgb3RoZXIgaW5kaXJlY3QgbWVjaGFuaXNtcy4gVGhlcmUgYXJlIGRlZmluaXRlbHkgYSBsb3Qgb2YgYW5nbGVzIHRvIGNvbnNpZGVyLiBUaGUgd2hvbGUgcG9pbnQgaXMsIHdoYXQgdHJpZ2dlcnMgaXQgdG8gZ2V0IGJ1aWx0LCBhbmQgaG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9NYWtlZmlsZT0xNj1pZmVxICgkKENPTkZJR19NRURJQV9DT05UUk9MTEVSKSx5KVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZToxNzogIG9iai0kKENPTkZJR19NRURJQV9TVVBQT1JUKSAmIzQzOz0gbWMvXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTE4LWVuZGlmXG4tLVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZT0yNj1vYmotJChDT05GSUdfQ0VDX0NPUkUpICYjNDM7PSBjZWMvXG4tLVxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZS0zMS1cbmRyaXZlcnMvbWVkaWEvTWFrZWZpbGU6MzI6b2JqLXkgJiM0Mzs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9cbmRyaXZlcnMvbWVkaWEvTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgJiM0Mzs9IHJhZGlvL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODgyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIGNvbnRleHQ6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgTWVkaWEgU3VwcG9ydCoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBzdW1tYXJpemUgd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIEZpcnN0LCB0byBnZXQgYW55IG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBnb2luZywgSSBrbm93IEkmIzM5O2xsIG5lZWQgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBhbmQgYENPTkZJR19NRURJQV9TVVBQT1JUYCBlbmFibGVkLiBUaGV5JiMzOTtyZSBwcmV0dHkgbXVjaCBmdW5kYW1lbnRhbCB0byB0aGUgd2hvbGUgbWVkaWEgc3Vic3lzdGVtLiBBbmQgdGhlbiwgc3BlY2lmaWNhbGx5IGZvciB0aGUgdml2aWQgZHJpdmVyLCBgQ09ORklHX1ZJREVPX1ZJVklEYCBpcyBnb2luZyB0byBiZSByZXF1aXJlZCwgbWFrZXMgc2Vuc2Ugc2luY2UgdGhhdCBlbmFibGVzIHRoZSBkcml2ZXIgaXRzZWxmLiBBbHNvLCBuYXR1cmFsbHksIGBDT05GSUdfVklERU9fREVWYCBpcyByZXF1aXJlZCBiZWNhdXNlLCB3ZWxsLCB2aXZpZCBpcyBhIHZpZGVvIGRldmljZSEgTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgYWJvdXQgYENPTkZJR19NRURJQV9URVNUX1NVUFBPUlRgPyBUaGUgbm90ZXMgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIG5lZWRlZCBmb3IgdGVzdCBkcml2ZXJzLCBidXQgdG8gYmUgc3VyZSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9gIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIEdvdHRhIGJlIHByZWNpc2UgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dml2aWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfVklERU9fVklNQykgJiM0Mzs9IHZpbWMvXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfVklERU9fVklWSUQpICYjNDM7PSB2aXZpZC9cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19WSURFT19WSVNMKSAmIzQzOz0gdmlzbC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZJVklEIERyaXZlciBCdWlsZCBhbmQgUmVzb3VyY2UgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTWFrZWZpbGVgIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVyc2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGdldHMgaW5jbHVkZWQgdW5jb25kaXRpb25hbGx5LiBJbnRlcmVzdGluZy4gV2UgaGF2ZSBgb2JqLXkgJiM0Mzs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9gLCBtZWFuaW5nIHRoYXQgYXMgbG9uZyBhcyB0aGUgbW9kdWxlIGlzIGJlaW5nIGJ1aWx0IGF0IGFsbCwgdGhpcyB3aG9sZSB0cmVlIGlzIGluY2x1ZGVkLiBUaGF0IG1lYW5zIGVuYWJsaW5nIGBDT05GSUdfVklERU9fVklWSURgIGFsb25lIGlzIHN1ZmZpY2llbnQgdG8gcHVsbCBldmVyeXRoaW5nIGluLiBHb3QgaXQuCgpOb3csIG15IHByaW1hcnkgaW50ZXJlc3QgaXMgaW4gdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgcmVzb3VyY2VzIHdpdGhpbiB0aGlzIGRyaXZlci4gTGV0IG1lIGRpZyBpbnRvIGB2aXZpZC1jb3JlLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gYHZpdmlkX3JlcV9hbGxvY2AgYW5kIGB2aXZpZF9yZXFfZnJlZWAuIFRob3NlIGFyZSBrZXkgc3ltYm9scy4gV2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHJlcXVlc3QgaGFuZGxpbmcgaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIC0gYW5kIHRoYXQgbWFrZXMgbWUgdGhpbmsgb2YgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2AuCgpBaGEsIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGlzIGBzdGF0aWNgLiBUaGF04oCZcyBnb29kIHRvIGtub3cuIFRoZSBzaWduYXR1cmUgaXMgYHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilgLiBCdXQgd2FpdCBhIHNlY29uZCwgSSBzZWUgYG1lZGlhX3JlcXVlc3RfcHV0YCBpcyBleHBvcnRlZCEgVGhhdOKAmXMgdW5leHBlY3RlZC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKWAuIE9rYXksIGxldCBtZSBwaXZvdCBvdmVyIHRvIGBtYy1yZXF1ZXN0LmNgIGFnYWluLCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHVzYWdlIG9mIGBtZWRpYV9yZXF1ZXN0X3B1dGAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVmY291bnRpbmcgYW5kIHJlc291cmNlIGxpZmVjeWNsZSBhcmUgbWFuYWdlZCB3aXRoIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODIte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjg1OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE0OC1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWRldi1cdTAwM2VyZXFfcXVldWVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCByZXQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzUtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDEtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzNi1cdGlmIChjb21wbGV0ZWQpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XHRcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEZvY3VzIFBvaW50cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBiYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIGJlZW4gY29uc2lkZXJpbmcgbGF0ZWx5LCB0aGUgYG1lZGlhX3JlcXVlc3RfcHV0YCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgc29saWQgYW5jaG9yIHBvaW50IGZvciBkaXZpbmcgZGVlcGVyIGludG8gdGhpcyBhcmVhLiBJdCYjMzk7cyBvZnRlbiBhIGtleSBmdW5jdGlvbiB3aGVuIHRoaW5raW5nIGFib3V0IG1lZGlhIHJlcXVlc3RzLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBzb21lIG9mIG15IGludmVzdGlnYXRpb24gdGhlcmUuIEFsc28sIGRvbiYjMzk7dCBmb3JnZXQgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgbGlrZWx5IHJlbGV2YW50LCBhbmQgbWF5IHBsYXkgYW4gaW1wb3J0YW50IHJvbGUsIHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHJlcXVlc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk5MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVml2aWQgQ29yZSYjMzk7cyBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYHZpdmlkLWNvcmUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBhcmUgc3RhdGljLCB3aGljaCBsaW1pdHMgdGhlaXIgdXNlIGFzIGZvY3VzIHN5bWJvbHMsIHVuZm9ydHVuYXRlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqZXhwb3NlZCogZnJvbSB0aGlzIG1vZHVsZS4KCkxldCYjMzk7cyBzZWXigKYgSSBrbm93IHRoYXQgYHZpdmlkX3JlcV9hbGxvY2AgaXMgY2FsbGVkIGluZGlyZWN0bHkgdGhyb3VnaCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgaXQgdmlhIGBtZGV2LSZndDtvcHMtJmd0O3JlcV9hbGxvY2AuIFNpbWlsYXJseSwgYHZpdmlkX3JlcV9mcmVlYCBnZXRzIGNhbGxlZCBieSBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBhZnRlciBnb2luZyB0aHJvdWdoIGBtZGV2LSZndDtvcHMtJmd0O3JlcV9mcmVlYC4gU28sIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBzZWVtIGxpa2UgbXkga2V5IGVudHJ5IHBvaW50cyBiZWNhdXNlIGBtZWRpYV9yZXF1ZXN0X3B1dGAgY2FsbHMgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAuIEdvb2QuIFRoYXQgZ2V0cyBtZSB3aGVyZSBJIG5lZWQgdG8gYmUuCgpCdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4gSSBhbHNvIHNlZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgYGlvY3RsYCBmdW5jdGlvbnMgbGlrZSBgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZWAgYW5kIGBtZWRpYV9yZXF1ZXN0X2lvY3RsYCB0aGF0IGNvdWxkIGFsc28gYmUgZW50cnkgcG9pbnRzLiBUaGUgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSByZWxldmFudCBpcyBgbWVkaWFfcmVxdWVzdF9jbG9zZWAuIExldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVkaWFfcmVxdWVzdF9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTk1PXN0YXRpYyBfX3BvbGxfdCBtZWRpYV9yZXF1ZXN0X3BvbGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTIxOnN0YXRpYyBsb25nIG1lZGlhX3JlcXVlc3RfaW9jdGxfcXVldWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTEyMi17XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg5LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTkwOnN0YXRpYyBsb25nIG1lZGlhX3JlcXVlc3RfaW9jdGxfcmVpbml0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xOTEte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIyNy1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIyODpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjI5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjM0LVx0Y2FzZSBNRURJQV9SRVFVRVNUX0lPQ19RVUVVRTpcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIzNTpcdFx0cmV0dXJuIG1lZGlhX3JlcXVlc3RfaW9jdGxfcXVldWUocmVxKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNi1cdGNhc2UgTUVESUFfUkVRVUVTVF9JT0NfUkVJTklUOlxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MjM3Olx0XHRyZXR1cm4gbWVkaWFfcmVxdWVzdF9pb2N0bF9yZWluaXQocmVxKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzOC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MjQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlcXVlc3RfZm9wcyA9IHtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDUtXHQucG9sbCA9IG1lZGlhX3JlcXVlc3RfcG9sbCxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0NjpcdC51bmxvY2tlZF9pb2N0bCA9IG1lZGlhX3JlcXVlc3RfaW9jdGwsXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDctI2lmZGVmIENPTkZJR19DT01QQVRcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0ODpcdC5jb21wYXRfaW9jdGwgPSBtZWRpYV9yZXF1ZXN0X2lvY3RsLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjQ5LSNlbmRpZiAvKiBDT05GSUdfQ09NUEFUICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDgzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBwaHJhc2VkIGFzIGEgc3VtbWFyeSBvZiBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgbWVkaWEtcmVsYXRlZCByZXF1ZXN0cy4gUmlnaHQgbm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgc2VlbXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJiMzOTt2ZSBnb3QsIHRoYXQgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGlzIGRlZmluaXRlbHkgKmNhbGxlZCogZnJvbSB3aXRoaW4gYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFyY2hpdGVjdHVyYWwgcG9pbnQgSSBuZWVkIHRvIGhhdmUgbG9ja2VkIGRvd24uIFRoaXMgY2xhcmlmaWVzIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiBhdCB3b3JrIGhlcmUgYW5kIGluZm9ybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udHJvbCBmbG93LiBOb3cgSSBjYW4gbW92ZSBvbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyByb2xlIG9mIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHJlcXVlc3QgbGlmZWN5Y2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz0yMzA9c3RhdGljIGxvbmcgbWVkaWFfZGV2aWNlX2dldF90b3BvbG9neShzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy0zNzItXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjM3MzpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTM3NC17XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz00MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9pb2N0bF9pbmZvIGlvY3RsX2luZm9bXSA9IHtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzMC1cdE1FRElBX0lPQyhHX1RPUE9MT0dZLCBtZWRpYV9kZXZpY2VfZ2V0X3RvcG9sb2d5LCBNRURJQV9JT0NfRkxfR1JBUEhfTVVURVgpLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYzo0MzE6XHRNRURJQV9JT0MoUkVRVUVTVF9BTExPQywgbWVkaWFfZGV2aWNlX3JlcXVlc3RfYWxsb2MsIDApLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgRGV2aWNlIFJlcXVlc3QgQWxsb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYCBmdW5jdGlvbi4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgdGhlIGhhbmRsZXIgZm9yIHRoYXQgYE1FRElBX0lPQ19SRVFVRVNUX0FMTE9DYCBpb2N0bC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwganVzdCByb3V0aW5nIHRoZSBpb2N0bCBjYWxsLiBOb3csIGxldCYjMzk7cyBzZWUgaG93IHRoYXQgcmVxdWVzdCBhbGxvY2F0aW9uIGFjdHVhbGx5IGhhcHBlbnMuLi4gQWgsIGhlcmUgaXQgaXMsIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoYXQgaGFuZGxlci4gR29vZCwgbm93IEkgaGF2ZSBhIGxlYWQgb24gd2hlcmUgdGhlIGFsbG9jYXRpb24gbG9naWMgaXMgbG9jYXRlZC4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gYG1lZGlhX3JlcXVlc3RfYWxsb2NgIHNwZWNpZmljYWxseSwgbGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGJyb2FkZXIgdmlldy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBtZWRpYV9kZXZpY2VfaW9jdGxgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIGlvY3RsIGhhbmRsaW5nIHdpdGhpbiB0aGUgbWVkaWEgZGV2aWNlIGZyYW1ld29yay4gVGhhdCB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIGNvbnRleHQgYXJvdW5kIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW4gdGhlIHdlZWRzLiBDb250ZXh0IGlzIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9kZXZpY2VfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfaW9jdGxfaW5mbyBpb2N0bF9pbmZvW10gPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzMtXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjQzNDpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzNS1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBfX2FyZylcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTUxOD1zdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTMzLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NTM0Olx0XHRyZXR1cm4gbWVkaWFfZGV2aWNlX2lvY3RsKGZpbHAsIGNtZCwgYXJnKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTM1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZmlsZV9vcGVyYXRpb25zIG1lZGlhX2RldmljZV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQzLVx0Lm9wZW4gPSBtZWRpYV9kZXZpY2Vfb3BlbixcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NTQ0Olx0LmlvY3RsID0gbWVkaWFfZGV2aWNlX2lvY3RsLFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy01NDUtI2lmZGVmIENPTkZJR19DT01QQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBWaXZpZC1Db3JlLmMgZm9yIFJlcXVlc3QgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBhcmUgZXhwb3J0ZWQgYW5kIG5vdCBzdGF0aWMgd2l0aGluIGB2aXZpZC1jb3JlLmNgLiBFeGNlbGxlbnQsIHRob3NlIGFyZSBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3ltYm9scyBJJiMzOTttIGxvb2tpbmcgZm9yIOKAkyB0aGV5JiMzOTtyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyByZXF1ZXN0cyBhcmUgY3JlYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgcmVxdWVzdCBsaWZlY3ljbGUuCgpOb3csIG15IG5leHQgbW92ZSBpcyB0byBicm9hZGVuIHRoZSBzZWFyY2ggYSBiaXQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB2aXZpZC1jb3JlLmNgIHRoYXQgYXJlIHNvbWVob3cgaW52b2x2ZWQgd2l0aCByZXF1ZXN0IG1hbmFnZW1lbnQuIEkmIzM5O20gdGhpbmtpbmcgSSBtaWdodCBmaW5kIHNvbWUgaW50ZXJtZWRpYXRlIGZ1bmN0aW9ucywgcmVsYXRlZCBoZWxwZXIgZnVuY3Rpb25zLCBvciBwb3RlbnRpYWxseSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZXJyb3Igc3RhdGVzIGNvbm5lY3RlZCB0byByZXF1ZXN0cy4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgYHZpdmlkLWNvcmUuY2Agb2ZmZXJzIGluIHRoaXMgcmVnYXJkLiBUaGlzIGNvdWxkIHJldmVhbCBvdGhlciB1c2VmdWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXZpZF9yZXEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jPTg1Mj1zdGF0aWMgdm9pZCB2aXZpZF9kZXZfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04NzEtI2lmZGVmIENPTkZJR19NRURJQV9DT05UUk9MTEVSXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6ODcyOnN0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODczLXtcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODg0LVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjg4NTpzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg4Ni17XG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5Mi1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo4OTM6c3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04OTQte1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz05MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9kZXZpY2Vfb3BzIHZpdmlkX21lZGlhX29wcyA9IHtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo5MDU6XHQucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNjpcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNzpcdC5yZXFfdmFsaWRhdGUgPSB2aXZpZF9yZXFfdmFsaWRhdGUsXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtOTA4LVx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgTWVkaWEgUmVxdWVzdCBBbGxvY2F0aW9uKioKClJpZ2h0LCB0aGV5JiMzOTtyZSBhbGwgc3RhdGljLCBhcmVuJiMzOTt0IHRoZXk/IFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuLi5idXQgYWxzbyBtZWFucyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4gT2theSwgKmBtZWRpYV9yZXF1ZXN0X2FsbG9jYCogYW5kICpgbWVkaWFfcmVxdWVzdF9wdXRgKuKAlHRob3NlIGFyZSBteSBmb2NhbCBwb2ludHMgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG1lZGlhIHJlcXVlc3RzIGFyZSBhbGxvY2F0ZWQgYW5kIHJlbGVhc2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRob3NlIGFyZSB0aGUga2V5IG9wZXJhdGlvbnMsIHNvIHRoZXkmIzM5O2xsIHByb3ZpZGUgdGhlIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudC4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gY2hlY2sgb3V0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYG1jLXJlcXVlc3QuY2AuIExldCYjMzk7cyBzZWUgaG93IGFsbG9jYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4uLiB3aGF0IHRoZSBwcmVjb25kaXRpb25zIGFyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBob3cgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVkaWFfcmVxdWVzdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTI4Nz1FWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyODk6aW50IG1lZGlhX3JlcXVlc3RfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwgaW50ICphbGxvY19mZClcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI5MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDY2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBgbWMtcmVxdWVzdC5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHJlcXVlc3QgaGFuZGxpbmcgaXMgd29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGF0LiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UmIzM5O3JlIGRvaW5nIHRoZSBQVVQgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdywgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbWVkaWEgY2FjaGUgaXRzZWxmLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkIGJlZm9yZSB3ZSBldmVuICp0aGluayogYWJvdXQgb3B0aW1pemluZyBhbnl0aGluZy4gQWxyaWdodCwgbGV0JiMzOTtzIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODIte1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjg1OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE0OC1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWRldi1cdTAwM2VyZXFfcXVldWVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cdFx0XHRyZXEtXHUwMDNlZGVidWdfc3RyLCByZXQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzUtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2Olx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDEtXHRpZiAoY29tcGxldGVkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlx0XHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzNi1cdGlmIChjb21wbGV0ZWQpXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XHRcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgRW50cnkgUG9pbnRzIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kaWZpZWQgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyB0byBmb2N1cyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSBzaG91bGQgY2hlY2sgd2hhdCBvdGhlciBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQuCgpMZXQgbWUgc2Vl4oCmIHRoZXJlJiMzOTtzIGBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAsIGBDT05GSUdfVklERU9fVklWSURgLCBgQ09ORklHX01FRElBX1NVUFBPUlRgLCBhbmQgYENPTkZJR19WSURFT19ERVZgLiBSaWdodCwgSSByZW1lbWJlciBgQ09ORklHX01FRElBX1NVUFBPUlRgIGlzIGEgbWVudWNvbmZpZywgd2hpY2ggbWVhbnMgaXQgdHJhbnNsYXRlcyB0byBqdXN0IGBNRURJQV9TVVBQT1JUYCBkdXJpbmcgZXZhbHVhdGlvbi4gYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBpcyBqdXN0IGEgYm9vbGVhbi4gYENPTkZJR19WSURFT19WSVZJRGAgYW5kIGBDT05GSUdfVklERU9fREVWYCBhcmUgdHJpc3RhdGVzLgoKTm93LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBWSURFT19WSVZJRGA/IExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQuIEhtbSwgaXQgZGVwZW5kcyBvbiBgVklERU9fREVWICZhbXA7JmFtcDsgIVNQQVJDMzIgJmFtcDsmYW1wOyAhU1BBUkM2NGAsIGFuZCBhbHNvIGBIQVNfRE1BYC4gSXQgYWxzbyBzZWxlY3RzIGEgYnVuY2ggb2Ygb3RoZXIgb3B0aW9uczogYEZPTlRfU1VQUE9SVGAsIGBGT05UXzh4MTZgLCBgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURgIGlmIGBGQl9DT1JFYCwgYFZJREVPQlVGMl9WTUFMTE9DYCwgYFZJREVPQlVGMl9ETUFfQ09OVElHYCwgYFZJREVPX1Y0TDJfVFBHYCwgYW5k4oCmIGhvbGQgb24gYSBtaW51dGXigKYgaXQgc2VsZWN0cyBgTUVESUFfQ09OVFJPTExFUmAgYW5kIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYD8gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHNlbGVjdGVkIG9wdGlvbnMgYXJlIGNvbnNpc3RlbnQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTUVESUFfQ09OVFJPTExFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yPWNvbmZpZyBWSURFT19WSVZJRFxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMTAtXHRzZWxlY3QgVklERU9fVjRMMl9UUEdcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MTE6XHRzZWxlY3QgTUVESUFfQ09OVFJPTExFUlxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIHRoZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGJlZHJvY2sgb2YgaG93IHdlJiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIG1lZGlhIGNvbnRyb2wgaW4gdGhpcyBzZXR1cCwgb3IgYXQgbGVhc3QgaG93IHdlJiMzOTtyZSAqcmVxdWVzdGluZyogaXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgaG93IGl0JiMzOTtzIGRlc2lnbmVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgbWVkaWEgdHlwZXMgYW5kIGNvbnRyb2wgc3VyZmFjZXMuIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdGhlIHJlcXVlc3QgZmxvdywgcGVybWlzc2lvbiBtb2RlbHMgKGlmIGFueSksIGFuZCB0aGUgbWVjaGFuaXNtcyBmb3IgY29tbXVuaWNhdGluZyB0aGVzZSByZXF1ZXN0cyBhY3Jvc3MgcHJvY2Vzc2VzIG9yIHdpdGhpbiBhIHNpbmdsZSBhcHAuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzIHRvIGNoZWNrIGZvciB3aGV0aGVyIGFueSBlZGdlIGNhc2VzIGFyZSBjb25zaWRlcmVkLiBXaGF0IGFyZSB0aGUgZmFsbGJhY2sgcHJvY2VkdXJlcz8gQXJlIHRoZSByZXF1ZXN0JiMzOTtzIHBhcmFtZXRlcnMgY2hlY2tlZCBmb3IgdmFsaWRpdHk/IFRoaXMgaXMgdGhlIGNvcmUgaW50ZXJmYWNlLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXQgaW1wbGljaXRseSBiZWZvcmUgbW92aW5nIG9uLiBXaGF0IGRvICpJKiBrbm93LCBmcm9tIG1lbW9yeSwgYWJvdXQgdGhpcyBBUEk/IERvIEkgbmVlZCB0byBjb25zdWx0IHRoZSBjb2RlIGl0c2VsZiwgb3IgbWF5YmUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIHJlbGF0ZWQgYXJjaGl0ZWN0dXJlPyBMZXQmIzM5O3MgYmVnaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpIbW0sIHRoaXMgaXMgY3VyaW91cy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG9wdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBieSBgVklERU9fVklWSURgLCBidXQgaXQgYXBwZWFycyB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gVGhpcyBpcyB1bmV4cGVjdGVkOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb25zIG9mIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbGlrZWx5IHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2Agb3IgcG9zc2libHkgZGlnZ2luZyBkZWVwZXIgaW50byBgZHJpdmVycy9tZWRpYS9tYy9LY29uZmlnYC4gSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gb3B0aW9ucywgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBhdGggZm9yIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgU2hlbmFuaWdhbnM6IElzIFRoaXMgUmVhbD8qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBzZWVpbmcgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgLi4uIGFuZCB0aGF0JiMzOTtzICpsaXN0ZWQqIGFzIGEgY29uZmlnIG9wdGlvbj8gSW4gYGRyaXZlcnMvbWVkaWEvbWMvS2NvbmZpZ2A/IFNlcmlvdXNseT8gSSBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHN1Z2dlc3RzIHNvbWV0aGluZyBwb3RlbnRpYWxseSBuZXcgb3IsIGF0IGxlYXN0LCBzb21ldGhpbmcgSSBoYXZlbiYjMzk7dCBkaXJlY3RseSBlbmNvdW50ZXJlZCBpbiB0aGlzIGNvbnRleHQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscyBpbiB0aGUgbWVkaWEgY29udHJvbGxlciBkcml2ZXIgc3BhY2UuIElzIHRoaXMgYSBuZXcgQVBJIHJlcXVlc3QsIG9yIHNvbWV0aGluZyB0aWVkIHRvIHRoZSBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIGNvbmZpZ3VyYXRpb24/IFRoaXMgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVyaXRzICppbW1lZGlhdGUqIGludmVzdGlnYXRpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIFgsIFksIG9yIFogaW4gdGhlIGN1cnJlbnQgcHJvamVjdCwgZGVwZW5kaW5nIG9uIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGRyaXZlciBpbnRlcmZhY2VzIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBJJiMzOTt2ZSBnb3QgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaW4gdGhhdCBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCBraW5kIG9mIGNvbnRyb2wgaXQgZ2l2ZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUEkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTEyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBtZWRpYSBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBSZW5hbWVkIG9yIFJlbW92ZWQgQVBJIENhbGwqKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIGhhcyBlaXRoZXIgYmVlbiBkZXByZWNhdGVkIG9yIGhhZCBpdHMgbmFtZSBjaGFuZ2VkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmUuIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbWVkaWEvbWMvYC4gVGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb3IgZGVmaW5pdGlvbiBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhhdCBBUEksIGFuZCBjaGVja2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIGlkZWEgaW4gdGhlc2Ugc2l0dWF0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYSBjaGFuZ2UgdG8gdGhlIGJ1aWxkIHByb2Nlc3Mgb3IgbW9kdWxlIGluY2x1c2lvbiBtaWdodCBiZSB0aGUgY3VscHJpdC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyB0cnVseSBnb25lLCBvciBtZXJlbHkgcmVuYW1lZCwgYW5kIHRoZW4gd2hhdCB0aGUgcmVwbGFjZW1lbnQgKGlmIGFueSkgaXMuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIHByb2NlZHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWMtcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcdDo9IG1jLWRldmljZS5vIG1jLWRldm5vZGUubyBtYy1lbnRpdHkubyBcXFxuZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZTo0Olx0ICAgbWMtcmVxdWVzdC5vXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDY0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTG9naWMgZm9yIGBtYy1yZXF1ZXN0LmNgKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbWMtcmVxdWVzdC5jYCBpcyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgaWYgYG1jYCBpcyBjb21waWxlZC4gQW5kIGBtY2AgaXRzZWxmIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBpcyBlbmFibGVkLiBUaGVyZWZvcmUsIGBDT05GSUdfTUVESUFfQ09OVFJPTExFUmAgc2hvdWxkIGJlIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IG5lZWRlZCB0byBlbnN1cmUgdGhhdCBgbWMtcmVxdWVzdC5jYCBpcyBjb21waWxlZC4KCkhvd2V2ZXIsIEkgbmVlZCB0byBjb25zaWRlciBkZXBlbmRlbmNpZXMuIEkgYWxzbyBzZWUgcmVmZXJlbmNlcyB0byBgTUVESUFfU1VQUE9SVGAsIGBWSURFT19ERVZgLCBhbmQgYFZJREVPX1ZJVklEYC4gQWgsIGJ1dCBoZXJlJiMzOTtzIHNvbWV0aGluZyB1c2VmdWw6IGBWSURFT19WSVZJRGAgKnNlbGVjdHMqIGBNRURJQV9DT05UUk9MTEVSYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlcmVmb3JlLCBpZiBgVklERU9fVklWSURgIGlzIGVuYWJsZWQsIHRoZW4gYE1FRElBX0NPTlRST0xMRVJgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCBtZWFucywgdG8gZ2V0IGBtYy1yZXF1ZXN0LmNgIGNvbXBpbGVkLCB0aGUgbWluaW1hbCBhbmQgc3VmZmljaWVudCBjb25maWcgb3B0aW9ucyBJIG5lZWQgYXJlIGBWSURFT19WSVZJRGAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHZpdmlkX3JlcV9hbGxvY2AgaXMgY2FsbGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBjYWxscyBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfYWxsb2NgLiBBbmQgaW4gYHZpdmlkLWNvcmUuY2AsIGB2aXZpZF9tZWRpYV9vcHNgIGFzc2lnbnMgYC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2NgLCBhbmQgdGhpcyBzdHJ1Y3QgaXMgYXNzaWduZWQgdG8gYG1kZXYtJmd0O29wc2AuIFRoYXQgY29uZmlybXMgZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXZpZF9tZWRpYV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jPTg5Mz1zdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDMtXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6OTA0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtOTA1LVx0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9MTgyMz1zdGF0aWMgaW50IHZpdmlkX2NyZWF0ZV9pbnN0YW5jZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaW5zdClcbi0tXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtMTg1NC1cdG1lZGlhX2RldmljZV9pbml0KFx1MDAyNmRldi1cdTAwM2VtZGV2KTtcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzoxODU1Olx0ZGV2LVx1MDAzZW1kZXYub3BzID0gXHUwMDI2dml2aWRfbWVkaWFfb3BzO1xuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTYtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Mzc3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoIGZvciBNZWRpYSBDb250cm9sbGVyIEFQSSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZS4gVGhlIGNvcmUgb2YgdGhpcyBmaXggaXMgY2VudGVyZWQgYXJvdW5kIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgbWMtcmVxdWVzdC5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJLiBUaGUgc29sdXRpb24gaW52b2x2ZXMgYSBjcml0aWNhbCBtb2RpZmljYXRpb24gdG8gdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIOKAkyBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgKmJlZm9yZSogY2FsbGluZyBgcmVxX2ZyZWVgIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheSBhcm91bmQuIFRoaXMga2luZCBvZiBjaGFuZ2UgaXMgZXhhY3RseSB0aGUgc29ydCBvZiB0aGluZyB0aGF0IGNhbiBxdWlldGx5IGludHJvZHVjZSByZWdyZXNzaW9ucywgd2hpY2ggaXMgd2h5IHRoZXkgYXJlIHBhdGNoaW5nIGl0LgoKTm93LCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHZpdmlkLWNvcmUuY2AgZmlsZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgdml2aWQgdGVzdCBkcml2ZXIuIFRoZSBnb2FsIG9mIHRoZXNlIGNhbGxiYWNrcyBpcyB0byBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgYHY0bDJfZGV2YCBvYmplY3QuIEFkZGluZyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBjYWxsYmFja3Mgd2l0aGluIHRoZSBgdml2aWQtY29yZS5jYCBmaWxlIGlzIGludGVyZXN0aW5nIGFuZCBwb2ludHMgdG8gYSBkZWVwZXIgY29uY2Vybi4gVGhhdOKAmXMgcHJvYmFibHkgdGhlIHJlYXNvbiB0aGV5IG1lbnRpb25lZCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgd2l0aCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIEkgY2FuIGVhc2lseSBzZWUgaG93IHRoaXMgYmVjb21lcyByZWFjaGFibGUgaW4gbWFueSBkaWZmZXJlbnQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIHBhdGNoIHRvdWNoZXMgYm90aCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBhbmQgYSB0ZXN0IGRyaXZlciwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgbmV3IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSByb2J1c3QuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZXNlIHR3byBzeW1ib2xzIGFzIEkgZ28gdGhyb3VnaCB0aGlzOiBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGV4cGVjdGluZyB0byBiZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiBgbWMtcmVxdWVzdC5jYC4KCkZpbmFsbHksIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgSSYjMzk7bSBub3RpbmcgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zOiBgVklERU9fVklWSURgLCBgTUVESUFfQ09OVFJPTExFUmAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLiBUaGVzZSBjb25maWd1cmF0aW9ucyB3aWxsIGRpcmVjdGx5IGluZmx1ZW5jZSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBJdCYjMzk7cyBpbXBlcmF0aXZlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBtYy1yZXF1ZXN0LmNgIHRoYXQgY291bGQgYWxzbyBiZSBpbXBhY3RlZC4gQmVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTgxPXZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo4NTpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X3B1dCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04Ni1cbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0yNTQ9bWVkaWFfcmVxdWVzdF9nZXRfYnlfZmQoc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwgaW50IHJlcXVlc3RfZmQpXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg2LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4NzpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzU4PW1lZGlhX3JlcXVlc3Rfb2JqZWN0X2ZpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zNzktfVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2ZpbmQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzgxLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzgyPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM4NS19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzozODY6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM4Ny1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM4OD12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2luaXQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzk2LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjM5NzpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9pbml0KTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM5OT1pbnQgbWVkaWFfcmVxdWVzdF9vYmplY3RfYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxLFxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzMi19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo0MzM6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfYmluZCk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00MzQtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00MzU9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3ODpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQpO1xuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc5LVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NDgwPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfY29tcGxldGUoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjUwNDpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZSk7XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDUtXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzOC19XG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzk6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9tYW51YWxfY29tcGxldGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBNZWRpYSBSZXF1ZXN0IEFsbG9jYXRpb24qKgoKT2theSwgc28gYG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkYCBzZWVtcyBsaWtlIGEgc29saWQgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uIGhlcmU7IGFmdGVyIGFsbCwgaXQmIzM5O3MgYWJvdXQgcmV0cmlldmluZyBhIHJlcXVlc3QsIHdoaWNoIGlzIG9mdGVuIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIE5vdywgSSB0aG91Z2h0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBtaWdodCBiZSBhbm90aGVyIGltcG9ydGFudCBvbmUuLi4gYnV0IGhvbGQgb24sIGlzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uICpub3QqIGV4cG9ydGVkPyBUaGF0IGRvZXNuJiMzOTt0IHNlZW0gcmlnaHQuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYmVjYXVzZSB0aGF0IHdvdWxkIGNoYW5nZSB0aGluZ3Mgc2lnbmlmaWNhbnRseSBpZiB0cnVlLiBUaW1lIHRvIHZlcmlmeSBgbWVkaWFfcmVxdWVzdF9hbGxvY2Agb25jZSBtb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MDMKCQkJCQkJCW91dHB1dDogMTcxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIHN5bWJvbCBpbiBxdWVzdGlvbiBpc24mIzM5O3QgZXhwb3J0ZWQsIGJ1dCBpdCAqaXMqIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbi4gQW5kLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbWMtZGV2aWNlLmNgLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBTaW5jZSBpdCYjMzk7cyBjYWxsZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhhdCBjb250ZXh0LCBpdCBtZWFucyBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgZGVmaW5pdGVseSBhcHByb3ByaWF0ZSBmb3Igb3VyIG5lZWRzLgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgYXMgdGhlIGNvcmUgc3ltYm9scyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJJiMzOTtsbCBiZSBjb25jZW50cmF0aW5nIG9uIGhlcmUuIE5vdywgSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJREVPX1ZJVklEJiMzNDssCiAgICAmIzM0O01FRElBX0NPTlRST0xMRVImIzM0OywKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZWRpYV9yZXF1ZXN0X2FsbG9jJiMzNDssCiAgICAmIzM0O21lZGlhX3JlcXVlc3RfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTI6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGFmdGVyIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgVUFGIGlmIGByZXFfZnJlZWAgZHJvcHBlZCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIG1lZGlhIGRldmljZSwgY2F1c2luZyBgbWRldmAgdG8gYmUgZnJlZWQgYmVmb3JlIHRoZSBgYXRvbWljX2RlY2Agb3BlcmF0aW9uLiBUaGUgcGF0Y2ggcmVvcmRlcnMgdGhlc2Ugb3BlcmF0aW9ucyB0byBwcmV2ZW50IHRoZSBVQUYuIEFkZGl0aW9uYWxseSwgaXQgaW1wbGVtZW50cyBgcmVxX2FsbG9jYCBhbmQgYHJlcV9mcmVlYCBpbiB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSBgdjRsMl9kZXZgIHJlZmVyZW5jZSBjb3VudC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxuXG5UaGVyZWZvcmUsIHRoaXMgYnVnIGNsYXNzIChVQUYpIGlzIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCmluZGV4IDEzZTc3NjQ4ODA3YzIuLjU0YmIwOGU2NTc3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jCkBAIC03MSwxMSAmIzQzOzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAogCW1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTsKIAomIzQzOwlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIAlpZiAobWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZSkKIAkJbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpOwogCWVsc2UKIAkJa2ZyZWUocmVxKTsKLQlhdG9taWNfZGVjKCZhbXA7bWRldi0mZ3Q7bnVtX3JlcXVlc3RzKTsKIH0KIAogdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jCmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMKQEAgLTg2OSw2ICYjNDM7ODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB9CiAKICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUgomIzQzO3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7CiYjNDM7CXN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXE7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV9nZXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0MzsJcmV0dXJuIHJlcTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdml2aWRfcmVxX2ZyZWUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwomIzQzOwomIzQzOwlrZnJlZShyZXEpOwomIzQzOwl2NGwyX2RldmljZV9wdXQoJmFtcDtkZXYtJmd0O3Y0bDJfZGV2KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtJmd0O21kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpOwpAQCAtODgxLDYgJiM0Mzs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0gewomIzQzOwkucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLAomIzQzOwkucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSwKIAkucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLAogCS5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSwKIH07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTMxCgkJCQkJCQlvdXRwdXQ6IDMwMAoJCQkJCQkJdGhvdWdodHM6IDEyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWVkaWEgUmVxdWVzdCBMaWZlY3ljbGUgRml4KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aXRoaW4gdGhlIG1lZGlhIHJlcXVlc3QgaGFuZGxpbmcuIFRoZSBjaGFuZ2UgaW4gYG1jLXJlcXVlc3QuY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFdlJiMzOTtyZSBtb2RpZnlpbmcgdGhlIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgY29uY2VybmluZyBgYXRvbWljX2RlYygmYW1wO21kZXYtJmd0O251bV9yZXF1ZXN0cylgIGFuZCBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpYC4gIFRoZSBvcmlnaW5hbCBvcmRlciBwcmVzZW50ZWQgYSBwb3RlbnRpYWwgcHJvYmxlbTogaWYgYG1kZXYtJmd0O29wcy0mZ3Q7cmVxX2ZyZWVgIGZyZWVzIHRoZSBtZWRpYSBkZXZpY2UgKGBtZGV2YCkgKmJlZm9yZSogdGhlIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCwgd2UgaGF2ZSBhIGNsZWFyIHVzZS1hZnRlci1mcmVlLiBUaGUgc3Vic2VxdWVudCBgYXRvbWljX2RlY2Agd291bGQgYmUgb3BlcmF0aW5nIG9uIGEgZnJlZWQgb2JqZWN0LgoKVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgc2hpZnRpbmcgYGF0b21pY19kZWMoJmFtcDttZGV2LSZndDtudW1fcmVxdWVzdHMpYCAqYmVmb3JlKiBgbWRldi0mZ3Q7b3BzLSZndDtyZXFfZnJlZShyZXEpYC4gVGhhdOKAmXMgdGhlIGNvcmUgZml4OiBlbnN1cmluZyB0aGUgcmVmZXJlbmNlIGNvdW50IGlzIGRlY3JlbWVudGVkICpiZWZvcmUqIGFueSBwb3NzaWJsZSBkZWFsbG9jYXRpb24gb2NjdXJzLiAgSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgYnV0IGNydWNpYWwgZml4IHRvIHByZXZlbnQgdGhpcyB2ZXJ5IGNvbW1vbiB0eXBlIG9mIG1lbW9yeSBjb3JydXB0aW9uLgoKTm93LCB0aGUgYHZpdmlkLWNvcmUuY2AgY2hhbmdlcyBhcmUgaW50ZXJlc3RpbmcsIHNwZWNpZmljYWxseSB0aGUgYWRkaXRpb24gb2YgYHZpdmlkX3JlcV9hbGxvY2AgYW5kIGB2aXZpZF9yZXFfZnJlZWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYG1lZGlhX3JlcXVlc3RgIHN0cnVjdCBhbmQsIGNydWNpYWxseSwgdG8gbWFpbnRhaW4gdGhlIGB2NGwyX2RldmAgcmVmZXJlbmNlIGNvdW50LiAgVGhlIHVzZSBvZiBga3phbGxvY19vYmooKnJlcSlgIGlzIGEgc2xpZ2h0IHdyaW5rbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoYXQuIGBremFsbG9jX29iamA/IEFoLCBJIHNlZSwgcHJvYmFibHkgYSBtYWNybyBvciBhIHR5cG8gKG9yIG1heWJlIHNvbWV0aGluZyBjdXN0b20gaW4gdml2aWQgdGhhdCBJIGRvbiYjMzk7dCByZWNhbGwgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCkuIEJ1dCwgaW4gYW55IGNhc2UsIHRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIGFsbG9jYXRlIGFuZCB6ZXJvIHRoZSBtZW1vcnkuCgpFc3NlbnRpYWxseSwgYnkgaW1wbGVtZW50aW5nIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIHdpdGhpbiBgdml2aWRgLCB0aGV5IGFyZSBub3cgY29udHJvbGxpbmcgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiB0aGUgcmVxdWVzdCwgYW5kIGltcG9ydGFudGx5LCBnZXR0aW5nIGFuZCBwdXR0aW5nIGEgcmVmZXJlbmNlIG9uIHRoZSBgdjRsMl9kZXZgIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBUaGlzIHByZXZlbnRzIGB2NGwyX2RldmAgZnJvbSBiZWluZyBmcmVlZCBwcmVtYXR1cmVseSBpZiB0aGVyZSBhcmUgc3RpbGwgcmVxdWVzdHMgb3V0c3RhbmRpbmcuCgpUaGlzIGlzIGEgd2VsbC11bmRlcnN0b29kIHBhdHRlcm4gZm9yIG1hbmFnaW5nIG9iamVjdCBsaWZldGltZXMgd2hlbiBkZWFsaW5nIHdpdGggY2FsbGJhY2tzIHRoYXQgbWlnaHQgcmVsZWFzZSByZXNvdXJjZXMuIFRoZSBwYXRjaCBlc3NlbnRpYWxseSByZXNvbHZlcyBhbiBvYmplY3QgbGlmZXRpbWUgaXNzdWUuCgpDcnVjaWFsbHksIHRoZSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhc3BlY3QgaXMgb2J2aW91cy4gVGhpcyBraW5kIG9mIHVzZS1hZnRlci1mcmVlIGlzICpleGFjdGx5KiB3aGF0IEtBU0FOIGlzIGJ1aWx0IHRvIGRldGVjdC4gVGhpcyBwYXRjaCBmaXhlcyBhIGNsYXNzaWMgcmVmZXJlbmNlIGNvdW50aW5nL1VBRiBidWcsIHNvIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0ZWQgZm9yIGRldGVjdGluZyB0aGlzLgoKVGhlcmVmb3JlLCB0aGlzIGZpeCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGRvbWFpbiBvZiBLQVNBTi4gVGhlcmUmIzM5O3Mgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBmaWVsZHMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBiZSB1bmluaXRpYWxpemVkLCB0aGVyZSYjMzk7cyBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBwcmlvciBpbml0aWFsaXphdGlvbi4gSSBzZWUgbm8gbmVlZCBmb3IgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBmdXp6aW5nIGluIHRoaXMgY2FzZS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaXMgZXhwbGljaXRseSB6ZXJvZWQsIGFuZCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG1lbW9yeSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgZW5zdXJpbmcgYSByZWxlYXNlIGhhcHBlbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIFRoZSByb290IGNhdXNlIGlzIGEgdXNlLWFmdGVyLWZyZWUsIHBsYWluIGFuZCBzaW1wbGUsIGFuZCBLQVNBTiBoYXMgZ290IGl0IGNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byB0aGUgYG1lZGlhX3JlcXVlc3RgIGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJbiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKClgLCBgYXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cylgIHdhcyBwcmV2aW91c2x5IGNhbGxlZCBhZnRlciBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBhcmUgbm8gbmV3IGZpZWxkcyBhZGRlZCB0aGF0IGNvdWxkIGJlIGxlZnQgdW5pbml0aWFsaXplZCwgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb250cm9sIGZsb3cgY2hhbmdlcyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGluIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjbGFzcyAoVUFGKSBpcyBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byB0aGUgYG1lZGlhX3JlcXVlc3RgIGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJbiBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKClgLCBgYXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cylgIHdhcyBwcmV2aW91c2x5IGNhbGxlZCBhZnRlciBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmV0aW1lLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBhcmUgbm8gbmV3IGZpZWxkcyBhZGRlZCB0aGF0IGNvdWxkIGJlIGxlZnQgdW5pbml0aWFsaXplZCwgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb250cm9sIGZsb3cgY2hhbmdlcyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGluIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZC5cblxuVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjbGFzcyAoVUFGKSBpcyBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuMzY3NTM1MDA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNzAzMTQxNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJREVPX1ZJVklEXCIsXG4gICAgXCJNRURJQV9DT05UUk9MTEVSXCIsXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gICAgXCJtZWRpYV9yZXF1ZXN0X3B1dFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ5IGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCBiZWZvcmUgY2FsbGluZyByZXFfZnJlZS4gSXQgYWxzbyBhZGRzIHJlcV9hbGxvYyBhbmQgcmVxX2ZyZWUgY2FsbGJhY2tzIHRvIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdjRsMl9kZXYgb2JqZWN0LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgbG9naWMgYW5kIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciwgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuMzY3NTQyMjc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYyODM1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcXG5pbmRleCAxM2U3NzY0ODgwN2MyLi41NGJiMDhlNjU3NzQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXFxuKysrIGIvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcXG5AQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4gXFxuIFxcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcXG4gXFxuK1xcdGF0b21pY19kZWMoXFx1MDAyNm1kZXYtXFx1MDAzZW51bV9yZXF1ZXN0cyk7XFxuIFxcdGlmIChtZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJlcV9mcmVlKVxcbiBcXHRcXHRtZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJlcV9mcmVlKHJlcSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0a2ZyZWUocmVxKTtcXG4tXFx0YXRvbWljX2RlYyhcXHUwMDI2bWRldi1cXHUwMDNlbnVtX3JlcXVlc3RzKTtcXG4gfVxcbiBcXG4gdm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xcbkBAIC04NjksNiArODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuIH1cXG4gXFxuICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxcbitzdGF0aWMgc3RydWN0IG1lZGlhX3JlcXVlc3QgKnZpdmlkX3JlcV9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2KVxcbit7XFxuK1xcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcXG4rXFx0c3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcTtcXG4rXFxuK1xcdHJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHR2NGwyX2RldmljZV9nZXQoXFx1MDAyNmRldi1cXHUwMDNldjRsMl9kZXYpO1xcbitcXHRyZXR1cm4gcmVxO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbit7XFxuK1xcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXFx1MDAzZW1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xcbitcXG4rXFx0a2ZyZWUocmVxKTtcXG4rXFx0djRsMl9kZXZpY2VfcHV0KFxcdTAwMjZkZXYtXFx1MDAzZXY0bDJfZGV2KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YocmVxLVxcdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcXG5AQCAtODgxLDYgKzkwMiw4IEBAIHN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XFxuK1xcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXFxuK1xcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxcbiBcXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxcbiBcXHQucmVxX3F1ZXVlID0gdmIyX3JlcXVlc3RfcXVldWUsXFxuIH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjQyLjg0NDczODQyNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MzAzNzU3OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSURFT19WSVZJRFwiLFxuICAgIFwiTUVESUFfQ09OVFJPTExFUlwiLFxuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVkaWFfcmVxdWVzdF9hbGxvY1wiLFxuICAgIFwibWVkaWFfcmVxdWVzdF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWVkaWEgY29udHJvbGxlciByZXF1ZXN0IEFQSSB0byBmaXggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnkgZGVjcmVtZW50aW5nIHRoZSByZXF1ZXN0IGNvdW50IGJlZm9yZSBjYWxsaW5nIHJlcV9mcmVlLiBJdCBhbHNvIGFkZHMgcmVxX2FsbG9jIGFuZCByZXFfZnJlZSBjYWxsYmFja3MgdG8gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2NGwyX2RldiBvYmplY3QuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbWVkaWEgY29udHJvbGxlciBsb2dpYyBhbmQgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgcmVxdWVzdCBsaWZlY3ljbGUgYXJlIGhhbmRsZWQgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGEzZTkxZDRhMGY5MTlhYzBkMjA1M2FmOGM4YzljNjhjMTVmMzk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTI6NTI6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG5pbmRleCAxM2U3NzY0ODgwN2MyLi41NGJiMDhlNjU3NzQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG5AQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiBcbiBcdG1lZGlhX3JlcXVlc3RfY2xlYW4ocmVxKTtcbiBcbitcdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIFx0aWYgKG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9mcmVlKVxuIFx0XHRtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpO1xuIFx0ZWxzZVxuIFx0XHRrZnJlZShyZXEpO1xuLVx0YXRvbWljX2RlYyhcdTAwMjZtZGV2LVx1MDAzZW51bV9yZXF1ZXN0cyk7XG4gfVxuIFxuIHZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbmluZGV4IDYyY2ZiNWZlYjJjZjUuLjIzNzRmNDg2NTE2OGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1xuQEAgLTg2OSw2ICs4NjksMjcgQEAgc3RhdGljIHZvaWQgdml2aWRfZGV2X3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19NRURJQV9DT05UUk9MTEVSXG4rc3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcbit7XG4rXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG4rXHRzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxO1xuK1xuK1x0cmVxID0ga3phbGxvY19vYmooKnJlcSk7XG4rXHRpZiAoIXJlcSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHR2NGwyX2RldmljZV9nZXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbitcdHJldHVybiByZXE7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZpdmlkX3JlcV9mcmVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG4re1xuK1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXHR2NGwyX2RldmljZV9wdXQoXHUwMDI2ZGV2LVx1MDAzZXY0bDJfZGV2KTtcbit9XG4rXG4gc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbiB7XG4gXHRzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYgPSBjb250YWluZXJfb2YocmVxLVx1MDAzZW1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xuQEAgLTg4MSw2ICs5MDIsOCBAQCBzdGF0aWMgaW50IHZpdmlkX3JlcV92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xuK1x0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcbitcdC5yZXFfZnJlZSA9IHZpdmlkX3JlcV9mcmVlLFxuIFx0LnJlcV92YWxpZGF0ZSA9IHZpdmlkX3JlcV92YWxpZGF0ZSxcbiBcdC5yZXFfcXVldWUgPSB2YjJfcmVxdWVzdF9xdWV1ZSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTI6NDIuODQ0NzM5OTM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5ODEyNjgyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE1lZGlhIENvbnRyb2xsZXIgYW5kIFZJVklEIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBoYW5kbGluZyBhbmQsIHNwZWNpZmljYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBWSVZJRCB0ZXN0IGRyaXZlci4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZTogYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2Agbm93IGRlY3JlbWVudHMgYG1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzYCAqYmVmb3JlKiBjYWxsaW5nIHRoZSByZXF1ZXN0LXNwZWNpZmljIGZyZWUgZnVuY3Rpb24gKGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYCkuIFRoZXkndmUgYWxzbyBhZGRlZCBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCB0byBgdml2aWQtY29yZS5jYCBhbmQgaG9va2VkIHRoZW0gdXAgdG8gdGhlIGB2aXZpZF9tZWRpYV9vcHNgLlxuXG5SaWdodCBhd2F5LCB0aGUgcmVhc29uIGZvciB0aGUgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgY2hhbmdlIGNsaWNrczogaXQncyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24uIElmIGByZXFfZnJlZWAgY291bGQgZHJvcCB0aGUgKmxhc3QqIHJlZmVyZW5jZSB0byBgbWRldmAgKmR1cmluZyogdGhlIGZyZWUgb3BlcmF0aW9uLCB0aGVuIGRlY3JlbWVudGluZyB0aGUgY291bnRlciBhZnRlciBjYWxsaW5nIGl0IHdvdWxkIGJlIHRvbyBsYXRlLiBUaGUgY29kZSBhY2Nlc3NlcyBgbWRldmAgYXMgYW4gYXRvbWljIGNvdW50ZXIsIHdoaWNoIHNlZW1zIHNhZmUuIEJ1dCwgaWYgYSBgcmVxX2ZyZWVgIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgb24gYSB2NGwyIGRldmljZSB0aGVuIGl0IGNvdWxkIGluIHR1cm4gZnJlZSBgdml2aWRfZGV2YCwgd2hpY2ggd291bGQgZnJlZSBgbWRldmAuIElmIHRoaXMgaGFwcGVucywgdGhlbiBkZWNyZW1lbnRpbmcgdGhlIGF0b21pYyBjb3VudGVyIGFmdGVyd2FyZCBiZWNvbWVzIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5LiBTaGlmdGluZyB0aGUgZGVjcmVtZW50IGVuc3VyZXMgdGhpcyBjYW4ndCBoYXBwZW4uIEJyaWxsaWFudCFcblxuVGhlIGB2aXZpZGAgZHJpdmVyIGNoYW5nZXMgc3VwcG9ydCB0aGlzIGZpeC4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBgdml2aWRfcmVxX2FsbG9jYCBuZWVkcyB0byBncmFiIGEgcmVmZXJlbmNlIHRvIHRoZSBgdjRsMl9kZXZgIGFuZCBgdml2aWRfcmVxX2ZyZWVgIG5lZWRzIHRvIHJlbGVhc2UgaXQuIFRoaXMgZXhwbGljaXRseSB0aWVzIHRoZSBsaWZldGltZSBvZiB0aGUgYHZpdmlkX2RldmAgKGFuZCB0aGVyZWZvcmUgYG1kZXZgKSB0byB0aGUgZXhpc3RlbmNlIG9mIGFjdGl2ZSByZXF1ZXN0cy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IHNoaWZ0IGluIGhvdyByZXF1ZXN0cyBhcmUgbWFuYWdlZCBhdCB0aGUgbWVkaWEgY29udHJvbGxlciBsZXZlbCwgYW5kIGl0IGhhcyBkaXJlY3QgaW1wbGljYXRpb25zIGZvciB0aGUgVklWSUQgZHJpdmVyLiBUaGUgVklWSUQgZHJpdmVyLCBiZWluZyBhIHZpcnR1YWwgdmlkZW8gZHJpdmVyLCBtYWtlcyBpdCBlc3BlY2lhbGx5IGFwcGVhbGluZyB0byBmdXp6IHRoaXMgY2hhbmdlLiBJdCdzIGEgbmljZSwgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMuXG5cbk5vdywgbGV0J3MgZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBJIG5lZWQgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBmb3IgdGhlIG1lZGlhIGNvbnRyb2xsZXIgc2lkZSBhbmQgYENPTkZJR19WSURFT19WSVZJRGAgZm9yIHRoZSBWSVZJRCBkcml2ZXIgaXRzZWxmLiBJIHNlZSB0aG9zZSBtZW50aW9uZWQgaW4gYHZpdmlkLWNvcmUuY2Agc28gSSBjYW4gY29uZmlybSBteSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU1LjgyNjAxMTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDE4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19WSVZJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI6Y29uZmlnIFZJREVPX1ZJVklEXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjI1OmNvbmZpZyBWSURFT19WSVZJRF9DRUNcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIkVuYWJsZSBDRUMgZW11bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzM6Y29uZmlnIFZJREVPX1ZJVklEX09TRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiRW5hYmxlIEZyYW1lYnVmZmVyIGZvciB0ZXN0aW5nIE91dHB1dCBPdmVybGF5XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjQzOmNvbmZpZyBWSURFT19WSVZJRF9NQVhfREVWU1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Mjo1NS44NzcwMzU5MzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM3ODgwMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgaXNzdWUgYXQgaGFuZCBsaWtlbHkgaW52b2x2ZXMgdGhlIG1lZGlhIHBsYXliYWNrIG9yIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBNRURJQV9DT05UUk9MTEVSYCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY2VudHJhbCBzZXR0aW5ncyBkaWN0YXRpbmcgaG93IHRoZSBhcHBsaWNhdGlvbiBpbnRlcmZhY2VzIHdpdGggZXh0ZXJuYWwgbWVkaWEgZGV2aWNlcywgb3IgaGFuZGxlcyBpbnRlcm5hbCBwbGF5YmFjayBzY2VuYXJpb3MuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiBob3cgd2UncmUgZGVmaW5pbmcgdGhlIGNvbnRyb2xsZXIncyBiZWhhdmlvci4gVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMgdGhlIGNyaXRpY2FsIHNldHRpbmdzIGdvdmVybmluZyBjb250cm9sIG9mIG1lZGlhIHBsYXliYWNrIGFuZCBtdXN0IGJlIGNhcmVmdWxseSByZXZpZXdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU5LjQxNDkxODUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTc0NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRURJQV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWc9MTYwPWNvbmZpZyBWSURFT19ERVZcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjktXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE3MDpjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNzEtXFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUyOjU5LjQ2MDQ5ODQwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzQ0ODM0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkNoZWNraW5nIHRoZSBgTUVESUFfU1VQUE9SVGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgYE1FRElBX1NVUFBPUlRgIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgZm91bmRhdGlvbiwgZm9yIGhvdyB3ZSdyZSBoYW5kbGluZyBtdWx0aW1lZGlhLCBzbyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIHRoZSB3YXkgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IGRldmlhdGlvbnMgYXQgdGhpcyBlYXJseSBzdGFnZSBjYW4gbGVhZCB0byBjYXNjYWRpbmcgaXNzdWVzIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzowMi40MzQ5ODQ2MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NjM3MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjAyLjQ4MDU1Njc5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTkyMjYwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIENoZWNrcG9pbnQ6IE1FRElBXFxfVEVTVFxcX1NVUFBPUlQqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gTXkgaW5zdGluY3QgaGVyZSBpcyB0byBpbW1lZGlhdGVseSBleGFtaW5lIHRoZSBgTUVESUFfVEVTVF9TVVBQT1JUYCBmbGFnIG9yIHZhcmlhYmxlLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2V5IGNvbmZpZ3VyYXRpb24gZWxlbWVudCwgcG9zc2libHkgYSBkZWZpbmVkIGNvbnN0YW50IG9yIGEgZmVhdHVyZSBmbGFnLCB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgY2VydGFpbiBtZWRpYS1yZWxhdGVkIHRlc3QgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJdCdzIGEgZnVuZGFtZW50YWwgZGVjaXNpb24gcG9pbnQsIGFjdGluZyBhcyBhIGdhdGV3YXkgdG8gcnVubmluZyB0ZXN0IHN1aXRlcy4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBuZXh0IHN0ZXBzIGVudGlyZWx5IGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhpcyB2YXJpYWJsZS4gVGhlIHdob2xlIG1lZGlhIHRlc3RpbmcgcHJvY2VzcyBtYXkgYmUgc2hvcnQtY2lyY3VpdGVkIGlmIHRoZSB2YXJpYWJsZSBpcyBkaXNhYmxlZC4gVGhlIHZhcmlhYmxlIG1pZ2h0IGFmZmVjdCBvdGhlciBwcm9jZXNzZXMsIHNvIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjA1LjY3OTc4NTA2NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMjM4NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX1RFU1RfU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTEyNT1jb25maWcgTUVESUFfUExBVEZPUk1fU1VQUE9SVFxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTM5OmNvbmZpZyBNRURJQV9URVNUX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTQwLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MDUuNzUzMDE2Mjk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzQ2Nzc3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogVklERU9fVklWSUQqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIG1ha2Ugc3VyZSB0aGUgYFZJREVPX1ZJVklEYCBlbnZpcm9ubWVudCBvciBtb2R1bGUgaXMgcnVubmluZyBjbGVhbi4gV2hhdCBhcmUgdGhlIGN1cnJlbnQgZGVwZW5kZW5jaWVzP1wiIEknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwgc3VzcGVjdHM6IHRoZSBncmFwaGljcyBwcm9jZXNzaW5nIHVuaXRzLCB0aGUgdmlkZW8gY29kZWMgbGlicmFyaWVzIChGRm1wZWcsIG1heWJlPyksIHRoZSBkcml2ZXIgdmVyc2lvbnMsIGFuZCwgb2YgY291cnNlLCBhbnkgc3BlY2lmaWMgZnJhbWV3b3JrIHZlcnNpb25zIHdlJ3JlIHRpZWQgdG8sIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBzb21lIGludGVybmFsIHBpcGVsaW5lIG9yIGEgdGhpcmQgcGFydHkgc3lzdGVtIHRoYXQgd2UgY2FsbCB1cG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaW52b2x2ZWQgaXMgY29tcGF0aWJsZSBhdCBhbGwgbGV2ZWxzLiBBcmUgd2UgcHVsbGluZyB0aGUgbGF0ZXN0IGRlcGVuZGVuY2llcyBvciBhcmUgd2UgcGlubmluZyBkb3duIGEgc3RhYmxlIHNldD8gSGF2ZSBhbnkgdXBkYXRlcyBoYXBwZW5lZCByZWNlbnRseSB0aGF0IG1pZ2h0IGhhdmUgY2F1c2VkIHJlZ3Jlc3Npb24/IEnigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBidWlsZCBsb2dzLCBhbmQgcG90ZW50aWFsbHkgdGVzdCBhZ2FpbnN0IGEga25vd24tZ29vZCBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGhpbiB0aG9zZSBkZXBlbmRlbmNpZXMuIEknbSB0aGlua2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgY29tcGF0aWJpbGl0eSBxdWlya3MsIG9yIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MDkuNDg3Njk2NzMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzOTk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTI9Y29uZmlnIFZJREVPX1ZJVklEXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFZpZGVvIFRlc3QgRHJpdmVyXFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIFZJREVPX0RFViBcXHUwMDI2XFx1MDAyNiAhU1BBUkMzMiBcXHUwMDI2XFx1MDAyNiAhU1BBUkM2NFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NTpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTYtXFx0c2VsZWN0IEZPTlRfU1VQUE9SVFxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yNT1jb25maWcgVklERU9fVklWSURfQ0VDXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJFbmFibGUgQ0VDIGVtdWxhdGlvbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6Mjc6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMjgtXFx0c2VsZWN0IENFQ19DT1JFXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTMzPWNvbmZpZyBWSURFT19WSVZJRF9PU0RcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnLTM0LVxcdGJvb2wgXFxcIkVuYWJsZSBGcmFtZWJ1ZmZlciBmb3IgdGVzdGluZyBPdXRwdXQgT3ZlcmxheVxcXCJcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjM1OlxcdGRlcGVuZHMgb24gVklERU9fVklWSUQgXFx1MDAyNlxcdTAwMjYgRkJfQ09SRVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6MzY6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRD1tIHx8IEZCX0NPUkU9eVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctMzctXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnPTQzPWNvbmZpZyBWSURFT19WSVZJRF9NQVhfREVWU1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBWSURFT19WSVZJRFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWctNDYtXFx0ZGVmYXVsdCBcXFwiNjRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjA5LjUzMzI0MzA1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjkwMTA4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlkZW8gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHZpZGVvIGRyaXZlciBhbmQgaW1tZWRpYXRlbHkgc2VlIHNvbWUga2V5IGRlcGVuZGVuY2llcyBhdCBwbGF5LiBUaGUgXCJ2aXZpZFwiIGRyaXZlciwgaW4gcGFydGljdWxhciwgaGluZ2VzIG9uIGBWSURFT19ERVZgIGFuZCBgSEFTX0RNQWAuIFRoYXQncyBub3QgdW5leHBlY3RlZDsgYFZJREVPX0RFVmAgaXMgcHJldHR5IGZ1bmRhbWVudGFsIGZvciB2aWRlbyBkZXZpY2VzLCBhbmQgRE1BIGlzIGNydWNpYWwgZm9yIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyIGluIG1vc3Qgb2YgdGhlc2UgYXBwbGljYXRpb25zLlxuXG5Ob3csIGBWSURFT19ERVZgIGl0c2VsZiBpc24ndCBhIGZyZWViaWUuIEl0J3MgZGVwZW5kZW50IG9uIGBNRURJQV9TVVBQT1JUYC4gTWFrZXMgc2Vuc2UsIHRoZSBiYXNlIG1lZGlhIGluZnJhc3RydWN0dXJlIGhhcyB0byBiZSB0aGVyZSBmb3IgYW55dGhpbmcgdmlkZW8gcmVsYXRlZCB0byB3b3JrLlxuXG5CdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIGxldCBtZSBqdXN0IHF1aWNrbHkgZ2xhbmNlIGF0IGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBtYWtlIHN1cmUgaXQgaXMgaW4gcGxhY2U7IGl0IGlzIHJlbGV2YW50IHRvIHRoZSBtZWRpYSBjb250cm9sbGVyJ3MgcmVxdWVzdCwgYW5kIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGNvbnNpZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTY4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MTMuMjIzMzU0Mzg3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk3MTYyNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzoxMy4yNjgzMzIyNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3ODgwNzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQVBJIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCBkZWZpbml0aW9uLi4uIGJ1dCBob2xkIG9uIGEgc2Vjb25kLiBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIGl0J3Mgbm90IHdoZXJlIEkgaW5pdGlhbGx5IGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGNvbnN0YW50LCBlc3BlY2lhbGx5IHdpdGggYW4gQVBJLXJlbGF0ZWQgbmFtZSwgY291bGQgZWFzaWx5IGJlIGFic3RyYWN0ZWQgb3V0IGFuZCBkZWZpbmVkIGluIGEgY29tcGxldGVseSBkaWZmZXJlbnQgbW9kdWxlIG9yIGhlYWRlciBmaWxlIHRoYW4gSSdtIGN1cnJlbnRseSBsb29raW5nIGF0LiBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2NvcGUgb2YgbXkgc2VhcmNoLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwcm9qZWN0J3MgaW5jbHVkZSBwYXRocyBhbmQgbG9vayBmb3IgYSBtb3JlIGRlZGljYXRlZCBBUEktcmVsYXRlZCBoZWFkZXIuIEl0J3MgYSBjb21tb24gcGF0dGVybiB0byBrZWVwIEFQSS1zcGVjaWZpYyBkZWZpbml0aW9ucyBzZXBhcmF0ZSBmb3IgY2xhcml0eSwgbWFpbnRhaW5hYmlsaXR5LCBhbmQgdmVyc2lvbmluZyBjb250cm9sLiBMZXQncyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkgaGF2ZSB0byBjaGFuZ2UgbXkgc2VhcmNoIHRvIGJlIG1vcmUgc3lzdGVtaWMgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MTguNDQ3MTQyNjg2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQxMDY4NDkxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjIwLjE4ODIxNjg2N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg0MzY3OTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEZWNpcGhlcmluZyB0aGUgTWVkaWEgQ29udHJvbGxlciBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIHVzaW5nIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCB0byBnYXRlIHNvbWUgZnVuY3Rpb25hbGl0eS4gQnV0LCBubywgdGhhdCdzIG5vdCBpdC4gVGhlIHBhdGNoIGNsZWFybHkgcmVsaWVzIG9uIGFuIGAjaWZkZWYgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGNvbnN0cnVjdC4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiB0aGUgY29tcGlsYXRpb24gb2YgYG1jLXJlcXVlc3QuY2AgZGVwZW5kcyBvbi4gV2hhdCdzIHRoZSB0cmlnZ2VyaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgIG1hY3JvIHdhc24ndCByaWdodCwgc28gbm93IEkgbmVlZCB0byBiYWNrdHJhY2sgYW5kIHRyYWNlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgdGhpcyBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MjQuMDcyNTg4Mzk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODEyNDk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYy1yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcXHQ6PSBtYy1kZXZpY2UubyBtYy1kZXZub2RlLm8gbWMtZW50aXR5Lm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGU6NDpcXHQgICBtYy1yZXF1ZXN0Lm9cXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjI0LjEyMDcyMDQxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc4NDc2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZWAqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVgLiBUaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpczogKndoYXQgYWN0dWFsbHkgZGljdGF0ZXMgaXRzIGNvbXBpbGF0aW9uPyogSXQncyBub3QgdXN1YWxseSBhIHN0YW5kYWxvbmUgdGFyZ2V0LiBJdCdzIGFsbW9zdCBhbHdheXMgYnVpbHQgYXMgcGFydCBvZiBhIGxhcmdlciBtdWx0aW1lZGlhIG9yIGtlcm5lbCBtb2R1bGUgYnVpbGQgcHJvY2Vzcy4gU28sIEkgbmVlZCB0byB0cmFjZSB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSdtIHRoaW5raW5nLCBpcyBpdCB0aWVkIHRvIHRoZSBvdmVyYWxsIGBLY29uZmlnYCBmb3IgdGhlIG1lZGlhIHN1YnN5c3RlbSwgb3Igc3BlY2lmaWMgZmVhdHVyZXMgd2l0aGluPyBBcmUgdGhlcmUgYW55IHRvcC1sZXZlbCBgTWFrZWZpbGVgcyB0aGF0IGluY2x1ZGUgaXQgZGlyZWN0bHk/IE9yLCBpcyBpdCBpbmNsdWRlZCB2aWEgc29tZSBnZW5lcmljIHJ1bGVzIG9yIHZhcmlhYmxlcywgbGlrZSBgb2JqLSQoQ09ORklHX1NPTUVUSElORylgP1xuXG5JJ20gcHJvYmFibHkgZ29pbmcgdG8gbmVlZCB0byBsb29rIGF0IHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMgdW5kZXIgYGRyaXZlcnMvbWVkaWFgLCBhbmQgbWF5YmUgZXZlbiBoaWdoZXIgdXAgaW4gdGhlIGtlcm5lbCdzIHNvdXJjZSB0cmVlLCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgYE1ha2VmaWxlYC4gSSdsbCBoYXZlIHRvIGNvbnNpZGVyIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBgQ09ORklHX2AgZmxhZ3MgYW5kIHRoZWlyIGRlcGVuZGVuY2llcywgYXMgd2VsbCBhcyBhbnkgb3RoZXIgaW5kaXJlY3QgbWVjaGFuaXNtcy4gVGhlcmUgYXJlIGRlZmluaXRlbHkgYSBsb3Qgb2YgYW5nbGVzIHRvIGNvbnNpZGVyLiBUaGUgd2hvbGUgcG9pbnQgaXMsIHdoYXQgdHJpZ2dlcnMgaXQgdG8gZ2V0IGJ1aWx0LCBhbmQgaG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MjguMTk5MjAwMDkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjEwNjM2NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL01ha2VmaWxlPTE2PWlmZXEgKCQoQ09ORklHX01FRElBX0NPTlRST0xMRVIpLHkpXFxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZToxNzogIG9iai0kKENPTkZJR19NRURJQV9TVVBQT1JUKSArPSBtYy9cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTE4LWVuZGlmXFxuLS1cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19DRUNfQ09SRSkgKz0gY2VjL1xcbi0tXFxuZHJpdmVycy9tZWRpYS9NYWtlZmlsZS0zMS1cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlOjMyOm9iai15ICs9IGNvbW1vbi8gcGxhdGZvcm0vIHBjaS8gdXNiLyBtbWMvIGZpcmV3aXJlLyBzcGkvIHRlc3QtZHJpdmVycy9cXG5kcml2ZXJzL21lZGlhL01ha2VmaWxlLTMzLW9iai0kKENPTkZJR19WSURFT19ERVYpICs9IHJhZGlvL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1MzoyOC41NjAyNzA2MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1NjA1NDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIGNvbnRleHQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBNZWRpYSBTdXBwb3J0KipcblxuQWxyaWdodCwgbGV0IG1lIHF1aWNrbHkgc3VtbWFyaXplIHdoYXQgSSdtIGxvb2tpbmcgYXQuIEZpcnN0LCB0byBnZXQgYW55IG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBnb2luZywgSSBrbm93IEknbGwgbmVlZCBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGFuZCBgQ09ORklHX01FRElBX1NVUFBPUlRgIGVuYWJsZWQuIFRoZXkncmUgcHJldHR5IG11Y2ggZnVuZGFtZW50YWwgdG8gdGhlIHdob2xlIG1lZGlhIHN1YnN5c3RlbS4gQW5kIHRoZW4sIHNwZWNpZmljYWxseSBmb3IgdGhlIHZpdmlkIGRyaXZlciwgYENPTkZJR19WSURFT19WSVZJRGAgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIG1ha2VzIHNlbnNlIHNpbmNlIHRoYXQgZW5hYmxlcyB0aGUgZHJpdmVyIGl0c2VsZi4gQWxzbywgbmF0dXJhbGx5LCBgQ09ORklHX1ZJREVPX0RFVmAgaXMgcmVxdWlyZWQgYmVjYXVzZSwgd2VsbCwgdml2aWQgaXMgYSB2aWRlbyBkZXZpY2UhIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGFib3V0IGBDT05GSUdfTUVESUFfVEVTVF9TVVBQT1JUYD8gVGhlIG5vdGVzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBuZWVkZWQgZm9yIHRlc3QgZHJpdmVycywgYnV0IHRvIGJlIHN1cmUsIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9gIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGV4cGxpY2l0bHkuIEdvdHRhIGJlIHByZWNpc2UgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg4MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjM1LjMxNjMyNzM4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1NjIwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidml2aWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX1ZJREVPX1ZJTUMpICs9IHZpbWMvXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1ZJREVPX1ZJVklEKSArPSB2aXZpZC9cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfVklERU9fVklTTCkgKz0gdmlzbC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6MzUuMzYzODkzOTM2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjY1NDE2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVklWSUQgRHJpdmVyIEJ1aWxkIGFuZCBSZXNvdXJjZSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTWFrZWZpbGVgIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVyc2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGdldHMgaW5jbHVkZWQgdW5jb25kaXRpb25hbGx5LiBJbnRlcmVzdGluZy4gV2UgaGF2ZSBgb2JqLXkgKz0gY29tbW9uLyBwbGF0Zm9ybS8gcGNpLyB1c2IvIG1tYy8gZmlyZXdpcmUvIHNwaS8gdGVzdC1kcml2ZXJzL2AsIG1lYW5pbmcgdGhhdCBhcyBsb25nIGFzIHRoZSBtb2R1bGUgaXMgYmVpbmcgYnVpbHQgYXQgYWxsLCB0aGlzIHdob2xlIHRyZWUgaXMgaW5jbHVkZWQuIFRoYXQgbWVhbnMgZW5hYmxpbmcgYENPTkZJR19WSURFT19WSVZJRGAgYWxvbmUgaXMgc3VmZmljaWVudCB0byBwdWxsIGV2ZXJ5dGhpbmcgaW4uIEdvdCBpdC5cblxuTm93LCBteSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9mIHJlc291cmNlcyB3aXRoaW4gdGhpcyBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgdml2aWQtY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIGB2aXZpZF9yZXFfYWxsb2NgIGFuZCBgdml2aWRfcmVxX2ZyZWVgLiBUaG9zZSBhcmUga2V5IHN5bWJvbHMuIFdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBsb29rIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHJlcXVlc3QgaGFuZGxpbmcgaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIC0gYW5kIHRoYXQgbWFrZXMgbWUgdGhpbmsgb2YgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaW4gYG1jLXJlcXVlc3QuY2AuXG5cbkFoYSwgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgaXMgYHN0YXRpY2AuIFRoYXTigJlzIGdvb2QgdG8ga25vdy4gVGhlIHNpZ25hdHVyZSBpcyBgc3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIHNlZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGlzIGV4cG9ydGVkISBUaGF04oCZcyB1bmV4cGVjdGVkLiBJdCdzIGRlZmluZWQgYXMgYHZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlgLiBPa2F5LCBsZXQgbWUgcGl2b3Qgb3ZlciB0byBgbWMtcmVxdWVzdC5jYCBhZ2FpbiwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB1c2FnZSBvZiBgbWVkaWFfcmVxdWVzdF9wdXRgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlZmNvdW50aW5nIGFuZCByZXNvdXJjZSBsaWZlY3ljbGUgYXJlIG1hbmFnZWQgd2l0aCB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjQ1LjYyOTMxMzE0MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMTk2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVkaWFfcmVxdWVzdF9wdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NjE9c3RhdGljIHZvaWQgbWVkaWFfcmVxdWVzdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODAtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODE6dm9pZCBtZWRpYV9yZXF1ZXN0X3B1dChzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgyLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg0LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo4NTpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X3B1dCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtODYtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9ODc9c3RhdGljIGludCBtZWRpYV9yZXF1ZXN0X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTAtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6OTE6XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy05Mi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTEyMT1zdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsX3F1ZXVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xNDgtXFx0XFx0XFx0cmVxLVxcdTAwM2VkZWJ1Z19zdHIsIG1lZGlhX3JlcXVlc3Rfc3RhdGVfc3RyKHN0YXRlKSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTQ5OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTUwLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWRldi1cXHUwMDNlcmVxX3F1ZXVlX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4My1cXHRcXHRcXHRyZXEtXFx1MDAzZWRlYnVnX3N0ciwgcmV0KTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoxODQ6XFx0XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xODUtXFx0fVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NDM1PXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfdW5iaW5kKHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc1LVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDc2OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNDc3LX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQ4MD12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2NvbXBsZXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAxLVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTAyOlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTAzLX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTUwNj12b2lkIG1lZGlhX3JlcXVlc3RfbWFudWFsX2NvbXBsZXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzYtXFx0aWYgKGNvbXBsZXRlZClcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzo1Mzc6XFx0XFx0bWVkaWFfcmVxdWVzdF9wdXQocmVxKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Mzo0NS42OTg0Mzc1MjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MzI2ODIzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRm9jdXMgUG9pbnRzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBiYXNlZCBvbiB3aGF0IEkndmUgYmVlbiBjb25zaWRlcmluZyBsYXRlbHksIHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBzb2xpZCBhbmNob3IgcG9pbnQgZm9yIGRpdmluZyBkZWVwZXIgaW50byB0aGlzIGFyZWEuIEl0J3Mgb2Z0ZW4gYSBrZXkgZnVuY3Rpb24gd2hlbiB0aGlua2luZyBhYm91dCBtZWRpYSByZXF1ZXN0cy4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgc29tZSBvZiBteSBpbnZlc3RpZ2F0aW9uIHRoZXJlLiBBbHNvLCBkb24ndCBmb3JnZXQgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUgaXMgbGlrZWx5IHJlbGV2YW50LCBhbmQgbWF5IHBsYXkgYW4gaW1wb3J0YW50IHJvbGUsIHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHJlcXVlc3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjczLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTM6NDguNzcxNzA4NTQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTI4Nz1FWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg4LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI4OTppbnQgbWVkaWFfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCBpbnQgKmFsbG9jX2ZkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI5MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjUzOjQ4LjgxNjc4MTM2MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzc3NTgxNDc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVml2aWQgQ29yZSdzIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYHZpdmlkLWNvcmUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYCBhcmUgc3RhdGljLCB3aGljaCBsaW1pdHMgdGhlaXIgdXNlIGFzIGZvY3VzIHN5bWJvbHMsIHVuZm9ydHVuYXRlbHkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFuZCBob3cgdGhleSdyZSB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmV4cG9zZWQqIGZyb20gdGhpcyBtb2R1bGUuXG5cbkxldCdzIHNlZeKApiBJIGtub3cgdGhhdCBgdml2aWRfcmVxX2FsbG9jYCBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCwgd2hpY2ggaW4gdHVybiBjYWxscyBpdCB2aWEgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9hbGxvY2AuIFNpbWlsYXJseSwgYHZpdmlkX3JlcV9mcmVlYCBnZXRzIGNhbGxlZCBieSBgbWVkaWFfcmVxdWVzdF9yZWxlYXNlYCBhZnRlciBnb2luZyB0aHJvdWdoIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZWAuIFNvLCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAgc2VlbSBsaWtlIG15IGtleSBlbnRyeSBwb2ludHMgYmVjYXVzZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGNhbGxzIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2VgLiBHb29kLiBUaGF0IGdldHMgbWUgd2hlcmUgSSBuZWVkIHRvIGJlLlxuXG5CdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4gSSBhbHNvIHNlZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgYGlvY3RsYCBmdW5jdGlvbnMgbGlrZSBgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZWAgYW5kIGBtZWRpYV9yZXF1ZXN0X2lvY3RsYCB0aGF0IGNvdWxkIGFsc28gYmUgZW50cnkgcG9pbnRzLiBUaGUgb3RoZXIgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSByZWxldmFudCBpcyBgbWVkaWFfcmVxdWVzdF9jbG9zZWAuIExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjEyLjU5MjU5ODEyOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Mzk3NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVkaWFfcmVxdWVzdF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz05NT1zdGF0aWMgX19wb2xsX3QgbWVkaWFfcmVxdWVzdF9wb2xsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjEyMTpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsX3F1ZXVlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTIyLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE4OS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoxOTA6c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9yZWluaXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjI3LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIyODpzdGF0aWMgbG9uZyBtZWRpYV9yZXF1ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIyOS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNC1cXHRjYXNlIE1FRElBX1JFUVVFU1RfSU9DX1FVRVVFOlxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjIzNTpcXHRcXHRyZXR1cm4gbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTIzNi1cXHRjYXNlIE1FRElBX1JFUVVFU1RfSU9DX1JFSU5JVDpcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyMzc6XFx0XFx0cmV0dXJuIG1lZGlhX3JlcXVlc3RfaW9jdGxfcmVpbml0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjM4LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0yNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVxdWVzdF9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjQ1LVxcdC5wb2xsID0gbWVkaWFfcmVxdWVzdF9wb2xsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0NjpcXHQudW5sb2NrZWRfaW9jdGwgPSBtZWRpYV9yZXF1ZXN0X2lvY3RsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI0Ny0jaWZkZWYgQ09ORklHX0NPTVBBVFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjI0ODpcXHQuY29tcGF0X2lvY3RsID0gbWVkaWFfcmVxdWVzdF9pb2N0bCxcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yNDktI2VuZGlmIC8qIENPTkZJR19DT01QQVQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MTIuNjcxMjQ5OTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDM4Mzg2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHBocmFzZWQgYXMgYSBzdW1tYXJ5IG9mIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkludGVybmFsIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZm9yIG1lZGlhLXJlbGF0ZWQgcmVxdWVzdHMuIFJpZ2h0IG5vdywgSSdtIHplcm9pbmcgaW4gb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgc2VlbXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBJJ3ZlIGdvdCwgdGhhdCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgZGVmaW5pdGVseSAqY2FsbGVkKiBmcm9tIHdpdGhpbiBgbWVkaWFfZGV2aWNlX3JlcXVlc3RfYWxsb2NgLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIHBvaW50IEkgbmVlZCB0byBoYXZlIGxvY2tlZCBkb3duLiBUaGlzIGNsYXJpZmllcyB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gYXQgd29yayBoZXJlIGFuZCBpbmZvcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRyb2wgZmxvdy4gTm93IEkgY2FuIG1vdmUgb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgcm9sZSBvZiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCByZXF1ZXN0IGxpZmVjeWNsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoxNi44NzUwOTA3MjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDIzNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz0yMzA9c3RhdGljIGxvbmcgbWVkaWFfZGV2aWNlX2dldF90b3BvbG9neShzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTM3Mi1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjM3MzpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2LCB2b2lkICphcmcpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy0zNzQte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYz00MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9pb2N0bF9pbmZvIGlvY3RsX2luZm9bXSA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNDMwLVxcdE1FRElBX0lPQyhHX1RPUE9MT0dZLCBtZWRpYV9kZXZpY2VfZ2V0X3RvcG9sb2d5LCBNRURJQV9JT0NfRkxfR1JBUEhfTVVURVgpLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM6NDMxOlxcdE1FRElBX0lPQyhSRVFVRVNUX0FMTE9DLCBtZWRpYV9kZXZpY2VfcmVxdWVzdF9hbGxvYywgMCksXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzItfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MTYuOTIwMTE4Mjg0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzA0ODM3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBEZXZpY2UgUmVxdWVzdCBBbGxvY2F0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1lZGlhX2RldmljZV9yZXF1ZXN0X2FsbG9jYCBmdW5jdGlvbi4gSXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgdGhhdCBgTUVESUFfSU9DX1JFUVVFU1RfQUxMT0NgIGlvY3RsLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBqdXN0IHJvdXRpbmcgdGhlIGlvY3RsIGNhbGwuIE5vdywgbGV0J3Mgc2VlIGhvdyB0aGF0IHJlcXVlc3QgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXBwZW5zLi4uIEFoLCBoZXJlIGl0IGlzLCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgaXMgY2FsbGVkIHdpdGhpbiB0aGF0IGhhbmRsZXIuIEdvb2QsIG5vdyBJIGhhdmUgYSBsZWFkIG9uIHdoZXJlIHRoZSBhbGxvY2F0aW9uIGxvZ2ljIGlzIGxvY2F0ZWQuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGludG8gYG1lZGlhX3JlcXVlc3RfYWxsb2NgIHNwZWNpZmljYWxseSwgbGV0J3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZ2V0IGEgYnJvYWRlciB2aWV3LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgbWVkaWFfZGV2aWNlX2lvY3RsYCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBpb2N0bCBoYW5kbGluZyB3aXRoaW4gdGhlIG1lZGlhIGRldmljZSBmcmFtZXdvcmsuIFRoYXQgd2lsbCBoZWxwIG1lIGdyYXNwIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGluIHRoZSB3ZWVkcy4gQ29udGV4dCBpcyBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoyMC41NTA2MDQ5MThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX2RldmljZV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmM9NDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfaW9jdGxfaW5mbyBpb2N0bF9pbmZvW10gPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTQzMy1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjQzNDpzdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy00MzUtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgX19hcmcpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTUxOD1zdGF0aWMgbG9uZyBtZWRpYV9kZXZpY2VfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYy01MzMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jOjUzNDpcXHRcXHRyZXR1cm4gbWVkaWFfZGV2aWNlX2lvY3RsKGZpbHAsIGNtZCwgYXJnKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jLTUzNS1cXHR9XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLWRldmljZS5jPTU0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2ZpbGVfb3BlcmF0aW9ucyBtZWRpYV9kZXZpY2VfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQzLVxcdC5vcGVuID0gbWVkaWFfZGV2aWNlX29wZW4sXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1kZXZpY2UuYzo1NDQ6XFx0LmlvY3RsID0gbWVkaWFfZGV2aWNlX2lvY3RsLFxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtZGV2aWNlLmMtNTQ1LSNpZmRlZiBDT05GSUdfQ09NUEFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjIwLjU5NTM5MTQ2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjczMzk1NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBWaXZpZC1Db3JlLmMgZm9yIFJlcXVlc3QgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgIGFyZSBleHBvcnRlZCBhbmQgbm90IHN0YXRpYyB3aXRoaW4gYHZpdmlkLWNvcmUuY2AuIEV4Y2VsbGVudCwgdGhvc2UgYXJlIHByZWNpc2VseSB0aGUga2luZCBvZiBzeW1ib2xzIEknbSBsb29raW5nIGZvciDigJMgdGhleSdyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyByZXF1ZXN0cyBhcmUgY3JlYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgcmVxdWVzdCBsaWZlY3ljbGUuXG5cbk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYHZpdmlkLWNvcmUuY2AgdGhhdCBhcmUgc29tZWhvdyBpbnZvbHZlZCB3aXRoIHJlcXVlc3QgbWFuYWdlbWVudC4gSSdtIHRoaW5raW5nIEkgbWlnaHQgZmluZCBzb21lIGludGVybWVkaWF0ZSBmdW5jdGlvbnMsIHJlbGF0ZWQgaGVscGVyIGZ1bmN0aW9ucywgb3IgcG90ZW50aWFsbHkgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGVycm9yIHN0YXRlcyBjb25uZWN0ZWQgdG8gcmVxdWVzdHMuIExldCdzIHNlZSB3aGF0IGVsc2UgYHZpdmlkLWNvcmUuY2Agb2ZmZXJzIGluIHRoaXMgcmVnYXJkLiBUaGlzIGNvdWxkIHJldmVhbCBvdGhlciB1c2VmdWwgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjI0LjI2ODc4OTI4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNDgzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidml2aWRfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9ODUyPXN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODcxLSNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo4NzI6c3RhdGljIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICp2aXZpZF9yZXFfYWxsb2Moc3RydWN0IG1lZGlhX2RldmljZSAqbWRldilcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmMtODczLXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04ODQtXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjg4NTpzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy04ODYte1xcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5Mi1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM6ODkzOnN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTg5NC17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmM9OTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFfZGV2aWNlX29wcyB2aXZpZF9tZWRpYV9vcHMgPSB7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNTpcXHQucmVxX2FsbG9jID0gdml2aWRfcmVxX2FsbG9jLFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYzo5MDY6XFx0LnJlcV9mcmVlID0gdml2aWRfcmVxX2ZyZWUsXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNzpcXHQucmVxX3ZhbGlkYXRlID0gdml2aWRfcmVxX3ZhbGlkYXRlLFxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDgtXFx0LnJlcV9xdWV1ZSA9IHZiMl9yZXF1ZXN0X3F1ZXVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDoyNC4zMTMwNDUzMDFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg3NTYyMDEyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBNZWRpYSBSZXF1ZXN0IEFsbG9jYXRpb24qKlxuXG5SaWdodCwgdGhleSdyZSBhbGwgc3RhdGljLCBhcmVuJ3QgdGhleT8gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4uLmJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHdoYXQgSSdtIGxvb2tpbmcgYXQuIE9rYXksICpgbWVkaWFfcmVxdWVzdF9hbGxvY2AqIGFuZCAqYG1lZGlhX3JlcXVlc3RfcHV0YCrigJR0aG9zZSBhcmUgbXkgZm9jYWwgcG9pbnRzIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBtZWRpYSByZXF1ZXN0cyBhcmUgYWxsb2NhdGVkIGFuZCByZWxlYXNlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaG9zZSBhcmUgdGhlIGtleSBvcGVyYXRpb25zLCBzbyB0aGV5J2xsIHByb3ZpZGUgdGhlIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudC5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGNoZWNrIG91dCBgbWVkaWFfcmVxdWVzdF9hbGxvY2AsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBtYy1yZXF1ZXN0LmNgLiBMZXQncyBzZWUgaG93IGFsbG9jYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4uLiB3aGF0IHRoZSBwcmVjb25kaXRpb25zIGFyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBob3cgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkLiBJJ20gbG9va2luZyBmb3IgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU0OjM0LjE4ODY2NzE3MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc3NDA4NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mjg5OmludCBtZWRpYV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCAqYWxsb2NfZmQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6MzQuNTY2MDgyNzQyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzQwMTYwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gYG1jLXJlcXVlc3QuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHJlcXVlc3QgaGFuZGxpbmcgaXMgd29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBgbWVkaWFfcmVxdWVzdF9wdXRgIGZ1bmN0aW9uLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoYXQuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlJ3JlIGRvaW5nIHRoZSBQVVQgcmVxdWVzdHMsIHJpZ2h0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdywgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbWVkaWEgY2FjaGUgaXRzZWxmLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkIGJlZm9yZSB3ZSBldmVuICp0aGluayogYWJvdXQgb3B0aW1pemluZyBhbnl0aGluZy4gQWxyaWdodCwgbGV0J3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0NjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NDo1Ny4zMDYyNDU4NzhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzcwNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTYxPXN0YXRpYyB2b2lkIG1lZGlhX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTgwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjgxOnZvaWQgbWVkaWFfcmVxdWVzdF9wdXQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04Mi17XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODU6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9wdXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTg3PXN0YXRpYyBpbnQgbWVkaWFfcmVxdWVzdF9jbG9zZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTkwLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjkxOlxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtOTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0xMjE9c3RhdGljIGxvbmcgbWVkaWFfcmVxdWVzdF9pb2N0bF9xdWV1ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTQ4LVxcdFxcdFxcdHJlcS1cXHUwMDNlZGVidWdfc3RyLCBtZWRpYV9yZXF1ZXN0X3N0YXRlX3N0cihzdGF0ZSkpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjE0OTpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTE1MC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1kZXYtXFx1MDAzZXJlcV9xdWV1ZV9tdXRleCk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0xODMtXFx0XFx0XFx0cmVxLVxcdTAwM2VkZWJ1Z19zdHIsIHJldCk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6MTg0OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMTg1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTQzNT12b2lkIG1lZGlhX3JlcXVlc3Rfb2JqZWN0X3VuYmluZChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3NS1cXHRpZiAoY29tcGxldGVkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3NjpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3Ny19XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMS1cXHRpZiAoY29tcGxldGVkKVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjUwMjpcXHRcXHRtZWRpYV9yZXF1ZXN0X3B1dChyZXEpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMy19XFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz01MDY9dm9pZCBtZWRpYV9yZXF1ZXN0X21hbnVhbF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTM2LVxcdGlmIChjb21wbGV0ZWQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTM3OlxcdFxcdG1lZGlhX3JlcXVlc3RfcHV0KHJlcSk7XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtNTM4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTQ6NTcuMzc1MDIwOTUxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NTg5ODI2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlJ3MgRW50cnkgUG9pbnRzIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZGlmaWVkIGNvZGUgYW5kIGl0IHNlZW1zIGxpa2UgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgIGFyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuIEkgc2hvdWxkIGNoZWNrIHdoYXQgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LlxuXG5MZXQgbWUgc2Vl4oCmIHRoZXJlJ3MgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCwgYENPTkZJR19WSURFT19WSVZJRGAsIGBDT05GSUdfTUVESUFfU1VQUE9SVGAsIGFuZCBgQ09ORklHX1ZJREVPX0RFVmAuIFJpZ2h0LCBJIHJlbWVtYmVyIGBDT05GSUdfTUVESUFfU1VQUE9SVGAgaXMgYSBtZW51Y29uZmlnLCB3aGljaCBtZWFucyBpdCB0cmFuc2xhdGVzIHRvIGp1c3QgYE1FRElBX1NVUFBPUlRgIGR1cmluZyBldmFsdWF0aW9uLiBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGlzIGp1c3QgYSBib29sZWFuLiBgQ09ORklHX1ZJREVPX1ZJVklEYCBhbmQgYENPTkZJR19WSURFT19ERVZgIGFyZSB0cmlzdGF0ZXMuXG5cbk5vdywgd2hhdCBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVklERU9fVklWSURgPyBMZXQncyBkZWx2ZSBpbnRvIHRoYXQuIEhtbSwgaXQgZGVwZW5kcyBvbiBgVklERU9fREVWIFx1MDAyNlx1MDAyNiAhU1BBUkMzMiBcdTAwMjZcdTAwMjYgIVNQQVJDNjRgLCBhbmQgYWxzbyBgSEFTX0RNQWAuIEl0IGFsc28gc2VsZWN0cyBhIGJ1bmNoIG9mIG90aGVyIG9wdGlvbnM6IGBGT05UX1NVUFBPUlRgLCBgRk9OVF84eDE2YCwgYEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEYCBpZiBgRkJfQ09SRWAsIGBWSURFT0JVRjJfVk1BTExPQ2AsIGBWSURFT0JVRjJfRE1BX0NPTlRJR2AsIGBWSURFT19WNEwyX1RQR2AsIGFuZOKApiBob2xkIG9uIGEgbWludXRl4oCmIGl0IHNlbGVjdHMgYE1FRElBX0NPTlRST0xMRVJgIGFuZCBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWA/IFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHNlbGVjdGVkIG9wdGlvbnMgYXJlIGNvbnNpc3RlbnQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ0NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NTowNC4zMzQwMDc4OTRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTYyMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNRURJQV9DT05UUk9MTEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZz0yPWNvbmZpZyBWSURFT19WSVZJRFxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVklERU9fVjRMMl9UUEdcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC9LY29uZmlnOjExOlxcdHNlbGVjdCBNRURJQV9DT05UUk9MTEVSXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvS2NvbmZpZy0xMi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjA0LjM4MDE5NjM5OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDA1NDI5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgaXQncyB0aGUgYmVkcm9jayBvZiBob3cgd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCBtZWRpYSBjb250cm9sIGluIHRoaXMgc2V0dXAsIG9yIGF0IGxlYXN0IGhvdyB3ZSdyZSAqcmVxdWVzdGluZyogaXQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGVzcGVjaWFsbHkgaG93IGl0J3MgZGVzaWduZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBtZWRpYSB0eXBlcyBhbmQgY29udHJvbCBzdXJmYWNlcy4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgd2UncmUgaGFuZGxpbmcgdGhlIHJlcXVlc3QgZmxvdywgcGVybWlzc2lvbiBtb2RlbHMgKGlmIGFueSksIGFuZCB0aGUgbWVjaGFuaXNtcyBmb3IgY29tbXVuaWNhdGluZyB0aGVzZSByZXF1ZXN0cyBhY3Jvc3MgcHJvY2Vzc2VzIG9yIHdpdGhpbiBhIHNpbmdsZSBhcHAuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzIHRvIGNoZWNrIGZvciB3aGV0aGVyIGFueSBlZGdlIGNhc2VzIGFyZSBjb25zaWRlcmVkLiBXaGF0IGFyZSB0aGUgZmFsbGJhY2sgcHJvY2VkdXJlcz8gQXJlIHRoZSByZXF1ZXN0J3MgcGFyYW1ldGVycyBjaGVja2VkIGZvciB2YWxpZGl0eT8gVGhpcyBpcyB0aGUgY29yZSBpbnRlcmZhY2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdCBpbXBsaWNpdGx5IGJlZm9yZSBtb3Zpbmcgb24uIFdoYXQgZG8gKkkqIGtub3csIGZyb20gbWVtb3J5LCBhYm91dCB0aGlzIEFQST8gRG8gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNvZGUgaXRzZWxmLCBvciBtYXliZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgcmVsYXRlZCBhcmNoaXRlY3R1cmU/IExldCdzIGJlZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI1MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjExLjc4NTYyODczNVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MDE1NzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjExLjgzMzAzNzI4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyNTIwNTAxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIERpc2NyZXBhbmN5KipcblxuSG1tLCB0aGlzIGlzIGN1cmlvdXMuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYCBvcHRpb24gc2hvdWxkIGJlIGVuYWJsZWQgYnkgYFZJREVPX1ZJVklEYCwgYnV0IGl0IGFwcGVhcnMgdGhhdCdzIG5vdCB0aGUgY2FzZS4gVGhpcyBpcyB1bmV4cGVjdGVkOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElgLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIGxpa2VseSBzdGFydGluZyB3aXRoIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIG9yIHBvc3NpYmx5IGRpZ2dpbmcgZGVlcGVyIGludG8gYGRyaXZlcnMvbWVkaWEvbWMvS2NvbmZpZ2AuIEknbGwgdHJhY2UgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlbmRlZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gb3B0aW9ucywgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBhdGggZm9yIGBNRURJQV9DT05UUk9MTEVSX1JFUVVFU1RfQVBJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NToyMS4wODUwOTAwNzNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODUwODIxOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU1OjIxLjIwMzYwNzA0MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjEzODYyNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIFNoZW5hbmlnYW5zOiBJcyBUaGlzIFJlYWw/KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHNlZWluZyBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAuLi4gYW5kIHRoYXQncyAqbGlzdGVkKiBhcyBhIGNvbmZpZyBvcHRpb24/IEluIGBkcml2ZXJzL21lZGlhL21jL0tjb25maWdgPyBTZXJpb3VzbHk/IEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdC4gVGhhdCBzdWdnZXN0cyBzb21ldGhpbmcgcG90ZW50aWFsbHkgbmV3IG9yLCBhdCBsZWFzdCwgc29tZXRoaW5nIEkgaGF2ZW4ndCBkaXJlY3RseSBlbmNvdW50ZXJlZCBpbiB0aGlzIGNvbnRleHQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscyBpbiB0aGUgbWVkaWEgY29udHJvbGxlciBkcml2ZXIgc3BhY2UuIElzIHRoaXMgYSBuZXcgQVBJIHJlcXVlc3QsIG9yIHNvbWV0aGluZyB0aWVkIHRvIHRoZSBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnJhbWV3b3JrIGNvbmZpZ3VyYXRpb24/IFRoaXMgY2hhbmdlcyB0aGluZ3MuIFRoaXMgbWVyaXRzICppbW1lZGlhdGUqIGludmVzdGlnYXRpb24uIFRoaXMgY291bGQgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIFgsIFksIG9yIFogaW4gdGhlIGN1cnJlbnQgcHJvamVjdCwgZGVwZW5kaW5nIG9uIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGRyaXZlciBpbnRlcmZhY2VzIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBJJ3ZlIGdvdCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpbiB0aGF0IEtjb25maWcgZmlsZS4gTGV0J3Mgc2VlIHdoYXQga2luZCBvZiBjb250cm9sIGl0IGdpdmVzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg0NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjAzLjM0MjIzMzU2NloiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNDU0NTgxMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FRElBX0NPTlRST0xMRVJfUkVRVUVTVF9BUElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1NjowNS40NzY3OTA4MjdaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwNjMzNDY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgbWVkaWEgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBSZW5hbWVkIG9yIFJlbW92ZWQgQVBJIENhbGwqKlxuXG5SaWdodCwgc28gaXQgbG9va3MgbGlrZSBgTUVESUFfQ09OVFJPTExFUl9SRVFVRVNUX0FQSWAgaGFzIGVpdGhlciBiZWVuIGRlcHJlY2F0ZWQgb3IgaGFkIGl0cyBuYW1lIGNoYW5nZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLiBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL21lZGlhL21jL2AuIFRoZSBgbWMtcmVxdWVzdC5jYCBmaWxlIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb3IgZGVmaW5pdGlvbiBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhhdCBBUEksIGFuZCBjaGVja2luZyB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSBpcyBhbHdheXMgYSBnb29kIGlkZWEgaW4gdGhlc2Ugc2l0dWF0aW9ucy4gSXQncyBsaWtlbHkgdGhhdCBhIGNoYW5nZSB0byB0aGUgYnVpbGQgcHJvY2VzcyBvciBtb2R1bGUgaW5jbHVzaW9uIG1pZ2h0IGJlIHRoZSBjdWxwcml0LiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0J3MgdHJ1bHkgZ29uZSwgb3IgbWVyZWx5IHJlbmFtZWQsIGFuZCB0aGVuIHdoYXQgdGhlIHJlcGxhY2VtZW50IChpZiBhbnkpIGlzLiBUaGlzIGlzIGFsbCBzdGFuZGFyZCBwcm9jZWR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTI4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6MjIuNTQwMTQxNTIxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzczNTAyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYy1yZXF1ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9NYWtlZmlsZT0zPW1jLW9ianNcXHQ6PSBtYy1kZXZpY2UubyBtYy1kZXZub2RlLm8gbWMtZW50aXR5Lm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvbWMvTWFrZWZpbGU6NDpcXHQgICBtYy1yZXF1ZXN0Lm9cXG5kcml2ZXJzL21lZGlhL21jL01ha2VmaWxlLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjIyLjYyMzg5MjA1MloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzI3OTMxNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTG9naWMgZm9yIGBtYy1yZXF1ZXN0LmNgKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBtYy1yZXF1ZXN0LmNgIGlzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBpZiBgbWNgIGlzIGNvbXBpbGVkLiBBbmQgYG1jYCBpdHNlbGYgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01FRElBX0NPTlRST0xMRVJgIGlzIGVuYWJsZWQuIFRoZXJlZm9yZSwgYENPTkZJR19NRURJQV9DT05UUk9MTEVSYCBzaG91bGQgYmUgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IGBtYy1yZXF1ZXN0LmNgIGlzIGNvbXBpbGVkLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgZGVwZW5kZW5jaWVzLiBJIGFsc28gc2VlIHJlZmVyZW5jZXMgdG8gYE1FRElBX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYW5kIGBWSURFT19WSVZJRGAuIEFoLCBidXQgaGVyZSdzIHNvbWV0aGluZyB1c2VmdWw6IGBWSURFT19WSVZJRGAgKnNlbGVjdHMqIGBNRURJQV9DT05UUk9MTEVSYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlcmVmb3JlLCBpZiBgVklERU9fVklWSURgIGlzIGVuYWJsZWQsIHRoZW4gYE1FRElBX0NPTlRST0xMRVJgIGlzIGFsc28gZW5hYmxlZC4gVGhhdCBtZWFucywgdG8gZ2V0IGBtYy1yZXF1ZXN0LmNgIGNvbXBpbGVkLCB0aGUgbWluaW1hbCBhbmQgc3VmZmljaWVudCBjb25maWcgb3B0aW9ucyBJIG5lZWQgYXJlIGBWSURFT19WSVZJRGAsIGBNRURJQV9TVVBQT1JUYCwgYW5kIGBWSURFT19ERVZgLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGB2aXZpZF9yZXFfYWxsb2NgIGlzIGNhbGxlZC4gT2theSwgaXQgbG9va3MgbGlrZSBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgY2FsbHMgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9hbGxvY2AuIEFuZCBpbiBgdml2aWQtY29yZS5jYCwgYHZpdmlkX21lZGlhX29wc2AgYXNzaWducyBgLnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvY2AsIGFuZCB0aGlzIHN0cnVjdCBpcyBhc3NpZ25lZCB0byBgbWRldi1cdTAwM2VvcHNgLiBUaGF0IGNvbmZpcm1zIGV2ZXJ5dGhpbmcgaXMgY29ycmVjdGx5IGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0NjQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6MzEuMzUxODI2MzAyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4ODAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXZpZF9tZWRpYV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz04OTM9c3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDMtXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjkwNDpzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2RldmljZV9vcHMgdml2aWRfbWVkaWFfb3BzID0ge1xcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYy05MDUtXFx0LnJlcV9hbGxvYyA9IHZpdmlkX3JlcV9hbGxvYyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWNvcmUuYz0xODIzPXN0YXRpYyBpbnQgdml2aWRfY3JlYXRlX2luc3RhbmNlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpbnN0KVxcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTQtXFx0bWVkaWFfZGV2aWNlX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlbWRldik7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jOjE4NTU6XFx0ZGV2LVxcdTAwM2VtZGV2Lm9wcyA9IFxcdTAwMjZ2aXZpZF9tZWRpYV9vcHM7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jLTE4NTYtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjMxLjM5OTUyMjcwN1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1MTU0MDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCBmb3IgTWVkaWEgQ29udHJvbGxlciBBUEkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlLiBUaGUgY29yZSBvZiB0aGlzIGZpeCBpcyBjZW50ZXJlZCBhcm91bmQgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBtYy1yZXF1ZXN0LmNgIGZpbGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkuIFRoZSBzb2x1dGlvbiBpbnZvbHZlcyBhIGNyaXRpY2FsIG1vZGlmaWNhdGlvbiB0byB0aGUgcmVxdWVzdCBsaWZlY3ljbGUg4oCTIGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCAqYmVmb3JlKiBjYWxsaW5nIGByZXFfZnJlZWAgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gVGhpcyBraW5kIG9mIGNoYW5nZSBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHRoYXQgY2FuIHF1aWV0bHkgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCB3aGljaCBpcyB3aHkgdGhleSBhcmUgcGF0Y2hpbmcgaXQuXG5cbk5vdywgSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGB2aXZpZC1jb3JlLmNgIGZpbGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHZpdmlkIHRlc3QgZHJpdmVyLiBUaGUgZ29hbCBvZiB0aGVzZSBjYWxsYmFja3MgaXMgdG8gbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGB2NGwyX2RldmAgb2JqZWN0LiBBZGRpbmcgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHZpdmlkLWNvcmUuY2AgZmlsZSBpcyBpbnRlcmVzdGluZyBhbmQgcG9pbnRzIHRvIGEgZGVlcGVyIGNvbmNlcm4uIFRoYXTigJlzIHByb2JhYmx5IHRoZSByZWFzb24gdGhleSBtZW50aW9uZWQgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgd2l0aCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIEkgY2FuIGVhc2lseSBzZWUgaG93IHRoaXMgYmVjb21lcyByZWFjaGFibGUgaW4gbWFueSBkaWZmZXJlbnQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIHBhdGNoIHRvdWNoZXMgYm90aCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBhbmQgYSB0ZXN0IGRyaXZlciwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGUgbmV3IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSByb2J1c3QuXG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGVzZSB0d28gc3ltYm9scyBhcyBJIGdvIHRocm91Z2ggdGhpczogYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGFuZCBgbWVkaWFfcmVxdWVzdF9wdXRgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSdtIGV4cGVjdGluZyB0byBiZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiBgbWMtcmVxdWVzdC5jYC5cblxuRmluYWxseSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBJJ20gbm90aW5nIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uczogYFZJREVPX1ZJVklEYCwgYE1FRElBX0NPTlRST0xMRVJgLCBgTUVESUFfU1VQUE9SVGAsIGFuZCBgVklERU9fREVWYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgd2lsbCBkaXJlY3RseSBpbmZsdWVuY2UgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aC4gSXQncyBpbXBlcmF0aXZlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbWMtcmVxdWVzdC5jYCB0aGF0IGNvdWxkIGFsc28gYmUgaW1wYWN0ZWQuIEJlc3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mzc3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjQyLjU1MTA2NjY2MVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5ODA1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz04MT12b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy04NC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6ODU6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9wdXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTg2LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MjU0PW1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCByZXF1ZXN0X2ZkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjg2LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzoyODc6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9nZXRfYnlfZmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTI4OC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jPTM1OD1tZWRpYV9yZXF1ZXN0X29iamVjdF9maW5kKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zNzktfVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjM4MDpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF9maW5kKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zODEtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9MzgyPXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0X29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMzg1LX1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYzozODY6RVhQT1JUX1NZTUJPTF9HUEwobWVkaWFfcmVxdWVzdF9vYmplY3RfcHV0KTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0zODctXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mzg4PXZvaWQgbWVkaWFfcmVxdWVzdF9vYmplY3RfaW5pdChzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5Ni19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mzk3OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2luaXQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTM5OC1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz0zOTk9aW50IG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2JpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzMi19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NDMzOkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2JpbmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQzNC1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00MzU9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQoc3RydWN0IG1lZGlhX3JlcXVlc3Rfb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy00NzctfVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jOjQ3ODpFWFBPUlRfU1lNQk9MX0dQTChtZWRpYV9yZXF1ZXN0X29iamVjdF91bmJpbmQpO1xcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTQ3OS1cXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYz00ODA9dm9pZCBtZWRpYV9yZXF1ZXN0X29iamVjdF9jb21wbGV0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdF9vYmplY3QgKm9iailcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUwMy19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTA0OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3Rfb2JqZWN0X2NvbXBsZXRlKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy01MDUtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9NTA2PXZvaWQgbWVkaWFfcmVxdWVzdF9tYW51YWxfY29tcGxldGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jLTUzOC19XFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6NTM5OkVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfbWFudWFsX2NvbXBsZXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NDIuNTk3MDUzMzA2WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk5NTM3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE1lZGlhIFJlcXVlc3QgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIGBtZWRpYV9yZXF1ZXN0X2dldF9ieV9mZGAgc2VlbXMgbGlrZSBhIHNvbGlkIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbiBoZXJlOyBhZnRlciBhbGwsIGl0J3MgYWJvdXQgcmV0cmlldmluZyBhIHJlcXVlc3QsIHdoaWNoIGlzIG9mdGVuIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIE5vdywgSSB0aG91Z2h0IGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBtaWdodCBiZSBhbm90aGVyIGltcG9ydGFudCBvbmUuLi4gYnV0IGhvbGQgb24sIGlzbid0IHRoYXQgZnVuY3Rpb24gKm5vdCogZXhwb3J0ZWQ/IFRoYXQgZG9lc24ndCBzZWVtIHJpZ2h0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGJlY2F1c2UgdGhhdCB3b3VsZCBjaGFuZ2UgdGhpbmdzIHNpZ25pZmljYW50bHkgaWYgdHJ1ZS4gVGltZSB0byB2ZXJpZnkgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIG9uY2UgbW9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMjo1Njo0NS43ODcwMDk1NThaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjE2OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM9Mjg3PUVYUE9SVF9TWU1CT0xfR1BMKG1lZGlhX3JlcXVlc3RfZ2V0X2J5X2ZkKTtcXG5kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuYy0yODgtXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmM6Mjg5OmludCBtZWRpYV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsIGludCAqYWxsb2NfZmQpXFxuZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMtMjkwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NDUuODMyNjMwOTY0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NzIwNjY2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBgbWVkaWFfcmVxdWVzdF9hbGxvY2AgYW5kIGBtZWRpYV9yZXF1ZXN0X3B1dGAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB0aGUgc3ltYm9sIGluIHF1ZXN0aW9uIGlzbid0IGV4cG9ydGVkLCBidXQgaXQgKmlzKiBub24tc3RhdGljLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24uIEFuZCwgaXQncyBjYWxsZWQgZnJvbSBgbWMtZGV2aWNlLmNgLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFNpbmNlIGl0J3MgY2FsbGVkIGludGVybmFsbHkgd2l0aGluIHRoYXQgY29udGV4dCwgaXQgbWVhbnMgYG1lZGlhX3JlcXVlc3RfYWxsb2NgIGlzIGRlZmluaXRlbHkgYXBwcm9wcmlhdGUgZm9yIG91ciBuZWVkcy5cblxuT2theSwgc28gSSdtIGZvY3VzaW5nIGluIG9uIGBtZWRpYV9yZXF1ZXN0X2FsbG9jYCBhbmQgYG1lZGlhX3JlcXVlc3RfcHV0YCBhcyB0aGUgY29yZSBzeW1ib2xzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEknbGwgYmUgY29uY2VudHJhdGluZyBvbiBoZXJlLiBOb3csIEknbGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MDMsIk91dHB1dFRva2VucyI6MTcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NTUuODA0NzAwMzY2WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc2MTQ1NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJREVPX1ZJVklEXCIsXG4gICAgXCJNRURJQV9DT05UUk9MTEVSXCIsXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZWRpYV9yZXF1ZXN0X2FsbG9jXCIsXG4gICAgXCJtZWRpYV9yZXF1ZXN0X3B1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtZWRpYSBjb250cm9sbGVyIHJlcXVlc3QgQVBJIHRvIGZpeCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBieSBkZWNyZW1lbnRpbmcgdGhlIHJlcXVlc3QgY291bnQgYmVmb3JlIGNhbGxpbmcgcmVxX2ZyZWUuIEl0IGFsc28gYWRkcyByZXFfYWxsb2MgYW5kIHJlcV9mcmVlIGNhbGxiYWNrcyB0byB0aGUgdml2aWQgdGVzdCBkcml2ZXIgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHY0bDJfZGV2IG9iamVjdC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBtZWRpYSBjb250cm9sbGVyIGxvZ2ljIGFuZCB0aGUgdml2aWQgdGVzdCBkcml2ZXIsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCByZXF1ZXN0IGxpZmVjeWNsZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklERU9fVklWSURcIixcbiAgICBcIk1FRElBX0NPTlRST0xMRVJcIixcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIlZJREVPX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lZGlhX3JlcXVlc3RfYWxsb2NcIixcbiAgICBcIm1lZGlhX3JlcXVlc3RfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcmVxdWVzdCBBUEkgdG8gZml4IGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ5IGRlY3JlbWVudGluZyB0aGUgcmVxdWVzdCBjb3VudCBiZWZvcmUgY2FsbGluZyByZXFfZnJlZS4gSXQgYWxzbyBhZGRzIHJlcV9hbGxvYyBhbmQgcmVxX2ZyZWUgY2FsbGJhY2tzIHRvIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdjRsMl9kZXYgb2JqZWN0LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG1lZGlhIGNvbnRyb2xsZXIgbG9naWMgYW5kIHRoZSB2aXZpZCB0ZXN0IGRyaXZlciwgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIHJlcXVlc3QgbGlmZWN5Y2xlIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTY6NTUuODgyMzIyMTM4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4ODM0NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjU1Ljg4MjkyMTMyOFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODE4Nzc0MTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTRhM2U5MWQ0YTBmOTE5YWMwZDIwNTNhZjhjOGM5YzY4YzE1ZjM5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEyOjUyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9tYy9tYy1yZXF1ZXN0LmMgYi9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuaW5kZXggMTNlNzc2NDg4MDdjMi4uNTRiYjA4ZTY1Nzc0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvbWMvbWMtcmVxdWVzdC5jXG4rKysgYi9kcml2ZXJzL21lZGlhL21jL21jLXJlcXVlc3QuY1xuQEAgLTcxLDExICs3MSwxMSBAQCBzdGF0aWMgdm9pZCBtZWRpYV9yZXF1ZXN0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpXG4gXG4gXHRtZWRpYV9yZXF1ZXN0X2NsZWFuKHJlcSk7XG4gXG4rXHRhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKTtcbiBcdGlmIChtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZSlcbiBcdFx0bWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKTtcbiBcdGVsc2VcbiBcdFx0a2ZyZWUocmVxKTtcbi1cdGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpO1xuIH1cbiBcbiB2b2lkIG1lZGlhX3JlcXVlc3RfcHV0KHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG5pbmRleCA2MmNmYjVmZWIyY2Y1Li4yMzc0ZjQ4NjUxNjhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY29yZS5jXG4rKysgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jb3JlLmNcbkBAIC04NjksNiArODY5LDI3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2Rldl9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXG4gfVxuIFxuICNpZmRlZiBDT05GSUdfTUVESUFfQ09OVFJPTExFUlxuK3N0YXRpYyBzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqdml2aWRfcmVxX2FsbG9jKHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYpXG4re1xuK1x0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCB2aXZpZF9kZXYsIG1kZXYpO1xuK1x0c3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcTtcbitcbitcdHJlcSA9IGt6YWxsb2Nfb2JqKCpyZXEpO1xuK1x0aWYgKCFyZXEpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0djRsMl9kZXZpY2VfZ2V0KFx1MDAyNmRldi1cdTAwM2V2NGwyX2Rldik7XG4rXHRyZXR1cm4gcmVxO1xuK31cbitcbitzdGF0aWMgdm9pZCB2aXZpZF9yZXFfZnJlZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAqcmVxKVxuK3tcbitcdHN0cnVjdCB2aXZpZF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihyZXEtXHUwMDNlbWRldiwgc3RydWN0IHZpdmlkX2RldiwgbWRldik7XG4rXG4rXHRrZnJlZShyZXEpO1xuK1x0djRsMl9kZXZpY2VfcHV0KFx1MDAyNmRldi1cdTAwM2V2NGwyX2Rldik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgdml2aWRfcmVxX3ZhbGlkYXRlKHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpyZXEpXG4ge1xuIFx0c3RydWN0IHZpdmlkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHJlcS1cdTAwM2VtZGV2LCBzdHJ1Y3Qgdml2aWRfZGV2LCBtZGV2KTtcbkBAIC04ODEsNiArOTAyLDggQEAgc3RhdGljIGludCB2aXZpZF9yZXFfdmFsaWRhdGUoc3RydWN0IG1lZGlhX3JlcXVlc3QgKnJlcSlcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYV9kZXZpY2Vfb3BzIHZpdmlkX21lZGlhX29wcyA9IHtcbitcdC5yZXFfYWxsb2MgPSB2aXZpZF9yZXFfYWxsb2MsXG4rXHQucmVxX2ZyZWUgPSB2aXZpZF9yZXFfZnJlZSxcbiBcdC5yZXFfdmFsaWRhdGUgPSB2aXZpZF9yZXFfdmFsaWRhdGUsXG4gXHQucmVxX3F1ZXVlID0gdmIyX3JlcXVlc3RfcXVldWUsXG4gfTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEyOjU2OjU1Ljg4MjkyMjI1OFoiLCJTZXEiOjU5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODE4NzcxMzM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBNZWRpYSBSZXF1ZXN0IExpZmVjeWNsZSBGaXgqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aXRoaW4gdGhlIG1lZGlhIHJlcXVlc3QgaGFuZGxpbmcuIFRoZSBjaGFuZ2UgaW4gYG1jLXJlcXVlc3QuY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUuIFdlJ3JlIG1vZGlmeWluZyB0aGUgYG1lZGlhX3JlcXVlc3RfcmVsZWFzZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBjb25jZXJuaW5nIGBhdG9taWNfZGVjKFx1MDAyNm1kZXYtXHUwMDNlbnVtX3JlcXVlc3RzKWAgYW5kIGBtZGV2LVx1MDAzZW9wcy1cdTAwM2VyZXFfZnJlZShyZXEpYC4gIFRoZSBvcmlnaW5hbCBvcmRlciBwcmVzZW50ZWQgYSBwb3RlbnRpYWwgcHJvYmxlbTogaWYgYG1kZXYtXHUwMDNlb3BzLVx1MDAzZXJlcV9mcmVlYCBmcmVlcyB0aGUgbWVkaWEgZGV2aWNlIChgbWRldmApICpiZWZvcmUqIHRoZSByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQsIHdlIGhhdmUgYSBjbGVhciB1c2UtYWZ0ZXItZnJlZS4gVGhlIHN1YnNlcXVlbnQgYGF0b21pY19kZWNgIHdvdWxkIGJlIG9wZXJhdGluZyBvbiBhIGZyZWVkIG9iamVjdC5cblxuVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgc2hpZnRpbmcgYGF0b21pY19kZWMoXHUwMDI2bWRldi1cdTAwM2VudW1fcmVxdWVzdHMpYCAqYmVmb3JlKiBgbWRldi1cdTAwM2VvcHMtXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoYXTigJlzIHRoZSBjb3JlIGZpeDogZW5zdXJpbmcgdGhlIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAqYmVmb3JlKiBhbnkgcG9zc2libGUgZGVhbGxvY2F0aW9uIG9jY3Vycy4gIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgYnV0IGNydWNpYWwgZml4IHRvIHByZXZlbnQgdGhpcyB2ZXJ5IGNvbW1vbiB0eXBlIG9mIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5Ob3csIHRoZSBgdml2aWQtY29yZS5jYCBjaGFuZ2VzIGFyZSBpbnRlcmVzdGluZywgc3BlY2lmaWNhbGx5IHRoZSBhZGRpdGlvbiBvZiBgdml2aWRfcmVxX2FsbG9jYCBhbmQgYHZpdmlkX3JlcV9mcmVlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYW5hZ2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBgbWVkaWFfcmVxdWVzdGAgc3RydWN0IGFuZCwgY3J1Y2lhbGx5LCB0byBtYWludGFpbiB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuICBUaGUgdXNlIG9mIGBremFsbG9jX29iaigqcmVxKWAgaXMgYSBzbGlnaHQgd3JpbmtsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhhdC4gYGt6YWxsb2Nfb2JqYD8gQWgsIEkgc2VlLCBwcm9iYWJseSBhIG1hY3JvIG9yIGEgdHlwbyAob3IgbWF5YmUgc29tZXRoaW5nIGN1c3RvbSBpbiB2aXZpZCB0aGF0IEkgZG9uJ3QgcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQpLiBCdXQsIGluIGFueSBjYXNlLCB0aGUgaW50ZW50IGlzIGNsZWFyOiB0byBhbGxvY2F0ZSBhbmQgemVybyB0aGUgbWVtb3J5LlxuXG5Fc3NlbnRpYWxseSwgYnkgaW1wbGVtZW50aW5nIGByZXFfYWxsb2NgIGFuZCBgcmVxX2ZyZWVgIHdpdGhpbiBgdml2aWRgLCB0aGV5IGFyZSBub3cgY29udHJvbGxpbmcgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiB0aGUgcmVxdWVzdCwgYW5kIGltcG9ydGFudGx5LCBnZXR0aW5nIGFuZCBwdXR0aW5nIGEgcmVmZXJlbmNlIG9uIHRoZSBgdjRsMl9kZXZgIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBUaGlzIHByZXZlbnRzIGB2NGwyX2RldmAgZnJvbSBiZWluZyBmcmVlZCBwcmVtYXR1cmVseSBpZiB0aGVyZSBhcmUgc3RpbGwgcmVxdWVzdHMgb3V0c3RhbmRpbmcuXG5cblRoaXMgaXMgYSB3ZWxsLXVuZGVyc3Rvb2QgcGF0dGVybiBmb3IgbWFuYWdpbmcgb2JqZWN0IGxpZmV0aW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBjYWxsYmFja3MgdGhhdCBtaWdodCByZWxlYXNlIHJlc291cmNlcy4gVGhlIHBhdGNoIGVzc2VudGlhbGx5IHJlc29sdmVzIGFuIG9iamVjdCBsaWZldGltZSBpc3N1ZS5cblxuQ3J1Y2lhbGx5LCB0aGUgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYXNwZWN0IGlzIG9idmlvdXMuIFRoaXMga2luZCBvZiB1c2UtYWZ0ZXItZnJlZSBpcyAqZXhhY3RseSogd2hhdCBLQVNBTiBpcyBidWlsdCB0byBkZXRlY3QuIFRoaXMgcGF0Y2ggZml4ZXMgYSBjbGFzc2ljIHJlZmVyZW5jZSBjb3VudGluZy9VQUYgYnVnLCBzbyBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIGZvciBkZXRlY3RpbmcgdGhpcy5cblxuVGhlcmVmb3JlLCB0aGlzIGZpeCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIGRvbWFpbiBvZiBLQVNBTi4gVGhlcmUncyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGZpZWxkcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVuaW5pdGlhbGl6ZWQsIHRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgdGhhdCBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgcHJpb3IgaW5pdGlhbGl6YXRpb24uIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgZnV6emluZyBpbiB0aGlzIGNhc2UuIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGlzIGV4cGxpY2l0bHkgemVyb2VkLCBhbmQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBXZSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFuZCBlbnN1cmluZyBhIHJlbGVhc2UgaGFwcGVucyBpbiB0aGUgY29ycmVjdCBvcmRlci4gVGhlIHJvb3QgY2F1c2UgaXMgYSB1c2UtYWZ0ZXItZnJlZSwgcGxhaW4gYW5kIHNpbXBsZSwgYW5kIEtBU0FOIGhhcyBnb3QgaXQgY292ZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMSwiT3V0cHV0VG9rZW5zIjozMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTI6NTc6MTQuMDcwNjM5OFoiLCJTZXEiOjYwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIHRoZSBgbWVkaWFfcmVxdWVzdGAgbGlmZWN5Y2xlIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIEluIGBtZWRpYV9yZXF1ZXN0X3JlbGVhc2UoKWAsIGBhdG9taWNfZGVjKFxcdTAwMjZtZGV2LVxcdTAwM2VudW1fcmVxdWVzdHMpYCB3YXMgcHJldmlvdXNseSBjYWxsZWQgYWZ0ZXIgYG1kZXYtXFx1MDAzZW9wcy1cXHUwMDNlcmVxX2ZyZWUocmVxKWAuIFRoaXMgY291bGQgbGVhZCB0byBhIFVBRiBpZiBgcmVxX2ZyZWVgIGRyb3BwZWQgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBtZWRpYSBkZXZpY2UsIGNhdXNpbmcgYG1kZXZgIHRvIGJlIGZyZWVkIGJlZm9yZSB0aGUgYGF0b21pY19kZWNgIG9wZXJhdGlvbi4gVGhlIHBhdGNoIHJlb3JkZXJzIHRoZXNlIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGUgVUFGLiBBZGRpdGlvbmFsbHksIGl0IGltcGxlbWVudHMgYHJlcV9hbGxvY2AgYW5kIGByZXFfZnJlZWAgaW4gdGhlIHZpdmlkIHRlc3QgZHJpdmVyIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgYHY0bDJfZGV2YCByZWZlcmVuY2UgY291bnQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgc3RyaWN0bHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZXRpbWUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGFyZSBubyBuZXcgZmllbGRzIGFkZGVkIHRoYXQgY291bGQgYmUgbGVmdCB1bmluaXRpYWxpemVkLCBubyBjb21wbGV4IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbnRyb2wgZmxvdyBjaGFuZ2VzIGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gYHZpdmlkX3JlcV9hbGxvY2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLlxcblxcblRoZXJlZm9yZSwgdGhpcyBidWcgY2xhc3MgKFVBRikgaXMgZnVsbHkgY292ZXJlZCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[1] Phase: Succeeded StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 12:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 12:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2] Phase: Succeeded StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 12:57:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 12:57:25 +0000 UTC FinishedAt: 2026-08-18 12:57:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowbs2br/series-workflowbs2br-convert-artifact-473712339/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 12:57:35 +0000 UTC FinishedAt: 2026-08-18 13:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 12:57:35 +0000 UTC FinishedAt: 2026-08-18 13:13:54 +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:*e5387361-9fd3-44b6-8a78-94b415d6ca16,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-workflowbs2br/series-workflowbs2br-convert-artifact-473712339/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": "48fa854b-e7ad-4bdb-b718-a27a46698396", "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-workflowbs2br/series-workflowbs2br-build-action-3962276353/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 12:57:35 +0000 UTC FinishedAt: 2026-08-18 13:13:44 +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:*e5387361-9fd3-44b6-8a78-94b415d6ca16,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-workflowbs2br/series-workflowbs2br-convert-artifact-473712339/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": "48fa854b-e7ad-4bdb-b718-a27a46698396", "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-workflowbs2br/series-workflowbs2br-build-action-3962276353/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 13:13:54 +0000 UTC FinishedAt: 2026-08-18 13:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 13:13:54 +0000 UTC FinishedAt: 2026-08-18 13:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 13:13:54 +0000 UTC FinishedAt: 2026-08-18 13:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 13:13:54 +0000 UTC FinishedAt: 2026-08-18 13:13:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowbs2br/series-workflowbs2br-convert-artifact-1030177738/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 13:14:04 +0000 UTC FinishedAt: 2026-08-18 13:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 13:14:04 +0000 UTC FinishedAt: 2026-08-18 13:16:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48fa854b-e7ad-4bdb-b718-a27a46698396,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-workflowbs2br/series-workflowbs2br-build-action-3962276353/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-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 13:16:11 +0000 UTC FinishedAt: 2026-08-18 13:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 13:16:11 +0000 UTC FinishedAt: 2026-08-18 13:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 13:16:11 +0000 UTC FinishedAt: 2026-08-18 13:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 13:16:11 +0000 UTC FinishedAt: 2026-08-18 13:32:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e5387361-9fd3-44b6-8a78-94b415d6ca16,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-workflowbs2br/series-workflowbs2br-convert-artifact-1030177738/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": "3b609358-6640-4b8b-870a-56e852a12ade", "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-workflowbs2br/series-workflowbs2br-build-action-1858054126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 13:16:11 +0000 UTC FinishedAt: 2026-08-18 13:32:16 +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:*e5387361-9fd3-44b6-8a78-94b415d6ca16,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-workflowbs2br/series-workflowbs2br-convert-artifact-1030177738/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": "3b609358-6640-4b8b-870a-56e852a12ade", "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-workflowbs2br/series-workflowbs2br-build-action-1858054126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 13:32:26 +0000 UTC FinishedAt: 2026-08-18 13:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 13:32:26 +0000 UTC FinishedAt: 2026-08-18 13:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 13:32:26 +0000 UTC FinishedAt: 2026-08-18 13:34:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 13:32:26 +0000 UTC FinishedAt: 2026-08-18 13:34:31 +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:*3b609358-6640-4b8b-870a-56e852a12ade,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-workflowbs2br/series-workflowbs2br-build-action-1858054126/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-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"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:*48fa854b-e7ad-4bdb-b718-a27a46698396,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3b609358-6640-4b8b-870a-56e852a12ade,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-workflowbs2br/series-workflowbs2br-build-action-3962276353/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-workflowbs2br/series-workflowbs2br-build-action-1858054126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 13:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 13:34:46 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"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-workflowbs2br/series-workflowbs2br-convert-artifact-408344159/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 13:34:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 13:34:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 13:34:41 +0000 UTC FinishedAt: 2026-08-18 13:34:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 13:34:51 +0000 UTC FinishedAt: 2026-08-18 16:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbs2br[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["media_request_alloc","media_request_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8d3ae59288f1e7d58d76558a6ee96d533bc5019f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIDEO_VIVID","MEDIA_CONTROLLER","MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"dcd681b1-ed1e-4484-8a5d-18827cb93702","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 13:34:51 +0000 UTC FinishedAt: 2026-08-18 16:40:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48fa854b-e7ad-4bdb-b718-a27a46698396,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3b609358-6640-4b8b-870a-56e852a12ade,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-workflowbs2br/series-workflowbs2br-build-action-3962276353/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-workflowbs2br/series-workflowbs2br-build-action-1858054126/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-workflowbs2br/series-workflowbs2br-convert-artifact-408344159/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,}