Name: series-workflowc77jt Phase: Succeeded StartedAt: 2026-08-17 23:43:40 +0000 UTC FinishedAt: 2026-08-18 03:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[0] Phase: Succeeded StartedAt: 2026-08-17 23:43:40 +0000 UTC FinishedAt: 2026-08-17 23:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 23:43:40 +0000 UTC FinishedAt: 2026-08-17 23:48:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_VXCAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_VXCAN" ], "series_id": "ef095d48-7bd1-4b87-aeaa-156c979669cc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxcan_newlink", "vxcan_dellink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9WWENBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4Y2FuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBkZXZpY2UgdHJlZSBiaW5kaW5nIHVwZGF0ZXMsIGhhcmR3YXJlIGRyaXZlciBmaXhlcyAoc2xlZXAgbW9kZSBoYW5kbGluZyBpbiB0Y2FuNHg1eCwgUkszNTg4IHN1cHBvcnQgaW4gcm9ja2NoaXBfY2FuZmQsIGNsb2NrIGZyZXF1ZW5jeSBpbiBtX2Nhbl9wY2kpLCBhbmQgYSByZWZjb3VudGluZy9VQUYgZml4IGluIHZ4Y2FuLmMgdXNpbmcgbmV0ZGV2aWNlX3RyYWNrZXIuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IGV4cG9zZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIHN0YXRlLiBUaGUgdnhjYW4uYyBmaXggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUvcmVmY291bnRpbmcgaXNzdWUgd2hpY2ggaXMgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5pbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuQEAgLTE2LDcgJiM0MzsxNiw5IEBAIGFsbE9mOlxuIHByb3BlcnRpZXM6XG4gICBjb21wYXRpYmxlOlxuICAgICBvbmVPZjpcbi0gICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxuJiM0MzsgICAgICAtIGVudW06XG4mIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4mIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU4OC1jYW5mZFxuICAgICAgIC0gaXRlbXM6XG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43ODc0ZTllNDkyMjQ0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXG5AQCAtMCwwICYjNDM7MSw2NCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbiYjNDM7JVlBTUwgMS4yXG4mIzQzOy0tLVxuJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcbiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4mIzQzO1xuJiM0Mzt0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEVkdWFyZCBCb3N0aW5hIFx1MDAzY2VnYm9zdGluYUBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiB0aSxhbTM1MTctaGVjY1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogM1xuJiM0MztcbiYjNDM7ICByZWctbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogaGVjY1xuJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjLXJhbVxuJiM0MzsgICAgICAtIGNvbnN0OiBtYnhcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHRpLHVzZS1oZWNjMWludDpcbiYjNDM7ICAgIHR5cGU6IGJvb2xlYW5cbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlXG4mIzQzOyAgICAgIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0LCB0aGUgSEVDQzBJTlQgaW50ZXJydXB0IGxpbmVcbiYjNDM7ICAgICAgd2lsbCBiZSB1c2VkLlxuJiM0MzsgICAgZGVmYXVsdDogZmFsc2VcbiYjNDM7XG4mIzQzOyAgeGNlaXZlci1zdXBwbHk6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gcmVnLW5hbWVzXG4mIzQzOyAgLSBpbnRlcnJ1cHRzXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgY2FuQDVjMDUwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7dGksYW0zNTE3LWhlY2NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4mIzQzOyAgICAgICAgICAgICAgXHUwMDNjMHg1YzA1MjAwMCAweDIwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDtoZWNjXCYjMzQ7LCBcJiMzNDtoZWNjLXJhbVwmIzM0OywgXCYjMzQ7bWJ4XCYjMzQ7O1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZoZWNjX2NrXHUwMDNlO1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSwzMiAmIzQzOzAsMCBAQFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxuLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLVxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcbi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLlxuLVxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XG4tLSBjb21wYXRpYmxlOiBcJiMzNDt0aSxhbTM1MTctaGVjY1wmIzM0O1xuLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJiMzOTtoZWNjJiMzOTssICYjMzk7aGVjYy1yYW0mIzM5O1xuLSAgICAgICBhbmQgJiMzOTttYngmIzM5O1xuLS0gcmVnLW5hbWVzIDpcJiMzNDtoZWNjXCYjMzQ7LCBcJiMzNDtoZWNjLXJhbVwmIzM0OywgXCYjMzQ7bWJ4XCYjMzQ7XG4tLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzXG4tLSBjbG9ja3M6IGNsb2NrIHBoYW5kbGVzIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHRpLHVzZS1oZWNjMWludDogaWYgcHJvdmlkZWQgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHNcbi1cdFx0ICAgb24gSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQgSEVDQzBJTlQgaW50ZXJydXB0XG4tXHRcdCAgIGxpbmUgd2lsbCBiZSB1c2VkLlxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXG4tXG4tRXhhbXBsZTpcbi1cbi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOlxuLVx0aGVjYzogY2FuQDVjMDUwMDAwIHtcbi1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3RpLGFtMzUxNy1oZWNjXCYjMzQ7O1xuLVx0XHRyZWcgPSBcdTAwM2MweDVjMDUwMDAwIDB4ODBcdTAwM2UsXG4tXHRcdCAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4tXHRcdCAgICAgIFx1MDAzYzB4NWMwNTIwMDAgMHgyMDBcdTAwM2U7XG4tXHRcdHJlZy1uYW1lcyA9IFwmIzM0O2hlY2NcJiMzNDssIFwmIzM0O2hlY2MtcmFtXCYjMzQ7LCBcJiMzNDttYnhcJiMzNDs7XG4tXHRcdGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbi1cdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2aGVjY19ja1x1MDAzZTtcbi1cdH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5pbmRleCA0MDgzNTQ5NzA1MGE1Li4xODAxNWU2MGZkNmQ2IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbkBAIC04LDcgJiM0Mzs4LDcgQEAgdGl0bGU6XG4gICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4tICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXHUwMDNlXG4mIzQzOyAgLSBIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG5AQCAtNTMsNiAmIzQzOzUzLDkgQEAgcHJvcGVydGllczpcbiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuICAgICBkZXNjcmlwdGlvbjogQ0FOIFRYX09MLCBUWF9UTCBhbmQgUlggRklGT3MgaGF2ZSBFQ0Mgc3VwcG9ydChBWEkgQ0FOKVxuIFxuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG5pbmRleCAzODEzMjM0MjNiNGNhLi5jOGNmMGJjNDliNjlhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG5AQCAtOTMsOSAmIzQzOzkzLDkgQEBcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzE0NC44MjdcJiMzNDsgY3k9XCYjMzQ7MTU5LjE0M1wmIzM0OyByeD1cJiMzNDsxMC44ODY2XCYjMzQ7IHJ5PVwmIzM0OzQuMzkzMDhcJiMzNDsvXHUwMDNlXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cJiMzNDs1OS40MzY0XCYjMzQ7IGN5PVwmIzM0OzE0Mi44MjNcJiMzNDsgcng9XCYjMzQ7Ny4zNjQ1NVwmIzM0OyByeT1cJiMzNDs0LjM5MzA4XCYjMzQ7L1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCYjMzQ7MTQ0LjgyN1wmIzM0OyBjeT1cJiMzNDsxMjkuMTk2XCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0Oy9cdTAwM2Vcbi0gICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzE0My4wNzdcJiMzNDsgY3k9XCYjMzQ7MTgwLjUzXCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0Oy9cdTAwM2VcbiAgIFx1MDAzYy9nXHUwMDNlXG4tICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzExMC4zODZcJiMzNDsgY3k9XCYjMzQ7MTgwLjUzXCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0OyBmaWxsPVwmIzM0OyNmZmNiMzVcJiMzNDsgc3Ryb2tlPVwmIzM0OyMwMDBcJiMzNDsgc3Ryb2tlLWxpbmVjYXA9XCYjMzQ7c3F1YXJlXCYjMzQ7IHN0cm9rZS13aWR0aD1cJiMzNDsuNDk5OTk5XCYjMzQ7L1x1MDAzZVxuJiM0MzsgIFx1MDAzY2VsbGlwc2UgY3g9XCYjMzQ7MTEwLjM4NlwmIzM0OyBjeT1cJiMzNDsxODAuNTNcJiMzNDsgcng9XCYjMzQ7MTAuODg2NlwmIzM0OyByeT1cJiMzNDs0LjM5MzA4XCYjMzQ7IGZpbGw9XCYjMzQ7IzI4YTRmZlwmIzM0OyBzdHJva2U9XCYjMzQ7IzAwMFwmIzM0OyBzdHJva2UtbGluZWNhcD1cJiMzNDtzcXVhcmVcJiMzNDsgc3Ryb2tlLXdpZHRoPVwmIzM0Oy40OTk5OTlcJiMzNDsvXHUwMDNlXG4mIzQzOyAgXHUwMDNjZWxsaXBzZSBjeD1cJiMzNDsxNDMuMDc3XCYjMzQ7IGN5PVwmIzM0OzE4MC41M1wmIzM0OyByeD1cJiMzNDsxMC44ODY2XCYjMzQ7IHJ5PVwmIzM0OzQuMzkzMDhcJiMzNDsgZmlsbD1cJiMzNDsjZmZjYjM1XCYjMzQ7IHN0cm9rZT1cJiMzNDsjMDAwXCYjMzQ7IHN0cm9rZS1saW5lY2FwPVwmIzM0O3NxdWFyZVwmIzM0OyBzdHJva2Utd2lkdGg9XCYjMzQ7LjQ5OTk5OVwmIzM0Oy9cdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxNzkuNDI2ODhcJiMzNDsgZm9udC1zaXplPVwmIzM0OzMuMTc1cHhcJiMzNDsgeG1sOnNwYWNlPVwmIzM0O3ByZXNlcnZlXCYjMzQ7XHUwMDNlXHUwMDNjdHNwYW4geD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxNzkuNDI2ODhcJiMzNDsgZHk9XCYjMzQ7MC42MDAwMDAwMlwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2VBY2Nlc3NpYmxlXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjdHNwYW4geD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxODMuMzk1NjNcJiMzNDtcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjdGV4dCB4PVwmIzM0OzE0My41ODY5XCYjMzQ7IHk9XCYjMzQ7MTc5LjUyNzk1XCYjMzQ7IHhtbDpzcGFjZT1cJiMzNDtwcmVzZXJ2ZVwmIzM0O1x1MDAzZVx1MDAzY3RzcGFuIHg9XCYjMzQ7MTQzLjU4NjlcJiMzNDsgeT1cJiMzNDsxNzkuNTI3OTVcJiMzNDsgZHk9XCYjMzQ7MSAwIDAgMCAwIDBcJiMzNDsgZm9udC1mYW1pbHk9XCYjMzQ7c2Fucy1zZXJpZlwmIzM0OyBmb250LXNpemU9XCYjMzQ7Mi44MjIyMnB4XCYjMzQ7IHRleHQtYWxpZ249XCYjMzQ7Y2VudGVyXCYjMzQ7IHRleHQtYW5jaG9yPVwmIzM0O21pZGRsZVwmIzM0OyBzdHlsZT1cJiMzNDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbFwmIzM0O1x1MDAzZUluYWNjZXNzaWJsZVx1MDAzYy90c3Bhblx1MDAzZVx1MDAzY3RzcGFuIHg9XCYjMzQ7MTQzLjU4NjlcJiMzNDsgeT1cJiMzNDsxODMuMzY3ODZcJiMzNDsgZm9udC1zaXplPVwmIzM0OzMuMTc1cHhcJiMzNDtcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjZyBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0O1x1MDAzZVxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDk5MTQ2MDA1MGRhNzQuLjZiNDlhMmM4MGNkNWQgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0yOTU3Myw3ICYjNDM7Mjk1NzMsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG4gRjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcbiBcbiBYSUxJTlggQ0FOIERSSVZFUlxuLU06XHRBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuJiM0MztNOlx0SGFyaW5pIFQgXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVx1MDAzZVxuIEw6XHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXG4gUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuQEAgLTI0NjQsNyAmIzQzOzI0NjQsNyBAQCBzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKm1fY2FuX2NsYXNzX2FsbG9jYXRlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gXHR9XG4gXG4tXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7d2FrZXVwLXNvdXJjZVwmIzM0OykpXG4mIzQzO1x0aWYgKGRldi1cdTAwM2VvZl9ub2RlIFx1MDAyNlx1MDAyNiBvZl9wcm9wZXJ0eV9wcmVzZW50KGRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDt3YWtldXAtc291cmNlXCYjMzQ7KSlcbiBcdFx0ZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpO1xuIFxuIFx0LyogR2V0IFRYIEZJRk8gc2l6ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuaW5kZXggZWIzMWVkMWY5NjQ0OS4uZDExYTdjODhmYzMyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5AQCAtMTI2LDcgJiM0MzsxMjYsNyBAQCBzdGF0aWMgaW50IG1fY2FuX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gXHRtY2FuX2NsYXNzLVx1MDAzZW5ldC1cdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwY2ksIDApO1xuIFx0bWNhbl9jbGFzcy1cdTAwM2VwbV9jbG9ja19zdXBwb3J0ID0gMTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlcG1fd2FrZV9zb3VyY2UgPSAwO1xuLVx0bWNhbl9jbGFzcy1cdTAwM2VjYW4uY2xvY2suZnJlcSA9IGlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuJiM0MztcdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBNX0NBTl9DTE9DS19GUkVRX0VITDtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlaXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlb3BzID0gXHUwMDI2bV9jYW5fcGNpX29wcztcbiBcbkBAIC0xODMsOCAmIzQzOzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxuIFx0XHRcdCBtX2Nhbl9wY2lfc3VzcGVuZCwgbV9jYW5fcGNpX3Jlc3VtZSk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xuLVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzIpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbiYjNDM7XHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpIH0sXG4mIzQzO1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxuIFx0eyAgfVx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtX2Nhbl9wY2lfaWRfdGFibGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXG5pbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuQEAgLTIxMSw4ICYjNDM7MjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXG4gXHRyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi1cdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgJiM0MzsgYWRkcl9vZmZzZXQsIHZhbCwgdmFsX2NvdW50KTtcbiB9XG4gXG4tc3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHJlZ3VsYXRvciAqcmVnLCBpbnQgZW5hYmxlKVxuJiM0MztzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSlcbiB7XG4mIzQzO1x0c3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi1cdTAwM2Vwb3dlcjtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLFxuJiM0MztcdCAqIHNpbmNlIGEgd2FrZS11cCBldmVudCwgUlNUIHBpbiB0b2dnbGUsIG9yIHBvd2VyIGN5Y2xlIGFyZSB0aGUgb25seVxuJiM0MztcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxuJiM0MztcdCAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXRcbiYjNDM7XHQgKiBjYW4mIzM5O3QgYmUgZGV0ZXJtaW5lZCBoZXJlLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiBcJiMzNDs4LjQuMyBTbGVlcCBNb2RlXCYjMzQ7XG4mIzQzO1x0ICogaHR0cHM6Ly93d3cudGkuY29tL2xpdC9ncG4vdGNhbjQ1NTBcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvIFx1MDAyNlx1MDAyNiAhZW5hYmxlKSB7XG4mIzQzO1x0XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfQ09ORklHLFxuJiM0MztcdFx0XHRcdFx0IFRDQU40WDVYX01PREVfU0VMX01BU0ssXG4mIzQzO1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TTEVFUCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlc3BpLVx1MDAzZWRldiwgXCYjMzQ7U2V0dGluZyBzbGVlcCBtb2RlIGZhaWxlZCAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0RVJSX1BUUihyZXQpKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQ3Niw3ICYjNDM7NDk5LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdFx0Z290byBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY7XG4gXHR9XG4gXG4tXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cdTAwM2Vwb3dlciwgMSk7XG4mIzQzO1x0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0VuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXFxuXCYjMzQ7LFxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG5AQCAtNTMxLDcgJiM0Mzs1NTQsNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0cmV0dXJuIDA7XG4gXG4gb3V0X3Bvd2VyOlxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuJiM0MztcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcbiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OlxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy1cdTAwM2VuZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC01NDMsNyAmIzQzOzU2Niw3IEBAIHN0YXRpYyB2b2lkIHRjYW40eDV4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcbiBcdG1fY2FuX2NsYXNzX3VucmVnaXN0ZXIoXHUwMDI2cHJpdi1cdTAwM2VjZGV2KTtcbiBcbi1cdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAwKTtcbiYjNDM7XHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XG4gXG4gXHRtX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LVx1MDAzZWNkZXYubmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5AQCAtNTAsNiAmIzQzOzUwLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMgPSB7XG4gXHRcdFJLQ0FORkRfUVVJUktfQ0FORkRfQlJPS0VOLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTg4ID0ge1xuJiM0MztcdC5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LFxuJiM0MztcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxuJiM0MztcdFx0UktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV82LFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIHtcbiBcdHN3aXRjaCAobW9kZWwpIHtcbkBAIC01Nyw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIFx0XHRyZXR1cm4gXCYjMzQ7cmszNTY4djJcJiMzNDs7XG4gXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTY4VjM6XG4gXHRcdHJldHVybiBcJiMzNDtyazM1Njh2M1wmIzM0OztcbiYjNDM7XHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OlxuJiM0MztcdFx0cmV0dXJuIFwmIzM0O3JrMzU4OFwmIzM0OztcbiBcdH1cbiBcbiBcdHJldHVybiBcJiMzNDtcdTAwM2N1bmtub3duXHUwMDNlXCYjMzQ7O1xuQEAgLTE0OCw2ICYjNDM7MTU2LDEyIEBAIHN0YXRpYyBpbnQgcmtjYW5mZF9zZXRfYml0dGltaW5nKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4gXG4gXHRya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX0ZEX0RBVEFfQklUVElNSU5HLCByZWdfZGJ0KTtcbiBcbiYjNDM7XHQvKiBSSzM1ODggQ0FOLUZEIEJSUyB3b3JrcyB3aXRoIFREQyBkaXNhYmxlZC4gKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcbiYjNDM7XHRcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR0ZGNvID0gKHByaXYtXHUwMDNlY2FuLmNsb2NrLmZyZXEgLyBkYnQtXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcbiBcdHRkY28gPSBtaW4odGRjbywgRklFTERfTUFYKFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTl9URENfT0ZGU0VUKSk7XG4gXG5AQCAtODQ2LDYgJiM0Mzs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7XG4gXHR9LCB7XG4gXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4djMtY2FuZmRcJiMzNDssXG4gXHRcdC5kYXRhID0gXHUwMDI2cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsXG4mIzQzO1x0fSwge1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1ODgtY2FuZmRcJiMzNDssXG4mIzQzO1x0XHQuZGF0YSA9IFx1MDAyNnJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCxcbiBcdH0sIHtcbiBcdFx0Lyogc2VudGluZWwgKi9cbiBcdH0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuaW5kZXggNDc1YzA0MDllMjE1YS4uMjRlODdkYWExZGYwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuQEAgLTI4MSw3ICYjNDM7MjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4ge1xuIFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xuIFxuLVx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KVxuJiM0MztcdFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjgsIHJlZyk7XG4gfVxuIFxuIGludCBya2NhbmZkX2hhbmRsZV9yeF9pbnQoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG5pbmRleCA5MzEzMWM3ZDdmNTRkLi45NWJlYTliZmQ4YTJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG5AQCAtMjE0LDcgJiM0MzsyMTQsOCBAQFxuICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XG4tI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KVxuJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KVxuJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1ODggR0VOTUFTSyg3LCA1KVxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRlVMTF9XQVRFUk1BUksgR0VOTUFTSygzLCAxKVxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuQEAgLTMzMSw2ICYjNDM7MzMyLDExIEBAXG4gICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHlcbiAgKiBhdCA4MCBNSHouXG4gICpcbiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLlxuJiM0MzsgKiBJbiB0aGF0IHNldHVwIHJ4X2ZpZm9fZW1wdHlfZXJyb3JzIGluY3JlbWVudHMgd2hlbiB0aGUgYnVzXG4mIzQzOyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2VcbiYjNDM7ICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLlxuJiM0MzsgKlxuICAqIFRvIHdvcmthcm91bmQgdGhpcyBwcm9ibGVtLCBjaGVjayBmb3IgZW1wdHkgRklGTyB3aXRoXG4gICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdFxuICAqIGVhcmx5LlxuQEAgLTM0NCw2ICYjNDM7MzUwLDggQEBcbiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlciYjMzk7cyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heVxuICAqIGludGVybWl0dGVudGx5IGNoYW5nZSBpbnRvIHN0YW5kYXJkIGZyYW1lc1xuICAqXG4mIzQzOyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLlxuJiM0MzsgKlxuICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZVxuICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgmIzM5O2VkIENBTiBmcmFtZXMgaW5cbiAgKiBya2NhbmZkX3J4c3R4X2ZpbHRlcigpLlxuQEAgLTQyNCw2ICYjNDM7NDMyLDkgQEBcbiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDFcbiAgKlxuICAqIC0gVFggc3RhcnZhdGlvbiBhZnRlciByZXBlYXRlZCBCdXMtT2ZmXG4mIzQzOyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGFcbiYjNDM7ICogICAxMC1jeWNsZSBCdXMtT2ZmIHJlY292ZXJ5IHRlc3QsIDkgY3ljbGVzIGZhaWxlZCB0byBzZW5kIGFmdGVyIHRoZVxuJiM0MzsgKiAgIGNvbnRyb2xsZXIgcmVzdGFydGVkLlxuICAqICAgVG8gcmVwcm9kdWNlOlxuICAqICAgaG9zdDpcbiAgKiAgICAgc2xlZXAgMyBcdTAwMjZcdTAwMjYgY2FuZ2VuIGNhbjAgLUkyIC1MaSAtRGkgLXAxMCAtZyAwLjBcbkBAIC00MzQsNiAmIzQzOzQ0NSw3IEBAXG4gZW51bSBya2NhbmZkX21vZGVsIHtcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLFxuIFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXG4mIzQzO1x0UktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsXG4gfTtcbiBcbiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuQEAgLTE1NjUsNyAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IGdzX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcbiBcdGlmIChpY291bnQgXHUwMDNlIHR5cGVfbWF4KHBhcmVudC1cdTAwM2VjaGFubmVsX2NudCkpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZpbnRmLVx1MDAzZWRldixcbi1cdFx0XHRcJiMzNDtEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFwmIzM0O0RyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcblwmIzM0OyxcbiBcdFx0XHR0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuQEAgLTMzLDYgJiM0MzszMyw3IEBAIE1PRFVMRV9BTElBU19SVE5MX0xJTksoRFJWX05BTUUpO1xuIFxuIHN0cnVjdCB2eGNhbl9wcml2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1XHQqcGVlcjtcbiYjNDM7XHRuZXRkZXZpY2VfdHJhY2tlciBwZWVyX3RyYWNrZXI7XG4gfTtcbiBcbiBzdGF0aWMgbmV0ZGV2X3R4X3QgdnhjYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqb3NrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC0yNjgsOSAmIzQzOzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGNyb3NzIGxpbmsgdGhlIGRldmljZSBwYWlyICovXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIHBlZXIpO1xuJiM0MztcdG5ldGRldl9ob2xkKHBlZXIsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIGRldik7XG4mIzQzO1x0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yODEsMjQgJiM0MzsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIHtcbiYjNDM7XHRuZXRkZXZpY2VfdHJhY2tlciAqcGVlcl90cmFja2VyO1xuIFx0c3RydWN0IHZ4Y2FuX3ByaXYgKnByaXY7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0cGVlciA9IHJ0bmxfZGVyZWZlcmVuY2UocHJpdi1cdTAwM2VwZWVyKTtcbiYjNDM7XHRwZWVyX3RyYWNrZXIgPSBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlcjtcbiYjNDM7XHRwZWVyID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuJiM0MztcdGlmICghcGVlcilcbiYjNDM7XHRcdHJldHVybjtcbiBcbi1cdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxuLVx0ICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkXG4tXHQgKiBub3QgYmVpbmcgZnJlZWQgYmVmb3JlIG9uZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuLVx0ICovXG4tXHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuIFxuLVx0aWYgKHBlZXIpIHtcbi1cdFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuLVx0XHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xuLVx0fVxuJiM0MztcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbiYjNDM7XHRkZXYgPSB1bnJjdV9wb2ludGVyKHhjaGcoXHUwMDI2cHJpdi1cdTAwM2VwZWVyLCBOVUxMKSk7XG4mIzQzO1x0aWYgKGRldilcbiYjNDM7XHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xuJiM0MztcbiYjNDM7XHRuZXRkZXZfcHV0KHBlZXIsIHBlZXJfdHJhY2tlcik7XG4mIzQzO1x0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCAmIzQzOyAxXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX1ZYQ0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhjYW5fbmV3bGluayYjMzQ7LAogICAgJiMzNDt2eGNhbl9kZWxsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwKaW5kZXggYTA3N2MwMzMwMDEzNy4uODFlMmI2ZGZlYjAyMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sCkBAIC0xNiw3ICYjNDM7MTYsOSBAQCBhbGxPZjoKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CiAgICAgb25lT2Y6Ci0gICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZAomIzQzOyAgICAgIC0gZW51bToKJiM0MzsgICAgICAgICAgLSByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZAomIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU4OC1jYW5mZAogICAgICAgLSBpdGVtczoKICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2My1jYW5mZAogICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43ODc0ZTllNDkyMjQ0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbApAQCAtMCwwICYjNDM7MSw2NCBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBUZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQykKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gRWR1YXJkIEJvc3RpbmEgJmx0O2VnYm9zdGluYUBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtICRyZWY6IGNhbi1jb250cm9sbGVyLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiB0aSxhbTM1MTctaGVjYwomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMwomIzQzOwomIzQzOyAgcmVnLW5hbWVzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjCiYjNDM7ICAgICAgLSBjb25zdDogaGVjYy1yYW0KJiM0MzsgICAgICAtIGNvbnN0OiBtYngKJiM0MzsKJiM0MzsgIGludGVycnVwdHM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICB0aSx1c2UtaGVjYzFpbnQ6CiYjNDM7ICAgIHR5cGU6IGJvb2xlYW4KJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgSWYgcHJvdmlkZWQsIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzIG9uIHRoZQomIzQzOyAgICAgIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0LCB0aGUgSEVDQzBJTlQgaW50ZXJydXB0IGxpbmUKJiM0MzsgICAgICB3aWxsIGJlIHVzZWQuCiYjNDM7ICAgIGRlZmF1bHQ6IGZhbHNlCiYjNDM7CiYjNDM7ICB4Y2VpdmVyLXN1cHBseToKJiM0MzsgICAgZGVzY3JpcHRpb246IFJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyLgomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSByZWctbmFtZXMKJiM0MzsgIC0gaW50ZXJydXB0cwomIzQzOyAgLSBjbG9ja3MKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgY2FuQDVjMDUwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDs7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MHg1YzA1MDAwMCAweDgwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDVjMDUzMDAwIDB4MTgwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDVjMDUyMDAwIDB4MjAwJmd0OzsKJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9ICYjMzQ7aGVjYyYjMzQ7LCAmIzM0O2hlY2MtcmFtJiMzNDssICYjMzQ7bWJ4JiMzNDs7CiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzID0gJmx0OzI0Jmd0OzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2hlY2NfY2smZ3Q7OwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmMGE3Y2ZlMzI5My4uMDAwMDAwMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDMyICYjNDM7MCwwIEBACi1UZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQykKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24sIHdoYXQgdGhlIGRldmljZSBub2RlCi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLgotCi1SZXF1aXJlZCBwcm9wZXJ0aWVzOgotLSBjb21wYXRpYmxlOiAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDsKLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJiMzOTtoZWNjJiMzOTssICYjMzk7aGVjYy1yYW0mIzM5OwotICAgICAgIGFuZCAmIzM5O21ieCYjMzk7Ci0tIHJlZy1uYW1lcyA6JiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OwotLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzCi0tIGNsb2NrczogY2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscykKLQotT3B0aW9uYWwgcHJvcGVydGllczoKLS0gdGksdXNlLWhlY2MxaW50OiBpZiBwcm92aWRlZCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cwotCQkgICBvbiBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCBIRUNDMElOVCBpbnRlcnJ1cHQKLQkJICAgbGluZSB3aWxsIGJlIHVzZWQuCi0tIHhjZWl2ZXItc3VwcGx5OiByZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlcgotCi1FeGFtcGxlOgotCi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOgotCWhlY2M6IGNhbkA1YzA1MDAwMCB7Ci0JCWNvbXBhdGlibGUgPSAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDs7Ci0JCXJlZyA9ICZsdDsweDVjMDUwMDAwIDB4ODAmZ3Q7LAotCQkgICAgICAmbHQ7MHg1YzA1MzAwMCAweDE4MCZndDssCi0JCSAgICAgICZsdDsweDVjMDUyMDAwIDB4MjAwJmd0OzsKLQkJcmVnLW5hbWVzID0gJiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OzsKLQkJaW50ZXJydXB0cyA9ICZsdDsyNCZndDs7Ci0JCWNsb2NrcyA9ICZsdDsmYW1wO2hlY2NfY2smZ3Q7OwotCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKaW5kZXggNDA4MzU0OTcwNTBhNS4uMTgwMTVlNjBmZDZkNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbApAQCAtOCw3ICYjNDM7OCw3IEBAIHRpdGxlOgogICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyCiAKIG1haW50YWluZXJzOgotICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gJmx0O2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbSZndDsKJiM0MzsgIC0gSGFyaW5pIFQgJmx0O2hhcmluaS50QGFtZC5jb20mZ3Q7CiAKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CkBAIC01Myw2ICYjNDM7NTMsOSBAQCBwcm9wZXJ0aWVzOgogICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKICAgICBkZXNjcmlwdGlvbjogQ0FOIFRYX09MLCBUWF9UTCBhbmQgUlggRklGT3MgaGF2ZSBFQ0Mgc3VwcG9ydChBWEkgQ0FOKQogCiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwppbmRleCAzODEzMjM0MjNiNGNhLi5jOGNmMGJjNDliNjlhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwpAQCAtOTMsOSAmIzQzOzkzLDkgQEAKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQ0LjgyNyYjMzQ7IGN5PSYjMzQ7MTU5LjE0MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7NTkuNDM2NCYjMzQ7IGN5PSYjMzQ7MTQyLjgyMyYjMzQ7IHJ4PSYjMzQ7Ny4zNjQ1NSYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQ0LjgyNyYjMzQ7IGN5PSYjMzQ7MTI5LjE5NiYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKLSAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQzLjA3NyYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAmbHQ7L2cmZ3Q7Ci0gICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTEwLjM4NiYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsgZmlsbD0mIzM0OyNmZmNiMzUmIzM0OyBzdHJva2U9JiMzNDsjMDAwJiMzNDsgc3Ryb2tlLWxpbmVjYXA9JiMzNDtzcXVhcmUmIzM0OyBzdHJva2Utd2lkdGg9JiMzNDsuNDk5OTk5JiMzNDsvJmd0OwomIzQzOyAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxMTAuMzg2JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0OyBmaWxsPSYjMzQ7IzI4YTRmZiYjMzQ7IHN0cm9rZT0mIzM0OyMwMDAmIzM0OyBzdHJva2UtbGluZWNhcD0mIzM0O3NxdWFyZSYjMzQ7IHN0cm9rZS13aWR0aD0mIzM0Oy40OTk5OTkmIzM0Oy8mZ3Q7CiYjNDM7ICAmbHQ7ZWxsaXBzZSBjeD0mIzM0OzE0My4wNzcmIzM0OyBjeT0mIzM0OzE4MC41MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7IGZpbGw9JiMzNDsjZmZjYjM1JiMzNDsgc3Ryb2tlPSYjMzQ7IzAwMCYjMzQ7IHN0cm9rZS1saW5lY2FwPSYjMzQ7c3F1YXJlJiMzNDsgc3Ryb2tlLXdpZHRoPSYjMzQ7LjQ5OTk5OSYjMzQ7LyZndDsKICAgJmx0O3RleHQgeD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxNzkuNDI2ODgmIzM0OyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgeG1sOnNwYWNlPSYjMzQ7cHJlc2VydmUmIzM0OyZndDsmbHQ7dHNwYW4geD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxNzkuNDI2ODgmIzM0OyBkeT0mIzM0OzAuNjAwMDAwMDImIzM0OyB0ZXh0LWFsaWduPSYjMzQ7Y2VudGVyJiMzNDsgdGV4dC1hbmNob3I9JiMzNDttaWRkbGUmIzM0OyZndDtBY2Nlc3NpYmxlJmx0Oy90c3BhbiZndDsmbHQ7dHNwYW4geD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxODMuMzk1NjMmIzM0OyZndDsmbHQ7dHNwYW4gZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7Jmd0O2ZvciBTJmx0Oy90c3BhbiZndDtXJmx0Oy90c3BhbiZndDsmbHQ7L3RleHQmZ3Q7CiAgICZsdDt0ZXh0IHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxNzkuNTI3OTUmIzM0OyB4bWw6c3BhY2U9JiMzNDtwcmVzZXJ2ZSYjMzQ7Jmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTQzLjU4NjkmIzM0OyB5PSYjMzQ7MTc5LjUyNzk1JiMzNDsgZHk9JiMzNDsxIDAgMCAwIDAgMCYjMzQ7IGZvbnQtZmFtaWx5PSYjMzQ7c2Fucy1zZXJpZiYjMzQ7IGZvbnQtc2l6ZT0mIzM0OzIuODIyMjJweCYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7IHN0eWxlPSYjMzQ7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWwmIzM0OyZndDtJbmFjY2Vzc2libGUmbHQ7L3RzcGFuJmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTQzLjU4NjkmIzM0OyB5PSYjMzQ7MTgzLjM2Nzg2JiMzNDsgZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7Jmd0OyZsdDt0c3BhbiBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsmZ3Q7Zm9yIFMmbHQ7L3RzcGFuJmd0O1cmbHQ7L3RzcGFuJmd0OyZsdDsvdGV4dCZndDsKICAgJmx0O2cgZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7Jmd0OwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA5OTE0NjAwNTBkYTc0Li42YjQ5YTJjODBjZDVkIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMjk1NzMsNyAmIzQzOzI5NTczLDcgQEAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sCiBGOglkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqCiAKIFhJTElOWCBDQU4gRFJJVkVSCi1NOglBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvICZsdDthcHBhbmEuZHVyZ2EucmFvQHhpbGlueC5jb20mZ3Q7CiYjNDM7TToJSGFyaW5pIFQgJmx0O2hhcmluaS50QGFtZC5jb20mZ3Q7CiBMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKQEAgLTI0NjQsNyAmIzQzOzI0NjQsNyBAQCBzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKm1fY2FuX2NsYXNzX2FsbG9jYXRlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JaWYgKGRldi0mZ3Q7b2Zfbm9kZSAmYW1wOyZhbXA7IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtJmd0O29mX25vZGUsICYjMzQ7d2FrZXVwLXNvdXJjZSYjMzQ7KSkKJiM0MzsJaWYgKGRldi0mZ3Q7b2Zfbm9kZSAmYW1wOyZhbXA7IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LSZndDtvZl9ub2RlLCAmIzM0O3dha2V1cC1zb3VyY2UmIzM0OykpCiAJCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoZGV2LCB0cnVlKTsKIAogCS8qIEdldCBUWCBGSUZPIHNpemUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYwppbmRleCBlYjMxZWQxZjk2NDQ5Li5kMTFhN2M4OGZjMzJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jCkBAIC0xMjYsNyAmIzQzOzEyNiw3IEBAIHN0YXRpYyBpbnQgbV9jYW5fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKIAltY2FuX2NsYXNzLSZndDtuZXQtJmd0O2lycSA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7CiAJbWNhbl9jbGFzcy0mZ3Q7cG1fY2xvY2tfc3VwcG9ydCA9IDE7CiAJbWNhbl9jbGFzcy0mZ3Q7cG1fd2FrZV9zb3VyY2UgPSAwOwotCW1jYW5fY2xhc3MtJmd0O2Nhbi5jbG9jay5mcmVxID0gaWQtJmd0O2RyaXZlcl9kYXRhOwomIzQzOwltY2FuX2NsYXNzLSZndDtjYW4uY2xvY2suZnJlcSA9IE1fQ0FOX0NMT0NLX0ZSRVFfRUhMOwogCW1jYW5fY2xhc3MtJmd0O2lycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7CiAJbWNhbl9jbGFzcy0mZ3Q7b3BzID0gJmFtcDttX2Nhbl9wY2lfb3BzOwogCkBAIC0xODMsOCAmIzQzOzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLAogCQkJIG1fY2FuX3BjaV9zdXNwZW5kLCBtX2Nhbl9wY2lfcmVzdW1lKTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0gewotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LAotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMiksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LAomIzQzOwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpIH0sCiYjNDM7CXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMikgfSwKIAl7ICB9CS8qIFRlcm1pbmF0aW5nIEVudHJ5ICovCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1fY2FuX3BjaV9pZF90YWJsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuYwppbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMKQEAgLTIxMSw4ICYjNDM7MjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsCiAJcmV0dXJuIHJlZ21hcF9idWxrX3dyaXRlKHByaXYtJmd0O3JlZ21hcCwgVENBTjRYNVhfTVJBTV9TVEFSVCAmIzQzOyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpOwogfQogCi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpCiYjNDM7c3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHRjYW40eDV4X3ByaXYgKnByaXYsIGludCBlbmFibGUpCiB7CiYjNDM7CXN0cnVjdCByZWd1bGF0b3IgKnJlZyA9IHByaXYtJmd0O3Bvd2VyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLAomIzQzOwkgKiBzaW5jZSBhIHdha2UtdXAgZXZlbnQsIFJTVCBwaW4gdG9nZ2xlLCBvciBwb3dlciBjeWNsZSBhcmUgdGhlIG9ubHkKJiM0MzsJICogd2F5cyB0byBleGl0IHNsZWVwIG1vZGUuCiYjNDM7CSAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXQKJiM0MzsJICogY2FuJiMzOTt0IGJlIGRldGVybWluZWQgaGVyZS4KJiM0MzsJICoKJiM0MzsJICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiAmIzM0OzguNC4zIFNsZWVwIE1vZGUmIzM0OwomIzQzOwkgKiBodHRwczovL3d3dy50aS5jb20vbGl0L2dwbi90Y2FuNDU1MAomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2V0X2dwaW8gJmFtcDsmYW1wOyAhZW5hYmxlKSB7CiYjNDM7CQlpbnQgcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgVENBTjRYNVhfQ09ORklHLAomIzQzOwkJCQkJIFRDQU40WDVYX01PREVfU0VMX01BU0ssCiYjNDM7CQkJCQkgVENBTjRYNVhfTU9ERV9TTEVFUCk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDtzcGktJmd0O2RldiwgJiMzNDtTZXR0aW5nIHNsZWVwIG1vZGUgZmFpbGVkICVwZVxuJiMzNDssCiYjNDM7CQkJCUVSUl9QVFIocmV0KSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoSVNfRVJSX09SX05VTEwocmVnKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTQ3Niw3ICYjNDM7NDk5LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJZ290byBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY7CiAJfQogCi0JcmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtJmd0O3Bvd2VyLCAxKTsKJiM0MzsJcmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycigmYW1wO3NwaS0mZ3Q7ZGV2LCAmIzM0O0VuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXG4mIzM0OywKIAkJCUVSUl9QVFIocmV0KSk7CkBAIC01MzEsNyAmIzQzOzU1NCw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiAKIG91dF9wb3dlcjoKLQl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDApOwomIzQzOwl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7CiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OgogCW1fY2FuX2NsYXNzX2ZyZWVfZGV2KG1jYW5fY2xhc3MtJmd0O25ldCk7CiAJcmV0dXJuIHJldDsKQEAgLTU0Myw3ICYjNDM7NTY2LDcgQEAgc3RhdGljIHZvaWQgdGNhbjR4NXhfY2FuX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCiAJbV9jYW5fY2xhc3NfdW5yZWdpc3RlcigmYW1wO3ByaXYtJmd0O2NkZXYpOwogCi0JdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtJmd0O3Bvd2VyLCAwKTsKJiM0MzsJdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApOwogCiAJbV9jYW5fY2xhc3NfZnJlZV9kZXYocHJpdi0mZ3Q7Y2Rldi5uZXQpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMKaW5kZXggMjlkZTBjMDFlNGVkYy4uMzdjMWMyMmM0MGM5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jCkBAIC01MCw2ICYjNDM7NTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHsKIAkJUktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sCiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODggPSB7CiYjNDM7CS5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LAomIzQzOwkucXVpcmtzID0gUktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV81IHwKJiM0MzsJCVJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNiwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGNvbnN0IGNoYXIgKl9fcmtjYW5mZF9nZXRfbW9kZWxfc3RyKGVudW0gcmtjYW5mZF9tb2RlbCBtb2RlbCkKIHsKIAlzd2l0Y2ggKG1vZGVsKSB7CkBAIC01Nyw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKQogCQlyZXR1cm4gJiMzNDtyazM1Njh2MiYjMzQ7OwogCWNhc2UgUktDQU5GRF9NT0RFTF9SSzM1NjhWMzoKIAkJcmV0dXJuICYjMzQ7cmszNTY4djMmIzM0OzsKJiM0MzsJY2FzZSBSS0NBTkZEX01PREVMX1JLMzU4ODoKJiM0MzsJCXJldHVybiAmIzM0O3JrMzU4OCYjMzQ7OwogCX0KIAogCXJldHVybiAmIzM0OyZsdDt1bmtub3duJmd0OyYjMzQ7OwpAQCAtMTQ4LDYgJiM0MzsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKIAogCXJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpOwogCiYjNDM7CS8qIFJLMzU4OCBDQU4tRkQgQlJTIHdvcmtzIHdpdGggVERDIGRpc2FibGVkLiAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7ZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KSB7CiYjNDM7CQlya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTiwgMCk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCXRkY28gPSAocHJpdi0mZ3Q7Y2FuLmNsb2NrLmZyZXEgLyBkYnQtJmd0O2JpdHJhdGUpICogMiAvIDM7CiAJdGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTsKIApAQCAtODQ2LDYgJiM0Mzs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7CiAJfSwgewogCQkuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4djMtY2FuZmQmIzM0OywKIAkJLmRhdGEgPSAmYW1wO3JrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU2OHYzLAomIzQzOwl9LCB7CiYjNDM7CQkuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTg4LWNhbmZkJiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTg4LAogCX0sIHsKIAkJLyogc2VudGluZWwgKi8KIAl9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwppbmRleCA0NzVjMDQwOWUyMTVhLi4yNGU4N2RhYTFkZjAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwpAQCAtMjgxLDcgJiM0MzsyODEsMTAgQEAgcmtjYW5mZF9yeF9maWZvX2dldF9sZW4oY29uc3Qgc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKIHsKIAljb25zdCB1MzIgcmVnID0gcmtjYW5mZF9yZWFkKHByaXYsIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCk7CiAKLQlyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVCwgcmVnKTsKJiM0MzsJaWYgKHByaXYtJmd0O2RldnR5cGVfZGF0YS5tb2RlbCA9PSBSS0NBTkZEX01PREVMX1JLMzU4OCkKJiM0MzsJCXJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4LCByZWcpOwogfQogCiBpbnQgcmtjYW5mZF9oYW5kbGVfcnhfaW50KHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCmluZGV4IDkzMTMxYzdkN2Y1NGQuLjk1YmVhOWJmZDhhMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCkBAIC0yMTQsNyAmIzQzOzIxNCw4IEBACiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMCkKIAogI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwgMHgxMTgKLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNCkKJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KQomIzQzOyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCBHRU5NQVNLKDcsIDUpCiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0ZVTExfV0FURVJNQVJLIEdFTk1BU0soMywgMSkKICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKQogCkBAIC0zMzEsNiAmIzQzOzMzMiwxMSBAQAogICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHkKICAqIGF0IDgwIE1Iei4KICAqCiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLgomIzQzOyAqIEluIHRoYXQgc2V0dXAgcnhfZmlmb19lbXB0eV9lcnJvcnMgaW5jcmVtZW50cyB3aGVuIHRoZSBidXMKJiM0MzsgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlCiYjNDM7ICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLgomIzQzOyAqCiAgKiBUbyB3b3JrYXJvdW5kIHRoaXMgcHJvYmxlbSwgY2hlY2sgZm9yIGVtcHR5IEZJRk8gd2l0aAogICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdAogICogZWFybHkuCkBAIC0zNDQsNiAmIzQzOzM1MCw4IEBACiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlciYjMzk7cyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heQogICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzCiAgKgomIzQzOyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLgomIzQzOyAqCiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2UKICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgmIzM5O2VkIENBTiBmcmFtZXMgaW4KICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuCkBAIC00MjQsNiAmIzQzOzQzMiw5IEBACiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDEKICAqCiAgKiAtIFRYIHN0YXJ2YXRpb24gYWZ0ZXIgcmVwZWF0ZWQgQnVzLU9mZgomIzQzOyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGEKJiM0MzsgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlCiYjNDM7ICogICBjb250cm9sbGVyIHJlc3RhcnRlZC4KICAqICAgVG8gcmVwcm9kdWNlOgogICogICBob3N0OgogICogICAgIHNsZWVwIDMgJmFtcDsmYW1wOyBjYW5nZW4gY2FuMCAtSTIgLUxpIC1EaSAtcDEwIC1nIDAuMApAQCAtNDM0LDYgJiM0Mzs0NDUsNyBAQAogZW51bSBya2NhbmZkX21vZGVsIHsKIAlSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MiwKIAlSS0NBTkZEX01PREVMX1JLMzU2OFYzID0gMHgzNTY4MywKJiM0MzsJUktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsCiB9OwogCiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMKaW5kZXggODI1MDhhODY1MDk1OS4uM2I5YjJmMTA0ZDg2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jCkBAIC0xNTY1LDcgJiM0MzsxNTY1LDcgQEAgc3RhdGljIGludCBnc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAKIAlpZiAoaWNvdW50ICZndDsgdHlwZV9tYXgocGFyZW50LSZndDtjaGFubmVsX2NudCkpIHsKIAkJZGV2X2VycigmYW1wO2ludGYtJmd0O2RldiwKLQkJCSYjMzQ7RHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGF0ICV1IENBTiBpbnRlcmZhY2VzXG4mIzM0OywKJiM0MzsJCQkmIzM0O0RyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xuJiMzNDssCiAJCQl0eXBlX21heChwYXJlbnQtJmd0O2NoYW5uZWxfY250KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jIGIvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKQEAgLTMzLDYgJiM0MzszMyw3IEBAIE1PRFVMRV9BTElBU19SVE5MX0xJTksoRFJWX05BTUUpOwogCiBzdHJ1Y3QgdnhjYW5fcHJpdiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgX19yY3UJKnBlZXI7CiYjNDM7CW5ldGRldmljZV90cmFja2VyIHBlZXJfdHJhY2tlcjsKIH07CiAKIHN0YXRpYyBuZXRkZXZfdHhfdCB2eGNhbl94bWl0KHN0cnVjdCBza19idWZmICpvc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtMjY4LDkgJiM0MzsyNjksMTEgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogY3Jvc3MgbGluayB0aGUgZGV2aWNlIHBhaXIgKi8KIAlwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlyY3VfYXNzaWduX3BvaW50ZXIocHJpdi0mZ3Q7cGVlciwgcGVlcik7CiYjNDM7CW5ldGRldl9ob2xkKHBlZXIsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTsKIAogCXByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTsKIAlyY3VfYXNzaWduX3BvaW50ZXIocHJpdi0mZ3Q7cGVlciwgZGV2KTsKJiM0MzsJbmV0ZGV2X2hvbGQoZGV2LCAmYW1wO3ByaXYtJmd0O3BlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7CiAKIAlyZXR1cm4gMDsKIApAQCAtMjgxLDI0ICYjNDM7Mjg0LDI1IEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiBzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCiB7CiYjNDM7CW5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7CiAJc3RydWN0IHZ4Y2FuX3ByaXYgKnByaXY7CiAJc3RydWN0IG5ldF9kZXZpY2UgKnBlZXI7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LSZndDtwZWVyKTsKJiM0MzsJcGVlcl90cmFja2VyID0gJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXI7CiYjNDM7CXBlZXIgPSB1bnJjdV9wb2ludGVyKHhjaGcoJmFtcDtwcml2LSZndDtwZWVyLCBOVUxMKSk7CiYjNDM7CWlmICghcGVlcikKJiM0MzsJCXJldHVybjsKIAotCS8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLAotCSAqIGJlZm9yZSBhIHJjdV9zeW5jaHJvbml6ZSgpIHBvaW50LiBUaGUgZGV2aWNlcyBhcmUgZ3VhcmFudGVlZAotCSAqIG5vdCBiZWluZyBmcmVlZCBiZWZvcmUgb25lIFJDVSBncmFjZSBwZXJpb2QuCi0JICovCi0JUkNVX0lOSVRfUE9JTlRFUihwcml2LSZndDtwZWVyLCBOVUxMKTsKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpOwogCi0JaWYgKHBlZXIpIHsKLQkJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwotCQlSQ1VfSU5JVF9QT0lOVEVSKHByaXYtJmd0O3BlZXIsIE5VTEwpOwotCQl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShwZWVyLCBoZWFkKTsKLQl9CiYjNDM7CXByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTsKJiM0MzsJZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKCZhbXA7cHJpdi0mZ3Q7cGVlciwgTlVMTCkpOwomIzQzOwlpZiAoZGV2KQomIzQzOwkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVfbmV0KGRldl9uZXQoZGV2KSwgcGVlciwgaGVhZCk7CiYjNDM7CiYjNDM7CW5ldGRldl9wdXQocGVlciwgcGVlcl90cmFja2VyKTsKJiM0MzsJbmV0ZGV2X3B1dChkZXYsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCAmIzQzOyAxXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUwMQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb24gZm9yIEZ1enppbmcgQ2FuZGlkYXRlIElkZW50aWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hpY2gsIGlmIGFueSwgb2YgdGhlc2Uga2VybmVsIGNoYW5nZXMgd2FycmFudCBmb2N1c2VkIGZ1enppbmcgZWZmb3J0cy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBwYXRjaHNldCBtYWtlcyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB0aGVuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGFjY2Vzc2libGUgdGhvc2UgY2hhbmdlcyBhcmUgZm9yIGZ1enppbmcuCgpMb29raW5nIGF0IHRoZSBkaWZmLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhcmUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIOKAkyBub3QgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHNvIHRob3NlIGFyZSBvdXQuIFRoZSBgTUFJTlRBSU5FUlNgIGZpbGUgY2hhbmdlIGlzIGlycmVsZXZhbnQuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byB0aGUgZHJpdmVyIGNoYW5nZXMuIEkgc2VlIGEgbWlub3IgQVBJIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNgIHdoZXJlIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGlzIHJlcGxhY2VkIHdpdGggYG9mX3Byb3BlcnR5X3ByZXNlbnRgLiBJdCYjMzk7cyBhIHN1YnRsZSBjaGFuZ2UsIGFzIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGltcGxpY2l0bHkgY2hlY2tzIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMsIHRoZXJlZm9yZSwgbm8gZnV6emluZyByZXF1aXJlZC4gIFNpbWlsYXJseSwgdGhlIHJlZmFjdG9yaW5nIGluIGBkcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmNgIHNlZW1zIGxpa2UgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KCk5leHQsIGBkcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jYCBoYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdGVhcmRvd24vc3VzcGVuZC9wcm9iZSBlcnJvciBwYXRoLiBJdCYjMzk7cyBwdXR0aW5nIHRoZSBkZXZpY2UgdG8gc2xlZXAuIEhtbSwgdGhpcyBpcyBhbiBTUEkgQ0FOIGNvbnRyb2xsZXIuIEkmIzM5O20gZ29pbmcgdG8gZ3Vlc3MgdGhpcyBpc24mIzM5O3QgZWFzeSB0byByZWFjaCB3aXRoIHN0YW5kYXJkIFFFTVU7IGdldHRpbmcgU1BJIGRldmljZXMgcmlnaHQgaW4gUUVNVSBjYW4gYmUgYSBwYWluLiBJIHNob3VsZCBub3RlIHRoaXMgZG93biwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGxvdyBwcmlvcml0eS4KClRoZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jYCwgYHJvY2tjaGlwX2NhbmZkLXJ4LmNgLCBhbmQgYHJvY2tjaGlwX2NhbmZkLmhgIGFkZCBzdXBwb3J0IGZvciB0aGUgYHJrMzU4OGAuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBhZ2FpbiwgcmVhY2hpbmcgdGhpcyB0aHJvdWdoIHN0YW5kYXJkIFFFTVUgaXMgdW5saWtlbHksIHVubGVzcyBhIHNwZWNpZmljIG1hY2hpbmUgY29uZmlndXJhdGlvbiBpcyBzZXR1cC4KCkEgdHlwbyBmaXggaW4gYGRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNgIGlz4oCmd2VsbCwgaXQmIzM5O3MgYSB0eXBvIGZpeC4KCk5vdywgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNgLiBXZSYjMzk7dmUgZ290IGNoYW5nZXMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AuIEkgc2VlIHRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBuZXRkZXZpY2VfdHJhY2tlcmAgYW5kIHVzaW5nIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSogaW4gYHZ4Y2FuYCwgd2hpY2ggaXMgYSB2aXJ0dWFsIENBTiB0dW5uZWwuIENydWNpYWxseSwgSSBrbm93IHRoYXQgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UsIG11Y2ggbGlrZSBgdmV0aGAsIGFuZCB0aHVzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsgKHJ0bmV0bGluaykgaW4gUUVNVS9zeXprYWxsZXIuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgc2hvdWxkIGJlIHRvcCBwcmlvcml0eS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGVzZSBgdnhjYW5gIGNoYW5nZXMgaW4gcGFydGljdWxhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGNhbl9uZXdsaW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMj1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMDMtXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMDUtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjMtXHQuc2V0dXBcdFx0PSB2eGNhbl9zZXR1cCxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcdC5uZXdsaW5rXHQ9IHZ4Y2FuX25ld2xpbmssXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXHQuZGVsbGlua1x0PSB2eGNhbl9kZWxsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDA2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdnhjYW4uYyBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIHRoZSBtb2RpZmljYXRpb25zIHRvIGB2eGNhbi5jYCBhcmUgZm9jdXNlZCBvbiB0d28ga2V5IGZ1bmN0aW9uczogYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AuIFRoZXNlIGFyZSB0aGUgY3JlYXRpb24gYW5kIGRlbGV0aW9uIG9mIHZpcnR1YWwgQ0FOIGludGVyZmFjZXMsIHJlc3BlY3RpdmVseS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEZyb20gYW4gYXJjaGl0ZWN0dXJlIHBlcnNwZWN0aXZlLCB0aGVzZSBhcmUgY3JpdGljYWwgcG9pbnRzLCBhbmQgZGVmaW5pdGVseSAqcmVhY2hhYmxlKiBhbmQgKnRlc3RhYmxlKi4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGFuZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gY29yZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBgdnhjYW5gIG9wdGlvbi4gSXMgdGhpcyBhIG5ldyBmZWF0dXJlIGdhdGVkIGJlaGluZCBhIGNvbmZpZyBvcHRpb24/IElzIGl0IGluY2x1ZGVkIGJ5IGRlZmF1bHQ/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpbnRlZ3JhdGlvbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCwgb2YgY291cnNlLCBob3cgaXQgY2FuIGJlIHRlc3RlZCBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zIGFuZCBjb25maWd1cmF0aW9ucy4gQSBxdWljayBjaGVjayBvZiBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIGlmIEkgbmVlZCB0byB3b3JyeSBhYm91dCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTl9WWENBTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0yNT1jb25maWcgQ0FOX1ZDQU5cbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0zMy1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjM0OmNvbmZpZyBDQU5fVlhDQU5cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTM1LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBDQU4gVHVubmVsICh2eGNhbilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBDQU5fVlhDQU4gS2NvbmZpZyBFbnRyeSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgc2VjdGlvbiByZWxhdGVkIHRvIGBDQU5fVlhDQU5gLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB2aXJ0dWFsIENBTiBkZXZpY2UgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBGaXJzdCwgSeKAmWxsIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgQ0FOIGRyaXZlcnMsIG9yIHNvbWUgdW5kZXJseWluZyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgaXQgcmVxdWlyZXMsIGV2ZW4gaWYgaXQmIzM5O3MgdmlydHVhbD8gSXQmIzM5O3MgYWxsIGFib3V0IGhvdyBgQ0FOX1ZYQ0FOYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQ0FOIGVjb3N5c3RlbSB3aXRoaW4gdGhpcyBrZXJuZWwuIEkgd2FudCB0byBzZWUgaG93IHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXNvbHZlIHRoaXMgdG8gYSB3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCB1bmRlcnN0YW5kIHdoYXQgSSB3b3VsZCBuZWVkIHRvIGRvIHRvIGVuYWJsZSBpdC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdpbGwgZW5hYmxlIGBDQU5fVlhDQU5gLiBBcmUgdGhlcmUgb3RoZXIgc2V0dGluZ3MgdGhhdCB3aWxsIGFsc28gYmUgbmVlZGVkPyBXaGF0IGtpbmQgb2Ygc3lzdGVtIHdpbGwgaGF2ZSBhIGdvb2QgYXBwbGljYXRpb24gZm9yIHRoZSB1c2Ugb2YgYENBTl9WWENBTmA/IEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgZm9yIGl0cyBoZWxwIHRleHQgYW5kIHNlZSB3aGF0IGl0IHRlbGxzIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcbiAgMzI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdmNhbi5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgQ0FOX1ZYQ0FOXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIENBTiBUdW5uZWwgKHZ4Y2FuKVwmIzM0O1xuICAzNjpcdFx0aGVscFxuICAzNzpcdFx0ICBTaW1pbGFyIHRvIHRoZSB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlciB2ZXRoLCB2eGNhbiBpbXBsZW1lbnRzIGFcbiAgMzg6XHRcdCAgbG9jYWwgQ0FOIHRyYWZmaWMgdHVubmVsIGJldHdlZW4gdHdvIHZpcnR1YWwgQ0FOIG5ldHdvcmsgZGV2aWNlcy5cbiAgMzk6XHRcdCAgV2hlbiBjcmVhdGluZyBhIHZ4Y2FuLCB0d28gdnhjYW4gZGV2aWNlcyBhcmUgY3JlYXRlZCBhcyBwYWlyLlxuICA0MDpcdFx0ICBXaGVuIG9uZSBlbmQgcmVjZWl2ZXMgdGhlIHBhY2tldCBpdCBhcHBlYXJzIG9uIGl0cyBwYWlyIGFuZCB2aWNlXG4gIDQxOlx0XHQgIHZlcnNhLiBUaGUgdnhjYW4gY2FuIGJlIHVzZWQgZm9yIGNyb3NzIG5hbWVzcGFjZSBjb21tdW5pY2F0aW9uLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUbyBoYXZlIGEgY2xlYW4gc3RhcnQgaW4gZWFjaCBuYW1lc3BhY2UgdGhlIENBTiBHVyBob3AgY291bnRlciBpc1xuICA0NDpcdFx0ICBzZXQgdG8gemVyby5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZVxuICA0NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGNhbi5cbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgQ0FOX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWd5IGhpbmdlcyBvbiB0aGUgY29uZGl0aW9uYWwgYXZhaWxhYmlsaXR5IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbiBmb3IgdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENBTiBkcml2ZXJzLiBUaGlzIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgQ0FOIHN1YnN5c3RlbS4gU28sIGxldCYjMzk7cyBoZWFkIHRvIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgYW5kIGRpdmUgcmlnaHQgaW50byB0aGF0IGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uLCBwb3NzaWJseSBhbiBgaWZgIHN0YXRlbWVudCwgZGVmaW5pbmcgdGhlIGNvbmRpdGlvbiBJJiMzOTttIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIGlmIGl0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0bWVudWNvbmZpZyBDQU5fREVWXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtDQU4gRGV2aWNlIERyaXZlcnNcJiMzNDtcbiAgIDU6XHRcdGRlZmF1bHQgeVxuICAgNjpcdFx0ZGVwZW5kcyBvbiBDQU5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXG4gICA5Olx0XHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXG4gIDEwOlx0XHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcbiAgMTE6XHRcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xuICAxMjpcdFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcbiAgMTM6XHRcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcbiAgMTQ6XHRcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFx1MDAzZS5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgQ0FOKC1GRCkgZGV2aWNlIGRyaXZlcnMgaW5jbHVkaW5nIHRoZVxuICAxNzpcdFx0ICB2aXJ0dWFsIG9uZXMuIElmIHlvdSBvd24gc3VjaCBkZXZpY2VzIG9yIHBsYW4gdG8gdXNlIHRoZSB2aXJ0dWFsIENBTlxuICAxODpcdFx0ICBpbnRlcmZhY2VzIHRvIGRldmVsb3AgYXBwbGljYXRpb25zLCBzYXkgWSBoZXJlLlxuICAxOTpcdFxuICAyMDpcdFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYENBTl9WWENBTmAgbW9kdWxlIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IG5lZWRzIGJvdGggYENBTmAgYW5kIGBDQU5fREVWYCBlbmFibGVkLiBUaGF0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhlc2UgdmlydHVhbCBDQU4gZGV2aWNlczsgdGhleSYjMzk7cmUgYnVpbHQgb24gdGhlIGZvdW5kYXRpb25hbCBDQU4gaW5mcmFzdHJ1Y3R1cmUuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBpbiB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgQ0FOYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGZvciBgQ0FOX1ZYQ0FOYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgbmV0d29yayBsYXllciBjb3JlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBDQU5cbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0NBTiBidXMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBhIHNsb3cgKHVwIHRvIDFNYml0L3MpIHNlcmlhbFxuICAxMTpcdFx0ICBjb21tdW5pY2F0aW9ucyBwcm90b2NvbC4gRGV2ZWxvcG1lbnQgb2YgdGhlIENBTiBidXMgc3RhcnRlZCBpblxuICAxMjpcdFx0ICAxOTgzIGF0IFJvYmVydCBCb3NjaCBHbWJILCBhbmQgdGhlIHByb3RvY29sIHdhcyBvZmZpY2lhbGx5XG4gIDEzOlx0XHQgIHJlbGVhc2VkIGluIDE5ODYuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSxcbiAgMTQ6XHRcdCAgYnV0IGlzIG5vdyB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcbiAgMTU6XHRcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcbiAgMTY6XHRcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFx1MDAzZS5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IHdhbnQgQ0FOIHN1cHBvcnQgeW91IHNob3VsZCBzYXkgWSBoZXJlIGFuZCBhbHNvIHRvIHRoZVxuICAxOTpcdFx0ICBzcGVjaWZpYyBkcml2ZXIgZm9yIHlvdXIgY29udHJvbGxlcihzKSB1bmRlciB0aGUgTmV0d29yayBkZXZpY2VcbiAgMjA6XHRcdCAgc3VwcG9ydCBzZWN0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ1OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgQ0FOIERyaXZlciBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIENBTiBkcml2ZXIgb3B0aW9uczogYENBTmAsIGBDQU5fREVWYCwgYENBTl9WWENBTmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzc2VzcyB3aGF0JiMzOTtzIGVhc2lseSB0ZXN0YWJsZS4gV2hhdCBhYm91dCB0aGUgc3BlY2lmaWNzLCBsaWtlIGB0Y2FuNHg1eC1jb3JlLmNgPyBUaGF0JiMzOTtzIGFuIFNQSSBkcml2ZXIsIHRoZSBgVENBTjRYNVhgIOKAkyBwb3RlbnRpYWxseSBhIGh1cmRsZS4gVGhlbiB0aGVyZSYjMzk7cyBgcm9ja2NoaXBfY2FuZmQtY29yZS5jYCwgcHJvYmFibHkgZm9yIHRoZSBgQ0FOX1JPQ0tDSElQX0NBTkZEYCBwbGF0Zm9ybS4gQW5kIGBtX2NhbmAgaXMgc2ltcGx5IGBDQU5fTV9DQU5gLiBUaGVzZSBhcmUgYWxsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM7IHRoZXkmIzM5O3JlIGdvaW5nIHRvIGJlIGEgYml0IHRyaWNraWVyIHRvIGdldCBteSBoYW5kcyBvbiBkaXJlY3RseSBmb3IgdGVzdGluZyBvciBhbmFseXNpcy4KCkhvd2V2ZXIsIGB2eGNhbmAsIGJlaW5nIGEgdmlydHVhbCBkcml2ZXIsIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgdGhlIG1vc3QgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBjYW5kaWRhdGUuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBjYW4gd29yayB3aXRoIHRoYXQuCgpOb3csIG15IGZvY3VzIHNoaWZ0cy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIG9mIGB2eGNhbi5jYCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMuIFNvLCBJJiMzOTtsbCBjaGVjayBpdHMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gbmV0d29yay4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlaXIgc2lnbmF0dXJlcywgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhleSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhjYW5fbmV3bGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAzLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjA0OnN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVx0XHRcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMyMD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzIzLVx0LnNldHVwXHRcdD0gdnhjYW5fc2V0dXAsXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMjQ6XHQubmV3bGlua1x0PSB2eGNhbl9uZXdsaW5rLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzI1LVx0LmRlbGxpbmtcdD0gdnhjYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxOTMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYHZ4Y2FuX2RlbGxpbmtgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGB2eGNhbl9kZWxsaW5rYC4gSSBuZWVkIHRvIGFzc2VzcyB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBjb21wb25lbnQuIEkmIzM5O20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyBwcm9ibGVtIG9yIHBlcmhhcHMgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGFuIGVycm9yIHJlcG9ydC4gRmlyc3QsIEkgbmVlZCB0byBzZWUgd2hhdCBJIGtub3csIGFuZCB3aGF0IEkgKmRvbiYjMzk7dCoga25vdywgYWJvdXQgaG93IGB2eGNhbl9kZWxsaW5rYCBpcyBiZWhhdmluZyByaWdodCBub3cuIElzIGl0IHBlcmZvcm1pbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgYW5vbWFsaWVzPyBCYXNlZCBvbiB0aGF0LCBJJiMzOTtsbCBzdGFydCBjaGVja2luZyB0aGUgY29kZSBkaXJlY3RseSwgbWF5YmUgbG9vayBmb3IgcmVsYXRlZCBsb2cgZW50cmllcywgb3IgYmVnaW4gdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZXhlY3V0aW9uIHRvIHNlZSB3aGVyZSB0aGUgYm90dGxlbmVjayBtaWdodCBiZSwgb3IgbWF5YmUgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW4gdW5leHBlY3RlZCBjb25kaXRpb24gdGhhdCYjMzk7cyBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV04oCZcyBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDQ9c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg0LVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6Mjg1OnN0YXRpYyB2b2lkIHZ4Y2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjQtXHQubmV3bGlua1x0PSB2eGNhbl9uZXdsaW5rLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzI1Olx0LmRlbGxpbmtcdD0gdnhjYW5fZGVsbGluayxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyNi1cdC5wb2xpY3lcdFx0PSB2eGNhbl9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjYyCgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQU4gRHJpdmVyIFBhdGNoKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoIHNlcmllcywgSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgaW1wYWN0ZnVsIGNoYW5nZXMsIGFuZCB0aGVyZWZvcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLCBhcmUgZGVmaW5pdGVseSBpbiBgdnhjYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgYXJlIHdoZXJlIHRoZSByZWFsIGp1aWNlIGlzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleeKAmXZlIGFkZHJlc3NlZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgL2BuZXRkZXZfcHV0YC4gU21hcnQgbW92ZSwgdGhhdOKAmXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhbiBiaXRlIHlvdSBsYXRlciBpZiB5b3UmIzM5O3JlIG5vdCBjYXJlZnVsLgoKSSB0b29rIGEgbG9vayB0aHJvdWdoIHRoZSBvdGhlciBmaWxlcyB0b3VjaGVkIGluIHRoZSBwYXRjaCwgb2YgY291cnNlLiBUaGUgdHlwbyBpbiBgZ3NfdXNiLmNgPyBOb3Qgd29ydGggdGhlIHRpbWUsIGFuZCB0aGUgYG9mX3Byb3BlcnR5YCBjaGFuZ2UgaW4gYG1fY2FuLmNgIGFuZCB0aGUgcmVmYWN0b3JpbmcgaW4gYG1fY2FuX3BjaS5jYCBzZWVtIG1vcmUgY29zbWV0aWMgb3IgcmVsYXRlZCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24vY29uZmlndXJhdGlvbiwgbm90aGluZyB0aGF0IHdvdWxkIGJlIGEgaGlnaCBwcmlvcml0eSBmb3IgZnV6emluZy4gYHRjYW40eDV4LWNvcmUuY2AgYW5kIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgIGFyZSBTUEkgYW5kIHBsYXRmb3JtIGRldmljZSBkcml2ZXJzIHJlc3BlY3RpdmVseSwgd2hpY2ggYXJlbiYjMzk7dCBlYXNpbHkgcmVhY2hhYmxlIGluIG15IHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIEkmIzM5O20gd3JpdGluZyB0aG9zZSBvZmYgZm9yIG5vdy4KClNvLCBpdCYjMzk7cyBjbGVhcjogYHZ4Y2FuLmNgIGlzIHRoZSB0YXJnZXQuIFRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyLCBgdnhjYW5gLCBpcyBlYXNpbHkgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgZml4aW5nIHRoaXMga2luZCBvZiBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlIGlzIGFsc28gYSBnb29kIHJlYXNvbiB0byBmb2N1cyBvbiBpdC4KClRoZXJlZm9yZSwgbXkgc3VtbWFyeSBhbmQgcmVjb21tZW5kYXRpb25zIGFyZToKCiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlCiogICAqKkZvY3VzU3ltYm9scyoqOgogICAgKiAgIGB2eGNhbl9uZXdsaW5rYAogICAgKiAgIGB2eGNhbl9kZWxsaW5rYAoqICAgKipFbmFibGVDb25maWdzKio6CiAgICAqICAgYENBTmAKICAgICogICBgQ0FOX0RFVmAKICAgICogICBgQ0FOX1ZYQ0FOYAoKVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgcmVmIGNvdW50aW5nIGxvZ2ljIG9uIGEgdmlydHVhbCBkZXZpY2UsIHNvIGl0IGlzIGhpZ2ggdmFsdWUgYW5kIGVhc3kgdG8gdHJpZ2dlci4gV2UmIzM5O3JlIGdvb2QgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU4mIzM0OywKICAgICYjMzQ7Q0FOX0RFViYjMzQ7LAogICAgJiMzNDtDQU5fVlhDQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGNhbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O3Z4Y2FuX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9WWENBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4Y2FuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYCBpbiB0aGUgdmlydHVhbCBDQU4gdHVubmVsIGRyaXZlciAoYHZ4Y2FuYCkgdG8gdXNlIGBuZXRkZXZpY2VfdHJhY2tlcmAgZm9yIHBlZXIgZGV2aWNlcywgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZXMuIFNpbmNlIGB2eGNhbmAgaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHRoYXQgY2FuIGJlIGluc3RhbnRpYXRlZCB2aWEgbmV0bGluaywgdGhlc2UgY2hhbmdlcyBhcmUgZWFzaWx5IHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gT3RoZXIgY2hhbmdlcyBpbiB0aGUgc2VyaWVzIGFyZSBlaXRoZXIgZG9jdW1lbnRhdGlvbiwgdHlwbyBmaXhlcywgb3IgYWZmZWN0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKFNQSSwgUm9ja2NoaXAsIFBDSSkgbm90IGVhc2lseSBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYmY5Y2UxNTA5MzA3MDMxMjkyOGE1ZjY5NTYxYzFhNDc2ZDczODRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMjM6NDc6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbAppbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwKQEAgLTE2LDcgJiM0MzsxNiw5IEBAIGFsbE9mOgogcHJvcGVydGllczoKICAgY29tcGF0aWJsZToKICAgICBvbmVPZjoKLSAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCiYjNDM7ICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCiYjNDM7ICAgICAgICAgIC0gcm9ja2NoaXAscmszNTg4LWNhbmZkCiAgICAgICAtIGl0ZW1zOgogICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkCiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjc4NzRlOWU0OTIyNDQKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sCkBAIC0wLDAgJiM0MzsxLDY0IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IFRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBFZHVhcmQgQm9zdGluYSAmbHQ7ZWdib3N0aW5hQGdtYWlsLmNvbSZndDsKJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAzCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGhlY2MKJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjLXJhbQomIzQzOyAgICAgIC0gY29uc3Q6IG1ieAomIzQzOwomIzQzOyAgaW50ZXJydXB0czoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIGNsb2NrczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHRpLHVzZS1oZWNjMWludDoKJiM0MzsgICAgdHlwZTogYm9vbGVhbgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlCiYjNDM7ICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZQomIzQzOyAgICAgIHdpbGwgYmUgdXNlZC4KJiM0MzsgICAgZGVmYXVsdDogZmFsc2UKJiM0MzsKJiM0MzsgIHhjZWl2ZXItc3VwcGx5OgomIzQzOyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAtIGNsb2NrcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICBjYW5ANWMwNTAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDVjMDUwMDAwIDB4ODAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgJmx0OzB4NWMwNTMwMDAgMHgxODAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgJmx0OzB4NWMwNTIwMDAgMHgyMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7MjQmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7aGVjY19jayZndDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGYwYTdjZmUzMjkzLi4wMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0CiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsMzIgJiM0MzswLDAgQEAKLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGUKLWZvciB0aGUgaGVjYyBpbnRlcmZhY2UgY29udGFpbnMuCi0KLVJlcXVpcmVkIHByb3BlcnRpZXM6Ci0tIGNvbXBhdGlibGU6ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OwotLSByZWc6IGFkZHJlc3NlcyBhbmQgbGVuZ3RocyBvZiB0aGUgcmVnaXN0ZXIgc3BhY2VzIGZvciAmIzM5O2hlY2MmIzM5OywgJiMzOTtoZWNjLXJhbSYjMzk7Ci0gICAgICAgYW5kICYjMzk7bWJ4JiMzOTsKLS0gcmVnLW5hbWVzIDomIzM0O2hlY2MmIzM0OywgJiMzNDtoZWNjLXJhbSYjMzQ7LCAmIzM0O21ieCYjMzQ7Ci0tIGludGVycnVwdHM6IGludGVycnVwdCBtYXBwaW5nIGZvciB0aGUgaGVjYyBpbnRlcnJ1cHRzIHNvdXJjZXMKLS0gY2xvY2tzOiBjbG9jayBwaGFuZGxlcyAoc2VlIGNsb2NrIGJpbmRpbmdzIGZvciBkZXRhaWxzKQotCi1PcHRpb25hbCBwcm9wZXJ0aWVzOgotLSB0aSx1c2UtaGVjYzFpbnQ6IGlmIHByb3ZpZGVkIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzCi0JCSAgIG9uIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0IEhFQ0MwSU5UIGludGVycnVwdAotCQkgICBsaW5lIHdpbGwgYmUgdXNlZC4KLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyCi0KLUV4YW1wbGU6Ci0KLUZvciBhbTM1MTdldm0gYm9hcmQ6Ci0JaGVjYzogY2FuQDVjMDUwMDAwIHsKLQkJY29tcGF0aWJsZSA9ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OzsKLQkJcmVnID0gJmx0OzB4NWMwNTAwMDAgMHg4MCZndDssCi0JCSAgICAgICZsdDsweDVjMDUzMDAwIDB4MTgwJmd0OywKLQkJICAgICAgJmx0OzB4NWMwNTIwMDAgMHgyMDAmZ3Q7OwotCQlyZWctbmFtZXMgPSAmIzM0O2hlY2MmIzM0OywgJiMzNDtoZWNjLXJhbSYjMzQ7LCAmIzM0O21ieCYjMzQ7OwotCQlpbnRlcnJ1cHRzID0gJmx0OzI0Jmd0OzsKLQkJY2xvY2tzID0gJmx0OyZhbXA7aGVjY19jayZndDs7Ci0JfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbAppbmRleCA0MDgzNTQ5NzA1MGE1Li4xODAxNWU2MGZkNmQ2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sCkBAIC04LDcgJiM0Mzs4LDcgQEAgdGl0bGU6CiAgIFhpbGlueCBDQU4gYW5kIENBTkZEIGNvbnRyb2xsZXIKIAogbWFpbnRhaW5lcnM6Ci0gIC0gQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyAmbHQ7YXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tJmd0OwomIzQzOyAgLSBIYXJpbmkgVCAmbHQ7aGFyaW5pLnRAYW1kLmNvbSZndDsKIAogcHJvcGVydGllczoKICAgY29tcGF0aWJsZToKQEAgLTUzLDYgJiM0Mzs1Myw5IEBAIHByb3BlcnRpZXM6CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZwogICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pCiAKJiM0MzsgIHBoeXM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCkBAIC05Myw5ICYjNDM7OTMsOSBAQAogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDQuODI3JiMzNDsgY3k9JiMzNDsxNTkuMTQzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDs1OS40MzY0JiMzNDsgY3k9JiMzNDsxNDIuODIzJiMzNDsgcng9JiMzNDs3LjM2NDU1JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDQuODI3JiMzNDsgY3k9JiMzNDsxMjkuMTk2JiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwotICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDMuMDc3JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0Oy8mZ3Q7CiAgICZsdDsvZyZndDsKLSAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxMTAuMzg2JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0OyBmaWxsPSYjMzQ7I2ZmY2IzNSYjMzQ7IHN0cm9rZT0mIzM0OyMwMDAmIzM0OyBzdHJva2UtbGluZWNhcD0mIzM0O3NxdWFyZSYjMzQ7IHN0cm9rZS13aWR0aD0mIzM0Oy40OTk5OTkmIzM0Oy8mZ3Q7CiYjNDM7ICAmbHQ7ZWxsaXBzZSBjeD0mIzM0OzExMC4zODYmIzM0OyBjeT0mIzM0OzE4MC41MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7IGZpbGw9JiMzNDsjMjhhNGZmJiMzNDsgc3Ryb2tlPSYjMzQ7IzAwMCYjMzQ7IHN0cm9rZS1saW5lY2FwPSYjMzQ7c3F1YXJlJiMzNDsgc3Ryb2tlLXdpZHRoPSYjMzQ7LjQ5OTk5OSYjMzQ7LyZndDsKJiM0MzsgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQzLjA3NyYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsgZmlsbD0mIzM0OyNmZmNiMzUmIzM0OyBzdHJva2U9JiMzNDsjMDAwJiMzNDsgc3Ryb2tlLWxpbmVjYXA9JiMzNDtzcXVhcmUmIzM0OyBzdHJva2Utd2lkdGg9JiMzNDsuNDk5OTk5JiMzNDsvJmd0OwogICAmbHQ7dGV4dCB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE3OS40MjY4OCYjMzQ7IGZvbnQtc2l6ZT0mIzM0OzMuMTc1cHgmIzM0OyB4bWw6c3BhY2U9JiMzNDtwcmVzZXJ2ZSYjMzQ7Jmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE3OS40MjY4OCYjMzQ7IGR5PSYjMzQ7MC42MDAwMDAwMiYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7Jmd0O0FjY2Vzc2libGUmbHQ7L3RzcGFuJmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE4My4zOTU2MyYjMzQ7Jmd0OyZsdDt0c3BhbiBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsmZ3Q7Zm9yIFMmbHQ7L3RzcGFuJmd0O1cmbHQ7L3RzcGFuJmd0OyZsdDsvdGV4dCZndDsKICAgJmx0O3RleHQgeD0mIzM0OzE0My41ODY5JiMzNDsgeT0mIzM0OzE3OS41Mjc5NSYjMzQ7IHhtbDpzcGFjZT0mIzM0O3ByZXNlcnZlJiMzNDsmZ3Q7Jmx0O3RzcGFuIHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxNzkuNTI3OTUmIzM0OyBkeT0mIzM0OzEgMCAwIDAgMCAwJiMzNDsgZm9udC1mYW1pbHk9JiMzNDtzYW5zLXNlcmlmJiMzNDsgZm9udC1zaXplPSYjMzQ7Mi44MjIyMnB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsgc3R5bGU9JiMzNDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbCYjMzQ7Jmd0O0luYWNjZXNzaWJsZSZsdDsvdHNwYW4mZ3Q7Jmx0O3RzcGFuIHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxODMuMzY3ODYmIzM0OyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsmZ3Q7Jmx0O3RzcGFuIGZvbnQtc2l6ZT0mIzM0OzMuMTc1cHgmIzM0OyB0ZXh0LWFsaWduPSYjMzQ7Y2VudGVyJiMzNDsgdGV4dC1hbmNob3I9JiMzNDttaWRkbGUmIzM0OyZndDtmb3IgUyZsdDsvdHNwYW4mZ3Q7VyZsdDsvdHNwYW4mZ3Q7Jmx0Oy90ZXh0Jmd0OwogICAmbHQ7ZyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsmZ3Q7CmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDk5MTQ2MDA1MGRhNzQuLjZiNDlhMmM4MGNkNWQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC0yOTU3Myw3ICYjNDM7Mjk1NzMsNyBAQCBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWwKIEY6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCoKIAogWElMSU5YIENBTiBEUklWRVIKLU06CUFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gJmx0O2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbSZndDsKJiM0MztNOglIYXJpbmkgVCAmbHQ7aGFyaW5pLnRAYW1kLmNvbSZndDsKIEw6CWxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmcKIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwppbmRleCBlYjg1NjU0N2FlN2RmLi4xNmY4MDYwN2UxNTBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwpAQCAtMjQ2NCw3ICYjNDM7MjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKLQlpZiAoZGV2LSZndDtvZl9ub2RlICZhbXA7JmFtcDsgb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi0mZ3Q7b2Zfbm9kZSwgJiMzNDt3YWtldXAtc291cmNlJiMzNDspKQomIzQzOwlpZiAoZGV2LSZndDtvZl9ub2RlICZhbXA7JmFtcDsgb2ZfcHJvcGVydHlfcHJlc2VudChkZXYtJmd0O29mX25vZGUsICYjMzQ7d2FrZXVwLXNvdXJjZSYjMzQ7KSkKIAkJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpOwogCiAJLyogR2V0IFRYIEZJRk8gc2l6ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jCmluZGV4IGViMzFlZDFmOTY0NDkuLmQxMWE3Yzg4ZmMzMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgc3RhdGljIGludCBtX2Nhbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQogCW1jYW5fY2xhc3MtJmd0O25ldC0mZ3Q7aXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTsKIAltY2FuX2NsYXNzLSZndDtwbV9jbG9ja19zdXBwb3J0ID0gMTsKIAltY2FuX2NsYXNzLSZndDtwbV93YWtlX3NvdXJjZSA9IDA7Ci0JbWNhbl9jbGFzcy0mZ3Q7Y2FuLmNsb2NrLmZyZXEgPSBpZC0mZ3Q7ZHJpdmVyX2RhdGE7CiYjNDM7CW1jYW5fY2xhc3MtJmd0O2Nhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7CiAJbWNhbl9jbGFzcy0mZ3Q7aXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTsKIAltY2FuX2NsYXNzLSZndDtvcHMgPSAmYW1wO21fY2FuX3BjaV9vcHM7CiAKQEAgLTE4Myw4ICYjNDM7MTgzLDggQEAgc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1fY2FuX3BjaV9wbV9vcHMsCiAJCQkgbV9jYW5fcGNpX3N1c3BlbmQsIG1fY2FuX3BjaV9yZXN1bWUpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbV9jYW5fcGNpX2lkX3RhYmxlW10gPSB7Ci0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sCi0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sCiYjNDM7CXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSwKJiM0MzsJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LAogCXsgIH0JLyogVGVybWluYXRpbmcgRW50cnkgKi8KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbV9jYW5fcGNpX2lkX3RhYmxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jCmluZGV4IDMxY2M5ZDBhYmQ0NTMuLmE1Yjg4MjlhYTUxOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuYwpAQCAtMjExLDggJiM0MzsyMTEsMzEgQEAgc3RhdGljIGludCB0Y2FuNHg1eF93cml0ZV9maWZvKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldiwKIAlyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi0mZ3Q7cmVnbWFwLCBUQ0FONFg1WF9NUkFNX1NUQVJUICYjNDM7IGFkZHJfb2Zmc2V0LCB2YWwsIHZhbF9jb3VudCk7CiB9CiAKLXN0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3IgKnJlZywgaW50IGVuYWJsZSkKJiM0MztzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSkKIHsKJiM0MzsJc3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi0mZ3Q7cG93ZXI7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFB1dCB0aGUgZGV2aWNlIGludG8gc2xlZXAgbW9kZSBpZiB0aGUgUlNUIHBpbiBpcyBhdmFpbGFibGUsCiYjNDM7CSAqIHNpbmNlIGEgd2FrZS11cCBldmVudCwgUlNUIHBpbiB0b2dnbGUsIG9yIHBvd2VyIGN5Y2xlIGFyZSB0aGUgb25seQomIzQzOwkgKiB3YXlzIHRvIGV4aXQgc2xlZXAgbW9kZS4KJiM0MzsJICogUmVkdW5kYW50IGlmIHRoZSByZWd1bGF0b3IgaXMgZXhjbHVzaXZlIHRvIHRoaXMgZGV2aWNlLCBidXQgdGhhdAomIzQzOwkgKiBjYW4mIzM5O3QgYmUgZGV0ZXJtaW5lZCBoZXJlLgomIzQzOwkgKgomIzQzOwkgKiBEYXRhc2hlZXQ6IFRDQU40NTUwLCBzZWN0aW9uICYjMzQ7OC40LjMgU2xlZXAgTW9kZSYjMzQ7CiYjNDM7CSAqIGh0dHBzOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RjYW40NTUwCiYjNDM7CSAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzZXRfZ3BpbyAmYW1wOyZhbXA7ICFlbmFibGUpIHsKJiM0MzsJCWludCByZXQ7CiYjNDM7CiYjNDM7CQlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBUQ0FONFg1WF9DT05GSUcsCiYjNDM7CQkJCQkgVENBTjRYNVhfTU9ERV9TRUxfTUFTSywKJiM0MzsJCQkJCSBUQ0FONFg1WF9NT0RFX1NMRUVQKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O3NwaS0mZ3Q7ZGV2LCAmIzM0O1NldHRpbmcgc2xlZXAgbW9kZSBmYWlsZWQgJXBlXG4mIzM0OywKJiM0MzsJCQkJRVJSX1BUUihyZXQpKTsKJiM0MzsJfQomIzQzOwogCWlmIChJU19FUlJfT1JfTlVMTChyZWcpKQogCQlyZXR1cm4gMDsKIApAQCAtNDc2LDcgJiM0Mzs0OTksNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCQlnb3RvIG91dF9tX2Nhbl9jbGFzc19mcmVlX2RldjsKIAl9CiAKLQlyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDEpOwomIzQzOwlyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMSk7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7RW5hYmxpbmcgcmVndWxhdG9yIGZhaWxlZCAlcGVcbiYjMzQ7LAogCQkJRVJSX1BUUihyZXQpKTsKQEAgLTUzMSw3ICYjNDM7NTU0LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIAogb3V0X3Bvd2VyOgotCXRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LSZndDtwb3dlciwgMCk7CiYjNDM7CXRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTsKICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6CiAJbV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy0mZ3Q7bmV0KTsKIAlyZXR1cm4gcmV0OwpAQCAtNTQzLDcgJiM0Mzs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAKIAltX2Nhbl9jbGFzc191bnJlZ2lzdGVyKCZhbXA7cHJpdi0mZ3Q7Y2Rldik7CiAKLQl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDApOwomIzQzOwl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7CiAKIAltX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LSZndDtjZGV2Lm5ldCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYwppbmRleCAyOWRlMGMwMWU0ZWRjLi4zN2MxYzIyYzQwYzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMKQEAgLTUwLDYgJiM0Mzs1MCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU2OHYzID0gewogCQlSS0NBTkZEX1FVSVJLX0NBTkZEX0JST0tFTiwKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHsKJiM0MzsJLm1vZGVsID0gUktDQU5GRF9NT0RFTF9SSzM1ODgsCiYjNDM7CS5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfAomIzQzOwkJUktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV82LAomIzQzO307CiYjNDM7CiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKQogewogCXN3aXRjaCAobW9kZWwpIHsKQEAgLTU3LDYgJiM0Mzs2Myw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpCiAJCXJldHVybiAmIzM0O3JrMzU2OHYyJiMzNDs7CiAJY2FzZSBSS0NBTkZEX01PREVMX1JLMzU2OFYzOgogCQlyZXR1cm4gJiMzNDtyazM1Njh2MyYjMzQ7OwomIzQzOwljYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OgomIzQzOwkJcmV0dXJuICYjMzQ7cmszNTg4JiMzNDs7CiAJfQogCiAJcmV0dXJuICYjMzQ7Jmx0O3Vua25vd24mZ3Q7JiMzNDs7CkBAIC0xNDgsNiAmIzQzOzE1NiwxMiBAQCBzdGF0aWMgaW50IHJrY2FuZmRfc2V0X2JpdHRpbWluZyhzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KQogCiAJcmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19GRF9EQVRBX0JJVFRJTUlORywgcmVnX2RidCk7CiAKJiM0MzsJLyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovCiYjNDM7CWlmIChwcml2LSZndDtkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHsKJiM0MzsJCXJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJdGRjbyA9IChwcml2LSZndDtjYW4uY2xvY2suZnJlcSAvIGRidC0mZ3Q7Yml0cmF0ZSkgKiAyIC8gMzsKIAl0ZGNvID0gbWluKHRkY28sIEZJRUxEX01BWChSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT05fVERDX09GRlNFVCkpOwogCkBAIC04NDYsNiAmIzQzOzg2MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrY2FuZmRfb2ZfbWF0Y2hbXSA9IHsKIAl9LCB7CiAJCS5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1Njh2My1jYW5mZCYjMzQ7LAogCQkuZGF0YSA9ICZhbXA7cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsCiYjNDM7CX0sIHsKJiM0MzsJCS5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1ODgtY2FuZmQmIzM0OywKJiM0MzsJCS5kYXRhID0gJmFtcDtya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsCiAJfSwgewogCQkvKiBzZW50aW5lbCAqLwogCX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCkBAIC0yODEsNyAmIzQzOzI4MSwxMCBAQCBya2NhbmZkX3J4X2ZpZm9fZ2V0X2xlbihjb25zdCBzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KQogewogCWNvbnN0IHUzMiByZWcgPSBya2NhbmZkX3JlYWQocHJpdiwgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMKTsKIAotCXJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05ULCByZWcpOwomIzQzOwlpZiAocHJpdi0mZ3Q7ZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KQomIzQzOwkJcmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpOwomIzQzOwomIzQzOwlyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjgsIHJlZyk7CiB9CiAKIGludCBya2NhbmZkX2hhbmRsZV9yeF9pbnQoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKQEAgLTIxNCw3ICYjNDM7MjE0LDggQEAKICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKQogCiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCAweDExOAotI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KQomIzQzOyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCBHRU5NQVNLKDYsIDQpCiYjNDM7I2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSkKICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRlVMTF9XQVRFUk1BUksgR0VOTUFTSygzLCAxKQogI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19FTkFCTEUgQklUKDApCiAKQEAgLTMzMSw2ICYjNDM7MzMyLDExIEBACiAgKiByYXJlbHkgd2l0aCB0aGUgc3RhbmRhcmQgY2xvY2sgb2YgMzAwIE1IeiwgYnV0IGFsbW9zdCBpbW1lZGlhdGVseQogICogYXQgODAgTUh6LgogICoKJiM0MzsgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgZW1wdHkgRklGTyBjb25kaXRpb24uCiYjNDM7ICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1cwomIzQzOyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2UKJiM0MzsgKiB0aGUgYnVzIHJlYWNoZXMgYSBzdGVhZHkgc3RhdGUuCiYjNDM7ICoKICAqIFRvIHdvcmthcm91bmQgdGhpcyBwcm9ibGVtLCBjaGVjayBmb3IgZW1wdHkgRklGTyB3aXRoCiAgKiBya2NhbmZkX2ZpZm9faGVhZGVyX2VtcHR5KCkgaW4gcmtjYW5mZF9oYW5kbGVfcnhfaW50X29uZSgpIGFuZCBleGl0CiAgKiBlYXJseS4KQEAgLTM0NCw2ICYjNDM7MzUwLDggQEAKIC8qIEVycmF0dW0gNjogVGhlIENBTiBjb250cm9sbGVyJiMzOTtzIHRyYW5zbWlzc2lvbiBvZiBleHRlbmRlZCBmcmFtZXMgbWF5CiAgKiBpbnRlcm1pdHRlbnRseSBjaGFuZ2UgaW50byBzdGFuZGFyZCBmcmFtZXMKICAqCiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uCiYjNDM7ICoKICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZQogICogaGF2ZSBwZW5kaW5nIFRYIENBTiBmcmFtZXMsIGNoZWNrIGFsbCBSWCYjMzk7ZWQgQ0FOIGZyYW1lcyBpbgogICogcmtjYW5mZF9yeHN0eF9maWx0ZXIoKS4KQEAgLTQyNCw2ICYjNDM7NDMyLDkgQEAKICAqICAgICBjYW5zZXF1ZW5jZSAtcnYgLWkgMQogICoKICAqIC0gVFggc3RhcnZhdGlvbiBhZnRlciByZXBlYXRlZCBCdXMtT2ZmCiYjNDM7ICogICBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS4gSW4gYQomIzQzOyAqICAgMTAtY3ljbGUgQnVzLU9mZiByZWNvdmVyeSB0ZXN0LCA5IGN5Y2xlcyBmYWlsZWQgdG8gc2VuZCBhZnRlciB0aGUKJiM0MzsgKiAgIGNvbnRyb2xsZXIgcmVzdGFydGVkLgogICogICBUbyByZXByb2R1Y2U6CiAgKiAgIGhvc3Q6CiAgKiAgICAgc2xlZXAgMyAmYW1wOyZhbXA7IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wCkBAIC00MzQsNiAmIzQzOzQ0NSw3IEBACiBlbnVtIHJrY2FuZmRfbW9kZWwgewogCVJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLAogCVJLQ0FORkRfTU9ERUxfUkszNTY4VjMgPSAweDM1NjgzLAomIzQzOwlSS0NBTkZEX01PREVMX1JLMzU4OCA9IDB4MzU4OCwKIH07CiAKIHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYwppbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMKQEAgLTE1NjUsNyAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IGdzX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAogCWlmIChpY291bnQgJmd0OyB0eXBlX21heChwYXJlbnQtJmd0O2NoYW5uZWxfY250KSkgewogCQlkZXZfZXJyKCZhbXA7aW50Zi0mZ3Q7ZGV2LAotCQkJJiMzNDtEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcbiYjMzQ7LAomIzQzOwkJCSYjMzQ7RHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGFuICV1IENBTiBpbnRlcmZhY2VzXG4mIzM0OywKIAkJCXR5cGVfbWF4KHBhcmVudC0mZ3Q7Y2hhbm5lbF9jbnQpKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwppbmRleCBlODgyMjUwMTgwZWY2Li45ZTJlMjVkMDI0NzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwpAQCAtMzMsNiAmIzQzOzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7CiAKIHN0cnVjdCB2eGNhbl9wcml2IHsKIAlzdHJ1Y3QgbmV0X2RldmljZSBfX3JjdQkqcGVlcjsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgcGVlcl90cmFja2VyOwogfTsKIAogc3RhdGljIG5ldGRldl90eF90IHZ4Y2FuX3htaXQoc3RydWN0IHNrX2J1ZmYgKm9za2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC0yNjgsOSAmIzQzOzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkvKiBjcm9zcyBsaW5rIHRoZSBkZXZpY2UgcGFpciAqLwogCXByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXJjdV9hc3NpZ25fcG9pbnRlcihwcml2LSZndDtwZWVyLCBwZWVyKTsKJiM0MzsJbmV0ZGV2X2hvbGQocGVlciwgJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpOwogCiAJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwogCXJjdV9hc3NpZ25fcG9pbnRlcihwcml2LSZndDtwZWVyLCBkZXYpOwomIzQzOwluZXRkZXZfaG9sZChkZXYsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTsKIAogCXJldHVybiAwOwogCkBAIC0yODEsMjQgJiM0MzsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIHN0YXRpYyB2b2lkIHZ4Y2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIHsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgKnBlZXJfdHJhY2tlcjsKIAlzdHJ1Y3QgdnhjYW5fcHJpdiAqcHJpdjsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjsKIAogCXByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwotCXBlZXIgPSBydG5sX2RlcmVmZXJlbmNlKHByaXYtJmd0O3BlZXIpOwomIzQzOwlwZWVyX3RyYWNrZXIgPSAmYW1wO3ByaXYtJmd0O3BlZXJfdHJhY2tlcjsKJiM0MzsJcGVlciA9IHVucmN1X3BvaW50ZXIoeGNoZygmYW1wO3ByaXYtJmd0O3BlZXIsIE5VTEwpKTsKJiM0MzsJaWYgKCFwZWVyKQomIzQzOwkJcmV0dXJuOwogCi0JLyogTm90ZSA6IGRlbGxpbmsoKSBpcyBjYWxsZWQgZnJvbSBkZWZhdWx0X2RldmljZV9leGl0X2JhdGNoKCksCi0JICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkCi0JICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC4KLQkgKi8KLQlSQ1VfSU5JVF9QT0lOVEVSKHByaXYtJmd0O3BlZXIsIE5VTEwpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CiAKLQlpZiAocGVlcikgewotCQlwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7Ci0JCVJDVV9JTklUX1BPSU5URVIocHJpdi0mZ3Q7cGVlciwgTlVMTCk7Ci0JCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpOwotCX0KJiM0MzsJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwomIzQzOwlkZXYgPSB1bnJjdV9wb2ludGVyKHhjaGcoJmFtcDtwcml2LSZndDtwZWVyLCBOVUxMKSk7CiYjNDM7CWlmIChkZXYpCiYjNDM7CQl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZV9uZXQoZGV2X25ldChkZXYpLCBwZWVyLCBoZWFkKTsKJiM0MzsKJiM0MzsJbmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpOwomIzQzOwluZXRkZXZfcHV0KGRldiwgJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXIpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhjYW5fcG9saWN5W1ZYQ0FOX0lORk9fTUFYICYjNDM7IDFdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ5OAoJCQkJCQkJb3V0cHV0OiAxNjUKCQkJCQkJCXRob3VnaHRzOiAxNzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFNlcmllcyBSZXZpZXc6IENBTiBEcml2ZXIgVXBkYXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHNldCBvZiB1cGRhdGVzIGFjcm9zcyB2YXJpb3VzIENBTiBkcml2ZXJzLiBOb3RoaW5nIGhlcmUgc2NyZWFtcyAmIzM0O2NyaXRpY2FsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkmIzM0OyBhdCBmaXJzdCBnbGFuY2UsIGJ1dCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGVuc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLgoKRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyB0byB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sYCwgYHRpLGFtMzUxNy1oZWNjLnlhbWxgLCBhbmQgYHhpbGlueCxjYW4ueWFtbGAuIFRoZXNlIGFyZSBjcml0aWNhbCBmb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgYnV0IEkgZG9uJiMzOTt0IGFudGljaXBhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbiB0aGVzZSBtb2RpZmljYXRpb25zIGFsb25lLiBXZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2VzIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLiBEb2N1bWVudGF0aW9uIGlzIGFsc28gdXBkYXRlZCAoYGZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnYCBhbmQgYE1BSU5UQUlORVJTYCksIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2VzLiBJbiBgbV9jYW4uY2AsIGl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgdXBkYXRlIHRvIGhvdyB0aGUgJiMzNDt3YWtldXAtc291cmNlJiMzNDsgcHJvcGVydHkgaXMgcmVhZCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggc2hvdWxkbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBzZWN1cml0eSBjb25jZXJucy4gU2ltaWxhcmx5LCB0aGUgYG1fY2FuX3BjaS5jYCBjaGFuZ2UganVzdCBmaXhlcyB0aGUgY2xvY2sgZnJlcXVlbmN5LCBtYWtpbmcgc3VyZSB0aGUgZGV2aWNlIGdldHMgdGhlIGNvcnJlY3QgY2xvY2sgcmF0ZS4KClRoZSBtb3N0IGludGVyZXN0aW5nIGNoYW5nZSBpcyBpbiBgdnhjYW4uY2AuIEhlcmUsIHdlIHNlZSBhIGNvcnJlY3Rpb24gdXNpbmcgYG5ldGRldmljZV90cmFja2VyYCB0byBoYW5kbGUgcmVmY291bnRpbmcgb24gdGhlIHBlZXIgZGV2aWNlcyBpbiB0aGUgdmlydHVhbCBDQU4gaW50ZXJmYWNlLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBhIHNvbGlkIGZpeCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB3ZSB3YW50IHRvIHNlZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBgdnhjYW4uY2AsIEtBU0FOIHNob3VsZCBiZSBhYmxlIHRvIGNhdGNoIHRoZSByZWZjb3VudCBlcnJvcnMsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIHJldmlldy4KClRoZSBgdGNhbjR4NXgtY29yZS5jYCB1cGRhdGUgc2VlbXMgZm9jdXNlZCBvbiBlbmFibGluZyBzbGVlcCBtb2RlIGluIHRoZSBoYXJkd2FyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGJ1Z3MgdGhhdCByZXF1aXJlIEtBU0FOIHRvIGNhdGNoLCBidXQgaXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgc2VjdXJpdHktcmVsZXZhbnQuIEl0JiMzOTtzIGltcG9ydGFudCBmb3IgcG93ZXIgbWFuYWdlbWVudCwgYnV0IHRoZSBjb3JlIGZ1bmN0aW9uIGlzIGp1c3QgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGhhcmR3YXJlIGZlYXR1cmVzLgoKVGhlIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgY2hhbmdlcyBhZGQgc3VwcG9ydCBmb3IgdGhlIFJLMzU4OCBTT0MuIFRoaXMgdXN1YWxseSByZXF1aXJlcyB2ZXJ5IGNhcmVmdWwgcmV2aWV3LiBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2VzIHNpbXBseSBpbnZvbHZlIHNlbGVjdGluZyB0aGUgY29ycmVjdCByZWdpc3RlciBmaWVsZHMgYmFzZWQgb24gdGhlIGRldmljZSBtb2RlbC4gSXQgYXBwZWFycyB0aGF0IHRoZSB1cGRhdGUgaXMgZG9uZSBpbiBhbiBleHBsaWNpdCwgc2FmZSB3YXkuCgpGaW5hbGx5LCB3ZSBoYXZlIGEgdHlwbyBmaXggaW4gYGdzX3VzYi5jYC4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGVzZSBjaGFuZ2VzIGFyZSBhIG1peCBvZiBkZXZpY2UgdHJlZSB1cGRhdGVzLCBoYXJkd2FyZS1zcGVjaWZpYyBmaXhlcywgYW5kIGJ1ZyBmaXhlcyBmb3IgdGhlIGRyaXZlcnMuIE1vc3QgaW1wb3J0YW50bHksIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBzZWVtIHRvIGludHJvZHVjZSBuZXcgdmVjdG9ycyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gVGhlIGB2eGNhbi5jYCBmaXggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHJlZmNvdW50aW5nL1VBRiwgYSBjbGFzc2ljIHByb2JsZW0gdGhhdCYjMzk7cyBhbHJlYWR5IHdlbGwtdW5kZXJzdG9vZCBhbmQgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTi4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGRvZXMgKm5vdCogd2FycmFudCBhIGBOZWVkc0tNU0FOYCBsYWJlbC4gVGhlIGZvY3VzIGlzIG1vcmUgb24gc3RhYmlsaXR5IGFuZCBoYXJkd2FyZSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGRldmljZSB0cmVlIGJpbmRpbmcgdXBkYXRlcywgaGFyZHdhcmUgZHJpdmVyIGZpeGVzIChzbGVlcCBtb2RlIGhhbmRsaW5nIGluIHRjYW40eDV4LCBSSzM1ODggc3VwcG9ydCBpbiByb2NrY2hpcF9jYW5mZCwgY2xvY2sgZnJlcXVlbmN5IGluIG1fY2FuX3BjaSksIGFuZCBhIHJlZmNvdW50aW5nL1VBRiBmaXggaW4gdnhjYW4uYyB1c2luZyBuZXRkZXZpY2VfdHJhY2tlci4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBtb2RpZnkgYm91bmRzIGNoZWNraW5nIGluIGEgd2F5IHRoYXQgZXhwb3NlcyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgc3RhdGUuIFRoZSB2eGNhbi5jIGZpeCBhZGRyZXNzZXMgYSB1c2UtYWZ0ZXItZnJlZS9yZWZjb3VudGluZyBpc3N1ZSB3aGljaCBpcyBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDcuMzEzOTg5NzAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwOTI4MTA0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzowNy4zMTM5OTQ2MTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTMwNzM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmY5Y2UxNTA5MzA3MDMxMjkyOGE1ZjY5NTYxYzFhNDc2ZDczODRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXFxuaW5kZXggYTA3N2MwMzMwMDEzNy4uODFlMmI2ZGZlYjAyMyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxcbkBAIC0xNiw3ICsxNiw5IEBAIGFsbE9mOlxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuICAgICBvbmVPZjpcXG4tICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcXG4rICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1ODgtY2FuZmRcXG4gICAgICAgLSBpdGVtczpcXG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXFxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzg3NGU5ZTQ5MjI0NFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXFxuQEAgLTAsMCArMSw2NCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEVkdWFyZCBCb3N0aW5hIFxcdTAwM2NlZ2Jvc3RpbmFAZ21haWwuY29tXFx1MDAzZVxcbitcXG4rYWxsT2Y6XFxuKyAgLSAkcmVmOiBjYW4tY29udHJvbGxlci55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAzXFxuK1xcbisgIHJlZy1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBoZWNjXFxuKyAgICAgIC0gY29uc3Q6IGhlY2MtcmFtXFxuKyAgICAgIC0gY29uc3Q6IG1ieFxcbitcXG4rICBpbnRlcnJ1cHRzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgY2xvY2tzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgdGksdXNlLWhlY2MxaW50OlxcbisgICAgdHlwZTogYm9vbGVhblxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIElmIHByb3ZpZGVkLCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cyBvbiB0aGVcXG4rICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZVxcbisgICAgICB3aWxsIGJlIHVzZWQuXFxuKyAgICBkZWZhdWx0OiBmYWxzZVxcbitcXG4rICB4Y2VpdmVyLXN1cHBseTpcXG4rICAgIGRlc2NyaXB0aW9uOiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlci5cXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSByZWctbmFtZXNcXG4rICAtIGludGVycnVwdHNcXG4rICAtIGNsb2Nrc1xcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICBjYW5ANWMwNTAwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwidGksYW0zNTE3LWhlY2NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDVjMDUwMDAwIDB4ODBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDVjMDUzMDAwIDB4MTgwXFx1MDAzZSxcXG4rICAgICAgICAgICAgICBcXHUwMDNjMHg1YzA1MjAwMCAweDIwMFxcdTAwM2U7XFxuKyAgICAgICAgcmVnLW5hbWVzID0gXFxcImhlY2NcXFwiLCBcXFwiaGVjYy1yYW1cXFwiLCBcXFwibWJ4XFxcIjtcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzI0XFx1MDAzZTtcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmhlY2NfY2tcXHUwMDNlO1xcbisgICAgfTtcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxcbisrKyAvZGV2L251bGxcXG5AQCAtMSwzMiArMCwwIEBAXFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxcbi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4tXFxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcXG4tZm9yIHRoZSBoZWNjIGludGVyZmFjZSBjb250YWlucy5cXG4tXFxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XFxuLS0gY29tcGF0aWJsZTogXFxcInRpLGFtMzUxNy1oZWNjXFxcIlxcbi0tIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdoZWNjJywgJ2hlY2MtcmFtJ1xcbi0gICAgICAgYW5kICdtYngnXFxuLS0gcmVnLW5hbWVzIDpcXFwiaGVjY1xcXCIsIFxcXCJoZWNjLXJhbVxcXCIsIFxcXCJtYnhcXFwiXFxuLS0gaW50ZXJydXB0czogaW50ZXJydXB0IG1hcHBpbmcgZm9yIHRoZSBoZWNjIGludGVycnVwdHMgc291cmNlc1xcbi0tIGNsb2NrczogY2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscylcXG4tXFxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XFxuLS0gdGksdXNlLWhlY2MxaW50OiBpZiBwcm92aWRlZCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0c1xcbi1cXHRcXHQgICBvbiBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCBIRUNDMElOVCBpbnRlcnJ1cHRcXG4tXFx0XFx0ICAgbGluZSB3aWxsIGJlIHVzZWQuXFxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXFxuLVxcbi1FeGFtcGxlOlxcbi1cXG4tRm9yIGFtMzUxN2V2bSBib2FyZDpcXG4tXFx0aGVjYzogY2FuQDVjMDUwMDAwIHtcXG4tXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ0aSxhbTM1MTctaGVjY1xcXCI7XFxuLVxcdFxcdHJlZyA9IFxcdTAwM2MweDVjMDUwMDAwIDB4ODBcXHUwMDNlLFxcbi1cXHRcXHQgICAgICBcXHUwMDNjMHg1YzA1MzAwMCAweDE4MFxcdTAwM2UsXFxuLVxcdFxcdCAgICAgIFxcdTAwM2MweDVjMDUyMDAwIDB4MjAwXFx1MDAzZTtcXG4tXFx0XFx0cmVnLW5hbWVzID0gXFxcImhlY2NcXFwiLCBcXFwiaGVjYy1yYW1cXFwiLCBcXFwibWJ4XFxcIjtcXG4tXFx0XFx0aW50ZXJydXB0cyA9IFxcdTAwM2MyNFxcdTAwM2U7XFxuLVxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2aGVjY19ja1xcdTAwM2U7XFxuLVxcdH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxcbmluZGV4IDQwODM1NDk3MDUwYTUuLjE4MDE1ZTYwZmQ2ZDYgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXFxuQEAgLTgsNyArOCw3IEBAIHRpdGxlOlxcbiAgIFhpbGlueCBDQU4gYW5kIENBTkZEIGNvbnRyb2xsZXJcXG4gXFxuIG1haW50YWluZXJzOlxcbi0gIC0gQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyBcXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXFx1MDAzZVxcbisgIC0gSGFyaW5pIFQgXFx1MDAzY2hhcmluaS50QGFtZC5jb21cXHUwMDNlXFxuIFxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuQEAgLTUzLDYgKzUzLDkgQEAgcHJvcGVydGllczpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcXG4gICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pXFxuIFxcbisgIHBoeXM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xcbmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xcbkBAIC05Myw5ICs5Myw5IEBAXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDQuODI3XFxcIiBjeT1cXFwiMTU5LjE0M1xcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCI1OS40MzY0XFxcIiBjeT1cXFwiMTQyLjgyM1xcXCIgcng9XFxcIjcuMzY0NTVcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDQuODI3XFxcIiBjeT1cXFwiMTI5LjE5NlxcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuLSAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDMuMDc3XFxcIiBjeT1cXFwiMTgwLjUzXFxcIiByeD1cXFwiMTAuODg2NlxcXCIgcnk9XFxcIjQuMzkzMDhcXFwiL1xcdTAwM2VcXG4gICBcXHUwMDNjL2dcXHUwMDNlXFxuLSAgXFx1MDAzY2VsbGlwc2UgY3g9XFxcIjExMC4zODZcXFwiIGN5PVxcXCIxODAuNTNcXFwiIHJ4PVxcXCIxMC44ODY2XFxcIiByeT1cXFwiNC4zOTMwOFxcXCIgZmlsbD1cXFwiI2ZmY2IzNVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2UtbGluZWNhcD1cXFwic3F1YXJlXFxcIiBzdHJva2Utd2lkdGg9XFxcIi40OTk5OTlcXFwiL1xcdTAwM2VcXG4rICBcXHUwMDNjZWxsaXBzZSBjeD1cXFwiMTEwLjM4NlxcXCIgY3k9XFxcIjE4MC41M1xcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIiBmaWxsPVxcXCIjMjhhNGZmXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJzcXVhcmVcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjQ5OTk5OVxcXCIvXFx1MDAzZVxcbisgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDMuMDc3XFxcIiBjeT1cXFwiMTgwLjUzXFxcIiByeD1cXFwiMTAuODg2NlxcXCIgcnk9XFxcIjQuMzkzMDhcXFwiIGZpbGw9XFxcIiNmZmNiMzVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInNxdWFyZVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNDk5OTk5XFxcIi9cXHUwMDNlXFxuICAgXFx1MDAzY3RleHQgeD1cXFwiMTEwLjkwOTA3XFxcIiB5PVxcXCIxNzkuNDI2ODhcXFwiIGZvbnQtc2l6ZT1cXFwiMy4xNzVweFxcXCIgeG1sOnNwYWNlPVxcXCJwcmVzZXJ2ZVxcXCJcXHUwMDNlXFx1MDAzY3RzcGFuIHg9XFxcIjExMC45MDkwN1xcXCIgeT1cXFwiMTc5LjQyNjg4XFxcIiBkeT1cXFwiMC42MDAwMDAwMlxcXCIgdGV4dC1hbGlnbj1cXFwiY2VudGVyXFxcIiB0ZXh0LWFuY2hvcj1cXFwibWlkZGxlXFxcIlxcdTAwM2VBY2Nlc3NpYmxlXFx1MDAzYy90c3BhblxcdTAwM2VcXHUwMDNjdHNwYW4geD1cXFwiMTEwLjkwOTA3XFxcIiB5PVxcXCIxODMuMzk1NjNcXFwiXFx1MDAzZVxcdTAwM2N0c3BhbiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCJcXHUwMDNlZm9yIFNcXHUwMDNjL3RzcGFuXFx1MDAzZVdcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2MvdGV4dFxcdTAwM2VcXG4gICBcXHUwMDNjdGV4dCB4PVxcXCIxNDMuNTg2OVxcXCIgeT1cXFwiMTc5LjUyNzk1XFxcIiB4bWw6c3BhY2U9XFxcInByZXNlcnZlXFxcIlxcdTAwM2VcXHUwMDNjdHNwYW4geD1cXFwiMTQzLjU4NjlcXFwiIHk9XFxcIjE3OS41Mjc5NVxcXCIgZHk9XFxcIjEgMCAwIDAgMCAwXFxcIiBmb250LWZhbWlseT1cXFwic2Fucy1zZXJpZlxcXCIgZm9udC1zaXplPVxcXCIyLjgyMjIycHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCIgc3R5bGU9XFxcImZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsXFxcIlxcdTAwM2VJbmFjY2Vzc2libGVcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2N0c3BhbiB4PVxcXCIxNDMuNTg2OVxcXCIgeT1cXFwiMTgzLjM2Nzg2XFxcIiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiXFx1MDAzZVxcdTAwM2N0c3BhbiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCJcXHUwMDNlZm9yIFNcXHUwMDNjL3RzcGFuXFx1MDAzZVdcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2MvdGV4dFxcdTAwM2VcXG4gICBcXHUwMDNjZyBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggOTkxNDYwMDUwZGE3NC4uNmI0OWEyYzgwY2Q1ZCAxMDA2NDRcXG4tLS0gYS9NQUlOVEFJTkVSU1xcbisrKyBiL01BSU5UQUlORVJTXFxuQEAgLTI5NTczLDcgKzI5NTczLDcgQEAgRjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWxcXG4gRjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXFxuIFxcbiBYSUxJTlggQ0FOIERSSVZFUlxcbi1NOlxcdEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVxcdTAwM2VcXG4rTTpcXHRIYXJpbmkgVCBcXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVxcdTAwM2VcXG4gTDpcXHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXFxuIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXFxuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXFxuQEAgLTI0NjQsNyArMjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGRldi1cXHUwMDNlb2Zfbm9kZSBcXHUwMDI2XFx1MDAyNiBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwid2FrZXVwLXNvdXJjZVxcXCIpKVxcbitcXHRpZiAoZGV2LVxcdTAwM2VvZl9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwid2FrZXVwLXNvdXJjZVxcXCIpKVxcbiBcXHRcXHRkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKGRldiwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBHZXQgVFggRklGTyBzaXplXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xcbmluZGV4IGViMzFlZDFmOTY0NDkuLmQxMWE3Yzg4ZmMzMmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXFxuQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgaW50IG1fY2FuX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZW5ldC1cXHUwMDNlaXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcXG4gXFx0bWNhbl9jbGFzcy1cXHUwMDNlcG1fY2xvY2tfc3VwcG9ydCA9IDE7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZXBtX3dha2Vfc291cmNlID0gMDtcXG4tXFx0bWNhbl9jbGFzcy1cXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuK1xcdG1jYW5fY2xhc3MtXFx1MDAzZWNhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZWlycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZW9wcyA9IFxcdTAwMjZtX2Nhbl9wY2lfb3BzO1xcbiBcXG5AQCAtMTgzLDggKzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxcbiBcXHRcXHRcXHQgbV9jYW5fcGNpX3N1c3BlbmQsIG1fY2FuX3BjaV9yZXN1bWUpO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xcbi1cXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcXG4tXFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXFxuK1xcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSxcXG4rXFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxcbiBcXHR7ICB9XFx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1fY2FuX3BjaV9pZF90YWJsZSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXFxuaW5kZXggMzFjYzlkMGFiZDQ1My4uYTViODgyOWFhNTE5MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xcbkBAIC0yMTEsOCArMjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXFxuIFxcdHJldHVybiByZWdtYXBfYnVsa193cml0ZShwcml2LVxcdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgKyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpXFxuK3N0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCB0Y2FuNHg1eF9wcml2ICpwcml2LCBpbnQgZW5hYmxlKVxcbiB7XFxuK1xcdHN0cnVjdCByZWd1bGF0b3IgKnJlZyA9IHByaXYtXFx1MDAzZXBvd2VyO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHV0IHRoZSBkZXZpY2UgaW50byBzbGVlcCBtb2RlIGlmIHRoZSBSU1QgcGluIGlzIGF2YWlsYWJsZSxcXG4rXFx0ICogc2luY2UgYSB3YWtlLXVwIGV2ZW50LCBSU1QgcGluIHRvZ2dsZSwgb3IgcG93ZXIgY3ljbGUgYXJlIHRoZSBvbmx5XFxuK1xcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxcbitcXHQgKiBSZWR1bmRhbnQgaWYgdGhlIHJlZ3VsYXRvciBpcyBleGNsdXNpdmUgdG8gdGhpcyBkZXZpY2UsIGJ1dCB0aGF0XFxuK1xcdCAqIGNhbid0IGJlIGRldGVybWluZWQgaGVyZS5cXG4rXFx0ICpcXG4rXFx0ICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiBcXFwiOC40LjMgU2xlZXAgTW9kZVxcXCJcXG4rXFx0ICogaHR0cHM6Ly93d3cudGkuY29tL2xpdC9ncG4vdGNhbjQ1NTBcXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNldF9ncGlvIFxcdTAwMjZcXHUwMDI2ICFlbmFibGUpIHtcXG4rXFx0XFx0aW50IHJldDtcXG4rXFxuK1xcdFxcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFRDQU40WDVYX0NPTkZJRyxcXG4rXFx0XFx0XFx0XFx0XFx0IFRDQU40WDVYX01PREVfU0VMX01BU0ssXFxuK1xcdFxcdFxcdFxcdFxcdCBUQ0FONFg1WF9NT0RFX1NMRUVQKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlc3BpLVxcdTAwM2VkZXYsIFxcXCJTZXR0aW5nIHNsZWVwIG1vZGUgZmFpbGVkICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNDc2LDcgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdFxcdGdvdG8gb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2O1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cXHUwMDNlcG93ZXIsIDEpO1xcbitcXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMSk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJFbmFibGluZyByZWd1bGF0b3IgZmFpbGVkICVwZVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG5AQCAtNTMxLDcgKzU1NCw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gb3V0X3Bvd2VyOlxcbi1cXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cXHUwMDNlcG93ZXIsIDApO1xcbitcXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XFxuICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6XFxuIFxcdG1fY2FuX2NsYXNzX2ZyZWVfZGV2KG1jYW5fY2xhc3MtXFx1MDAzZW5ldCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTU0Myw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcbiBcXHRtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKFxcdTAwMjZwcml2LVxcdTAwM2VjZGV2KTtcXG4gXFxuLVxcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVxcdTAwM2Vwb3dlciwgMCk7XFxuK1xcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcXG4gXFxuIFxcdG1fY2FuX2NsYXNzX2ZyZWVfZGV2KHByaXYtXFx1MDAzZWNkZXYubmV0KTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcXG5AQCAtNTAsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHtcXG4gXFx0XFx0UktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sXFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHtcXG4rXFx0Lm1vZGVsID0gUktDQU5GRF9NT0RFTF9SSzM1ODgsXFxuK1xcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxcbitcXHRcXHRSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzYsXFxuK307XFxuK1xcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxcbiB7XFxuIFxcdHN3aXRjaCAobW9kZWwpIHtcXG5AQCAtNTcsNiArNjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxcbiBcXHRcXHRyZXR1cm4gXFxcInJrMzU2OHYyXFxcIjtcXG4gXFx0Y2FzZSBSS0NBTkZEX01PREVMX1JLMzU2OFYzOlxcbiBcXHRcXHRyZXR1cm4gXFxcInJrMzU2OHYzXFxcIjtcXG4rXFx0Y2FzZSBSS0NBTkZEX01PREVMX1JLMzU4ODpcXG4rXFx0XFx0cmV0dXJuIFxcXCJyazM1ODhcXFwiO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gXFxcIlxcdTAwM2N1bmtub3duXFx1MDAzZVxcXCI7XFxuQEAgLTE0OCw2ICsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcXG4gXFxuIFxcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpO1xcbiBcXG4rXFx0LyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcXG4rXFx0XFx0cmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT04sIDApO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0dGRjbyA9IChwcml2LVxcdTAwM2VjYW4uY2xvY2suZnJlcSAvIGRidC1cXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcXG4gXFx0dGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTtcXG4gXFxuQEAgLTg0Niw2ICs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7XFxuIFxcdH0sIHtcXG4gXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4djMtY2FuZmRcXFwiLFxcbiBcXHRcXHQuZGF0YSA9IFxcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyxcXG4rXFx0fSwge1xcbitcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1ODgtY2FuZmRcXFwiLFxcbitcXHRcXHQuZGF0YSA9IFxcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsXFxuIFxcdH0sIHtcXG4gXFx0XFx0Lyogc2VudGluZWwgKi9cXG4gXFx0fSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xcbmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xcbkBAIC0yODEsNyArMjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xcbiBcXG4tXFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpXFxuK1xcdFxcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTtcXG4rXFxuK1xcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCwgcmVnKTtcXG4gfVxcbiBcXG4gaW50IHJrY2FuZmRfaGFuZGxlX3J4X2ludChzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXFxuaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXFxuQEAgLTIxNCw3ICsyMTQsOCBAQFxcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMClcXG4gXFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XFxuLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNClcXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4IEdFTk1BU0soNiwgNClcXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSlcXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19GVUxMX1dBVEVSTUFSSyBHRU5NQVNLKDMsIDEpXFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKVxcbiBcXG5AQCAtMzMxLDYgKzMzMiwxMSBAQFxcbiAgKiByYXJlbHkgd2l0aCB0aGUgc3RhbmRhcmQgY2xvY2sgb2YgMzAwIE1IeiwgYnV0IGFsbW9zdCBpbW1lZGlhdGVseVxcbiAgKiBhdCA4MCBNSHouXFxuICAqXFxuKyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBlbXB0eSBGSUZPIGNvbmRpdGlvbi5cXG4rICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1c1xcbisgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlXFxuKyAqIHRoZSBidXMgcmVhY2hlcyBhIHN0ZWFkeSBzdGF0ZS5cXG4rICpcXG4gICogVG8gd29ya2Fyb3VuZCB0aGlzIHByb2JsZW0sIGNoZWNrIGZvciBlbXB0eSBGSUZPIHdpdGhcXG4gICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdFxcbiAgKiBlYXJseS5cXG5AQCAtMzQ0LDYgKzM1MCw4IEBAXFxuIC8qIEVycmF0dW0gNjogVGhlIENBTiBjb250cm9sbGVyJ3MgdHJhbnNtaXNzaW9uIG9mIGV4dGVuZGVkIGZyYW1lcyBtYXlcXG4gICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzXFxuICAqXFxuKyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLlxcbisgKlxcbiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2VcXG4gICogaGF2ZSBwZW5kaW5nIFRYIENBTiBmcmFtZXMsIGNoZWNrIGFsbCBSWCdlZCBDQU4gZnJhbWVzIGluXFxuICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuXFxuQEAgLTQyNCw2ICs0MzIsOSBAQFxcbiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDFcXG4gICpcXG4gICogLSBUWCBzdGFydmF0aW9uIGFmdGVyIHJlcGVhdGVkIEJ1cy1PZmZcXG4rICogICBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS4gSW4gYVxcbisgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlXFxuKyAqICAgY29udHJvbGxlciByZXN0YXJ0ZWQuXFxuICAqICAgVG8gcmVwcm9kdWNlOlxcbiAgKiAgIGhvc3Q6XFxuICAqICAgICBzbGVlcCAzIFxcdTAwMjZcXHUwMDI2IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wXFxuQEAgLTQzNCw2ICs0NDUsNyBAQFxcbiBlbnVtIHJrY2FuZmRfbW9kZWwge1xcbiBcXHRSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MixcXG4gXFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXFxuK1xcdFJLQ0FORkRfTU9ERUxfUkszNTg4ID0gMHgzNTg4LFxcbiB9O1xcbiBcXG4gc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXFxuQEAgLTE1NjUsNyArMTU2NSw3IEBAIHN0YXRpYyBpbnQgZ3NfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiBcXG4gXFx0aWYgKGljb3VudCBcXHUwMDNlIHR5cGVfbWF4KHBhcmVudC1cXHUwMDNlY2hhbm5lbF9jbnQpKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNmludGYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFxcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhdCAldSBDQU4gaW50ZXJmYWNlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFxcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0dHlwZV9tYXgocGFyZW50LVxcdTAwM2VjaGFubmVsX2NudCkpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXFxuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXFxuQEAgLTMzLDYgKzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7XFxuIFxcbiBzdHJ1Y3QgdnhjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1XFx0KnBlZXI7XFxuK1xcdG5ldGRldmljZV90cmFja2VyIHBlZXJfdHJhY2tlcjtcXG4gfTtcXG4gXFxuIHN0YXRpYyBuZXRkZXZfdHhfdCB2eGNhbl94bWl0KHN0cnVjdCBza19idWZmICpvc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC0yNjgsOSArMjY5LDExIEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHQvKiBjcm9zcyBsaW5rIHRoZSBkZXZpY2UgcGFpciAqL1xcbiBcXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXFx1MDAzZXBlZXIsIHBlZXIpO1xcbitcXHRuZXRkZXZfaG9sZChwZWVyLCBcXHUwMDI2cHJpdi1cXHUwMDNlcGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXFx1MDAzZXBlZXIsIGRldik7XFxuK1xcdG5ldGRldl9ob2xkKGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTI4MSwyNCArMjg0LDI1IEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiB7XFxuK1xcdG5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7XFxuIFxcdHN0cnVjdCB2eGNhbl9wcml2ICpwcml2O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbi1cXHRwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LVxcdTAwM2VwZWVyKTtcXG4rXFx0cGVlcl90cmFja2VyID0gXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlcjtcXG4rXFx0cGVlciA9IHVucmN1X3BvaW50ZXIoeGNoZyhcXHUwMDI2cHJpdi1cXHUwMDNlcGVlciwgTlVMTCkpO1xcbitcXHRpZiAoIXBlZXIpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuLVxcdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxcbi1cXHQgKiBiZWZvcmUgYSByY3Vfc3luY2hyb25pemUoKSBwb2ludC4gVGhlIGRldmljZXMgYXJlIGd1YXJhbnRlZWRcXG4tXFx0ICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC5cXG4tXFx0ICovXFxuLVxcdFJDVV9JTklUX1BPSU5URVIocHJpdi1cXHUwMDNlcGVlciwgTlVMTCk7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XFxuIFxcbi1cXHRpZiAocGVlcikge1xcbi1cXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7XFxuLVxcdFxcdFJDVV9JTklUX1BPSU5URVIocHJpdi1cXHUwMDNlcGVlciwgTlVMTCk7XFxuLVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xcbi1cXHR9XFxuK1xcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcXG4rXFx0ZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKFxcdTAwMjZwcml2LVxcdTAwM2VwZWVyLCBOVUxMKSk7XFxuK1xcdGlmIChkZXYpXFxuK1xcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xcbitcXG4rXFx0bmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpO1xcbitcXHRuZXRkZXZfcHV0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlcik7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGNhbl9wb2xpY3lbVlhDQU5fSU5GT19NQVggKyAxXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDguODA3Njc5MTA4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDUxNjE4NjM3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNiZjljZTE1MDkzMDcwMzEyOTI4YTVmNjk1NjFjMWE0NzZkNzM4NGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAyMzo0NzowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5pbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuQEAgLTE2LDcgKzE2LDkgQEAgYWxsT2Y6XG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4gICAgIG9uZU9mOlxuLSAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4rICAgICAgLSBlbnVtOlxuKyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4rICAgICAgICAgIC0gcm9ja2NoaXAscmszNTg4LWNhbmZkXG4gICAgICAgLSBpdGVtczpcbiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djMtY2FuZmRcbiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjc4NzRlOWU0OTIyNDRcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWxcbkBAIC0wLDAgKzEsNjQgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEVkdWFyZCBCb3N0aW5hIFx1MDAzY2VnYm9zdGluYUBnbWFpbC5jb21cdTAwM2VcbitcbithbGxPZjpcbisgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCNcbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAzXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IGhlY2NcbisgICAgICAtIGNvbnN0OiBoZWNjLXJhbVxuKyAgICAgIC0gY29uc3Q6IG1ieFxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIGNsb2NrczpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHRpLHVzZS1oZWNjMWludDpcbisgICAgdHlwZTogYm9vbGVhblxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlXG4rICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZVxuKyAgICAgIHdpbGwgYmUgdXNlZC5cbisgICAgZGVmYXVsdDogZmFsc2VcbitcbisgIHhjZWl2ZXItc3VwcGx5OlxuKyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBpbnRlcnJ1cHRzXG4rICAtIGNsb2Nrc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICBjYW5ANWMwNTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwidGksYW0zNTE3LWhlY2NcIjtcbisgICAgICAgIHJlZyA9IFx1MDAzYzB4NWMwNTAwMDAgMHg4MFx1MDAzZSxcbisgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDVjMDUyMDAwIDB4MjAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIjtcbisgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmhlY2NfY2tcdTAwM2U7XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBlMGYwYTdjZmUzMjkzLi4wMDAwMDAwMDAwMDAwXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsMzIgKzAsMCBAQFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxuLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLVxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcbi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLlxuLVxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XG4tLSBjb21wYXRpYmxlOiBcInRpLGFtMzUxNy1oZWNjXCJcbi0tIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdoZWNjJywgJ2hlY2MtcmFtJ1xuLSAgICAgICBhbmQgJ21ieCdcbi0tIHJlZy1uYW1lcyA6XCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIlxuLS0gaW50ZXJydXB0czogaW50ZXJydXB0IG1hcHBpbmcgZm9yIHRoZSBoZWNjIGludGVycnVwdHMgc291cmNlc1xuLS0gY2xvY2tzOiBjbG9jayBwaGFuZGxlcyAoc2VlIGNsb2NrIGJpbmRpbmdzIGZvciBkZXRhaWxzKVxuLVxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XG4tLSB0aSx1c2UtaGVjYzFpbnQ6IGlmIHByb3ZpZGVkIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzXG4tXHRcdCAgIG9uIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0IEhFQ0MwSU5UIGludGVycnVwdFxuLVx0XHQgICBsaW5lIHdpbGwgYmUgdXNlZC5cbi0tIHhjZWl2ZXItc3VwcGx5OiByZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlclxuLVxuLUV4YW1wbGU6XG4tXG4tRm9yIGFtMzUxN2V2bSBib2FyZDpcbi1cdGhlY2M6IGNhbkA1YzA1MDAwMCB7XG4tXHRcdGNvbXBhdGlibGUgPSBcInRpLGFtMzUxNy1oZWNjXCI7XG4tXHRcdHJlZyA9IFx1MDAzYzB4NWMwNTAwMDAgMHg4MFx1MDAzZSxcbi1cdFx0ICAgICAgXHUwMDNjMHg1YzA1MzAwMCAweDE4MFx1MDAzZSxcbi1cdFx0ICAgICAgXHUwMDNjMHg1YzA1MjAwMCAweDIwMFx1MDAzZTtcbi1cdFx0cmVnLW5hbWVzID0gXCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIjtcbi1cdFx0aW50ZXJydXB0cyA9IFx1MDAzYzI0XHUwMDNlO1xuLVx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZoZWNjX2NrXHUwMDNlO1xuLVx0fTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbmluZGV4IDQwODM1NDk3MDUwYTUuLjE4MDE1ZTYwZmQ2ZDYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuQEAgLTgsNyArOCw3IEBAIHRpdGxlOlxuICAgWGlsaW54IENBTiBhbmQgQ0FORkQgY29udHJvbGxlclxuIFxuIG1haW50YWluZXJzOlxuLSAgLSBBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuKyAgLSBIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG5AQCAtNTMsNiArNTMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy9mbGFnXG4gICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pXG4gXG4rICBwaHlzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbkBAIC05Myw5ICs5Myw5IEBAXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0NC44MjdcIiBjeT1cIjE1OS4xNDNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIi9cdTAwM2VcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwiNTkuNDM2NFwiIGN5PVwiMTQyLjgyM1wiIHJ4PVwiNy4zNjQ1NVwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCIxNDQuODI3XCIgY3k9XCIxMjkuMTk2XCIgcng9XCIxMC44ODY2XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4tICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0My4wNzdcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgXHUwMDNjL2dcdTAwM2Vcbi0gIFx1MDAzY2VsbGlwc2UgY3g9XCIxMTAuMzg2XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiI2ZmY2IzNVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbisgIFx1MDAzY2VsbGlwc2UgY3g9XCIxMTAuMzg2XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiIzI4YTRmZlwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbisgIFx1MDAzY2VsbGlwc2UgY3g9XCIxNDMuMDc3XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiI2ZmY2IzNVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cIjExMC45MDkwN1wiIHk9XCIxNzkuNDI2ODhcIiBmb250LXNpemU9XCIzLjE3NXB4XCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIlx1MDAzZVx1MDAzY3RzcGFuIHg9XCIxMTAuOTA5MDdcIiB5PVwiMTc5LjQyNjg4XCIgZHk9XCIwLjYwMDAwMDAyXCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcdTAwM2VBY2Nlc3NpYmxlXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjdHNwYW4geD1cIjExMC45MDkwN1wiIHk9XCIxODMuMzk1NjNcIlx1MDAzZVx1MDAzY3RzcGFuIGZvbnQtc2l6ZT1cIjMuMTc1cHhcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlx1MDAzZWZvciBTXHUwMDNjL3RzcGFuXHUwMDNlV1x1MDAzYy90c3Bhblx1MDAzZVx1MDAzYy90ZXh0XHUwMDNlXG4gICBcdTAwM2N0ZXh0IHg9XCIxNDMuNTg2OVwiIHk9XCIxNzkuNTI3OTVcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXHUwMDNlXHUwMDNjdHNwYW4geD1cIjE0My41ODY5XCIgeT1cIjE3OS41Mjc5NVwiIGR5PVwiMSAwIDAgMCAwIDBcIiBmb250LWZhbWlseT1cInNhbnMtc2VyaWZcIiBmb250LXNpemU9XCIyLjgyMjIycHhcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBzdHlsZT1cImZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsXCJcdTAwM2VJbmFjY2Vzc2libGVcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTQzLjU4NjlcIiB5PVwiMTgzLjM2Nzg2XCIgZm9udC1zaXplPVwiMy4xNzVweFwiXHUwMDNlXHUwMDNjdHNwYW4gZm9udC1zaXplPVwiMy4xNzVweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHUwMDNlZm9yIFNcdTAwM2MvdHNwYW5cdTAwM2VXXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjL3RleHRcdTAwM2VcbiAgIFx1MDAzY2cgZm9udC1zaXplPVwiMy4xNzVweFwiXHUwMDNlXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggOTkxNDYwMDUwZGE3NC4uNmI0OWEyYzgwY2Q1ZCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTI5NTczLDcgKzI5NTczLDcgQEAgRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQveGxueCxheGktZXRoZXJuZXQueWFtbFxuIEY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXG4gXG4gWElMSU5YIENBTiBEUklWRVJcbi1NOlx0QXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyBcdTAwM2NhcHBhbmEuZHVyZ2EucmFvQHhpbGlueC5jb21cdTAwM2VcbitNOlx0SGFyaW5pIFQgXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVx1MDAzZVxuIEw6XHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXG4gUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuQEAgLTI0NjQsNyArMjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiBcdH1cbiBcbi1cdGlmIChkZXYtXHUwMDNlb2Zfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi1cdTAwM2VvZl9ub2RlLCBcIndha2V1cC1zb3VyY2VcIikpXG4rXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LVx1MDAzZW9mX25vZGUsIFwid2FrZXVwLXNvdXJjZVwiKSlcbiBcdFx0ZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpO1xuIFxuIFx0LyogR2V0IFRYIEZJRk8gc2l6ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuaW5kZXggZWIzMWVkMWY5NjQ0OS4uZDExYTdjODhmYzMyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBpbnQgbV9jYW5fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiBcdG1jYW5fY2xhc3MtXHUwMDNlbmV0LVx1MDAzZWlycSA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZXBtX2Nsb2NrX3N1cHBvcnQgPSAxO1xuIFx0bWNhbl9jbGFzcy1cdTAwM2VwbV93YWtlX3NvdXJjZSA9IDA7XG4tXHRtY2FuX2NsYXNzLVx1MDAzZWNhbi5jbG9jay5mcmVxID0gaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4rXHRtY2FuX2NsYXNzLVx1MDAzZWNhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZWlycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZW9wcyA9IFx1MDAyNm1fY2FuX3BjaV9vcHM7XG4gXG5AQCAtMTgzLDggKzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxuIFx0XHRcdCBtX2Nhbl9wY2lfc3VzcGVuZCwgbV9jYW5fcGNpX3Jlc3VtZSk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xuLVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzIpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbitcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSxcbitcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMikgfSxcbiBcdHsgIH1cdC8qIFRlcm1pbmF0aW5nIEVudHJ5ICovXG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbV9jYW5fcGNpX2lkX3RhYmxlKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuaW5kZXggMzFjYzlkMGFiZDQ1My4uYTViODgyOWFhNTE5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmNcbkBAIC0yMTEsOCArMjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXG4gXHRyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi1cdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgKyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpXG4rc3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHRjYW40eDV4X3ByaXYgKnByaXYsIGludCBlbmFibGUpXG4ge1xuK1x0c3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi1cdTAwM2Vwb3dlcjtcbitcbitcdC8qXG4rXHQgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLFxuK1x0ICogc2luY2UgYSB3YWtlLXVwIGV2ZW50LCBSU1QgcGluIHRvZ2dsZSwgb3IgcG93ZXIgY3ljbGUgYXJlIHRoZSBvbmx5XG4rXHQgKiB3YXlzIHRvIGV4aXQgc2xlZXAgbW9kZS5cbitcdCAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXRcbitcdCAqIGNhbid0IGJlIGRldGVybWluZWQgaGVyZS5cbitcdCAqXG4rXHQgKiBEYXRhc2hlZXQ6IFRDQU40NTUwLCBzZWN0aW9uIFwiOC40LjMgU2xlZXAgTW9kZVwiXG4rXHQgKiBodHRwczovL3d3dy50aS5jb20vbGl0L2dwbi90Y2FuNDU1MFxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvIFx1MDAyNlx1MDAyNiAhZW5hYmxlKSB7XG4rXHRcdGludCByZXQ7XG4rXG4rXHRcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfQ09ORklHLFxuK1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TRUxfTUFTSyxcbitcdFx0XHRcdFx0IFRDQU40WDVYX01PREVfU0xFRVApO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcIlNldHRpbmcgc2xlZXAgbW9kZSBmYWlsZWQgJXBlXFxuXCIsXG4rXHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuK1x0fVxuK1xuIFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQ3Niw3ICs0OTksNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0XHRnb3RvIG91dF9tX2Nhbl9jbGFzc19mcmVlX2RldjtcbiBcdH1cbiBcbi1cdHJldCA9IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAxKTtcbitcdHJldCA9IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAxKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcIkVuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXFxuXCIsXG4gXHRcdFx0RVJSX1BUUihyZXQpKTtcbkBAIC01MzEsNyArNTU0LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdHJldHVybiAwO1xuIFxuIG91dF9wb3dlcjpcbi1cdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAwKTtcbitcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcbiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OlxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy1cdTAwM2VuZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC01NDMsNyArNTY2LDcgQEAgc3RhdGljIHZvaWQgdGNhbjR4NXhfY2FuX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFxuIFx0bV9jYW5fY2xhc3NfdW5yZWdpc3RlcihcdTAwMjZwcml2LVx1MDAzZWNkZXYpO1xuIFxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuK1x0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApO1xuIFxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYocHJpdi1cdTAwM2VjZGV2Lm5ldCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5pbmRleCAyOWRlMGMwMWU0ZWRjLi4zN2MxYzIyYzQwYzlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xuQEAgLTUwLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMgPSB7XG4gXHRcdFJLQ0FORkRfUVVJUktfQ0FORkRfQlJPS0VOLFxuIH07XG4gXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODggPSB7XG4rXHQubW9kZWwgPSBSS0NBTkZEX01PREVMX1JLMzU4OCxcbitcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxuK1x0XHRSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzYsXG4rfTtcbitcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIHtcbiBcdHN3aXRjaCAobW9kZWwpIHtcbkBAIC01Nyw2ICs2Myw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpXG4gXHRcdHJldHVybiBcInJrMzU2OHYyXCI7XG4gXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTY4VjM6XG4gXHRcdHJldHVybiBcInJrMzU2OHYzXCI7XG4rXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OlxuK1x0XHRyZXR1cm4gXCJyazM1ODhcIjtcbiBcdH1cbiBcbiBcdHJldHVybiBcIlx1MDAzY3Vua25vd25cdTAwM2VcIjtcbkBAIC0xNDgsNiArMTU2LDEyIEBAIHN0YXRpYyBpbnQgcmtjYW5mZF9zZXRfYml0dGltaW5nKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4gXG4gXHRya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX0ZEX0RBVEFfQklUVElNSU5HLCByZWdfZGJ0KTtcbiBcbitcdC8qIFJLMzU4OCBDQU4tRkQgQlJTIHdvcmtzIHdpdGggVERDIGRpc2FibGVkLiAqL1xuK1x0aWYgKHByaXYtXHUwMDNlZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KSB7XG4rXHRcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHR0ZGNvID0gKHByaXYtXHUwMDNlY2FuLmNsb2NrLmZyZXEgLyBkYnQtXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcbiBcdHRkY28gPSBtaW4odGRjbywgRklFTERfTUFYKFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTl9URENfT0ZGU0VUKSk7XG4gXG5AQCAtODQ2LDYgKzg2MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrY2FuZmRfb2ZfbWF0Y2hbXSA9IHtcbiBcdH0sIHtcbiBcdFx0LmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXCIsXG4gXHRcdC5kYXRhID0gXHUwMDI2cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsXG4rXHR9LCB7XG4rXHRcdC5jb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1ODgtY2FuZmRcIixcbitcdFx0LmRhdGEgPSBcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsXG4gXHR9LCB7XG4gXHRcdC8qIHNlbnRpbmVsICovXG4gXHR9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcbmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcbkBAIC0yODEsNyArMjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4ge1xuIFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xuIFxuLVx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XG4rXHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpXG4rXHRcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTtcbitcbitcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCwgcmVnKTtcbiB9XG4gXG4gaW50IHJrY2FuZmRfaGFuZGxlX3J4X2ludChzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbmluZGV4IDkzMTMxYzdkN2Y1NGQuLjk1YmVhOWJmZDhhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbkBAIC0yMTQsNyArMjE0LDggQEBcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMClcbiBcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCAweDExOFxuLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNClcbisjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KVxuKyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCBHRU5NQVNLKDcsIDUpXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19GVUxMX1dBVEVSTUFSSyBHRU5NQVNLKDMsIDEpXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19FTkFCTEUgQklUKDApXG4gXG5AQCAtMzMxLDYgKzMzMiwxMSBAQFxuICAqIHJhcmVseSB3aXRoIHRoZSBzdGFuZGFyZCBjbG9jayBvZiAzMDAgTUh6LCBidXQgYWxtb3N0IGltbWVkaWF0ZWx5XG4gICogYXQgODAgTUh6LlxuICAqXG4rICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLlxuKyAqIEluIHRoYXQgc2V0dXAgcnhfZmlmb19lbXB0eV9lcnJvcnMgaW5jcmVtZW50cyB3aGVuIHRoZSBidXNcbisgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlXG4rICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLlxuKyAqXG4gICogVG8gd29ya2Fyb3VuZCB0aGlzIHByb2JsZW0sIGNoZWNrIGZvciBlbXB0eSBGSUZPIHdpdGhcbiAgKiBya2NhbmZkX2ZpZm9faGVhZGVyX2VtcHR5KCkgaW4gcmtjYW5mZF9oYW5kbGVfcnhfaW50X29uZSgpIGFuZCBleGl0XG4gICogZWFybHkuXG5AQCAtMzQ0LDYgKzM1MCw4IEBAXG4gLyogRXJyYXR1bSA2OiBUaGUgQ0FOIGNvbnRyb2xsZXIncyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heVxuICAqIGludGVybWl0dGVudGx5IGNoYW5nZSBpbnRvIHN0YW5kYXJkIGZyYW1lc1xuICAqXG4rICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uXG4rICpcbiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2VcbiAgKiBoYXZlIHBlbmRpbmcgVFggQ0FOIGZyYW1lcywgY2hlY2sgYWxsIFJYJ2VkIENBTiBmcmFtZXMgaW5cbiAgKiBya2NhbmZkX3J4c3R4X2ZpbHRlcigpLlxuQEAgLTQyNCw2ICs0MzIsOSBAQFxuICAqICAgICBjYW5zZXF1ZW5jZSAtcnYgLWkgMVxuICAqXG4gICogLSBUWCBzdGFydmF0aW9uIGFmdGVyIHJlcGVhdGVkIEJ1cy1PZmZcbisgKiAgIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLiBJbiBhXG4rICogICAxMC1jeWNsZSBCdXMtT2ZmIHJlY292ZXJ5IHRlc3QsIDkgY3ljbGVzIGZhaWxlZCB0byBzZW5kIGFmdGVyIHRoZVxuKyAqICAgY29udHJvbGxlciByZXN0YXJ0ZWQuXG4gICogICBUbyByZXByb2R1Y2U6XG4gICogICBob3N0OlxuICAqICAgICBzbGVlcCAzIFx1MDAyNlx1MDAyNiBjYW5nZW4gY2FuMCAtSTIgLUxpIC1EaSAtcDEwIC1nIDAuMFxuQEAgLTQzNCw2ICs0NDUsNyBAQFxuIGVudW0gcmtjYW5mZF9tb2RlbCB7XG4gXHRSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MixcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjMgPSAweDM1NjgzLFxuK1x0UktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsXG4gfTtcbiBcbiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuQEAgLTE1NjUsNyArMTU2NSw3IEBAIHN0YXRpYyBpbnQgZ3NfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFxuIFx0aWYgKGljb3VudCBcdTAwM2UgdHlwZV9tYXgocGFyZW50LVx1MDAzZWNoYW5uZWxfY250KSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LFxuLVx0XHRcdFwiRHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGF0ICV1IENBTiBpbnRlcmZhY2VzXFxuXCIsXG4rXHRcdFx0XCJEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYW4gJXUgQ0FOIGludGVyZmFjZXNcXG5cIixcbiBcdFx0XHR0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuQEAgLTMzLDYgKzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7XG4gXG4gc3RydWN0IHZ4Y2FuX3ByaXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgX19yY3VcdCpwZWVyO1xuK1x0bmV0ZGV2aWNlX3RyYWNrZXIgcGVlcl90cmFja2VyO1xuIH07XG4gXG4gc3RhdGljIG5ldGRldl90eF90IHZ4Y2FuX3htaXQoc3RydWN0IHNrX2J1ZmYgKm9za2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtMjY4LDkgKzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGNyb3NzIGxpbmsgdGhlIGRldmljZSBwYWlyICovXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIHBlZXIpO1xuK1x0bmV0ZGV2X2hvbGQocGVlciwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXHUwMDNlcGVlciwgZGV2KTtcbitcdG5ldGRldl9ob2xkKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjgxLDI0ICsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIHtcbitcdG5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7XG4gXHRzdHJ1Y3QgdnhjYW5fcHJpdiAqcHJpdjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpwZWVyO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tXHRwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LVx1MDAzZXBlZXIpO1xuK1x0cGVlcl90cmFja2VyID0gXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXI7XG4rXHRwZWVyID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuK1x0aWYgKCFwZWVyKVxuK1x0XHRyZXR1cm47XG4gXG4tXHQvKiBOb3RlIDogZGVsbGluaygpIGlzIGNhbGxlZCBmcm9tIGRlZmF1bHRfZGV2aWNlX2V4aXRfYmF0Y2goKSxcbi1cdCAqIGJlZm9yZSBhIHJjdV9zeW5jaHJvbml6ZSgpIHBvaW50LiBUaGUgZGV2aWNlcyBhcmUgZ3VhcmFudGVlZFxuLVx0ICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC5cbi1cdCAqL1xuLVx0UkNVX0lOSVRfUE9JTlRFUihwcml2LVx1MDAzZXBlZXIsIE5VTEwpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbiBcbi1cdGlmIChwZWVyKSB7XG4tXHRcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbi1cdFx0UkNVX0lOSVRfUE9JTlRFUihwcml2LVx1MDAzZXBlZXIsIE5VTEwpO1xuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShwZWVyLCBoZWFkKTtcbi1cdH1cbitcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbitcdGRldiA9IHVucmN1X3BvaW50ZXIoeGNoZyhcdTAwMjZwcml2LVx1MDAzZXBlZXIsIE5VTEwpKTtcbitcdGlmIChkZXYpXG4rXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xuK1xuK1x0bmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpO1xuK1x0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCArIDFdID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDguODA3NjgwMTI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNzYyMDk3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb24gZm9yIEZ1enppbmcgQ2FuZGlkYXRlIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoLCBpZiBhbnksIG9mIHRoZXNlIGtlcm5lbCBjaGFuZ2VzIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcGF0Y2hzZXQgbWFrZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLCBhbmQgdGhlbiBJIG5lZWQgdG8gYXNzZXNzIGhvdyBhY2Nlc3NpYmxlIHRob3NlIGNoYW5nZXMgYXJlIGZvciBmdXp6aW5nLlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIGFyZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMg4oCTIG5vdCBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgc28gdGhvc2UgYXJlIG91dC4gVGhlIGBNQUlOVEFJTkVSU2AgZmlsZSBjaGFuZ2UgaXMgaXJyZWxldmFudC5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgZHJpdmVyIGNoYW5nZXMuIEkgc2VlIGEgbWlub3IgQVBJIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNgIHdoZXJlIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGlzIHJlcGxhY2VkIHdpdGggYG9mX3Byb3BlcnR5X3ByZXNlbnRgLiBJdCdzIGEgc3VidGxlIGNoYW5nZSwgYXMgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgaW1wbGljaXRseSBjaGVja3MgaWYgdGhlIHByb3BlcnR5IGV4aXN0cywgdGhlcmVmb3JlLCBubyBmdXp6aW5nIHJlcXVpcmVkLiAgU2ltaWxhcmx5LCB0aGUgcmVmYWN0b3JpbmcgaW4gYGRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY2Agc2VlbXMgbGlrZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLlxuXG5OZXh0LCBgZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY2AgaGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHRlYXJkb3duL3N1c3BlbmQvcHJvYmUgZXJyb3IgcGF0aC4gSXQncyBwdXR0aW5nIHRoZSBkZXZpY2UgdG8gc2xlZXAuIEhtbSwgdGhpcyBpcyBhbiBTUEkgQ0FOIGNvbnRyb2xsZXIuIEknbSBnb2luZyB0byBndWVzcyB0aGlzIGlzbid0IGVhc3kgdG8gcmVhY2ggd2l0aCBzdGFuZGFyZCBRRU1VOyBnZXR0aW5nIFNQSSBkZXZpY2VzIHJpZ2h0IGluIFFFTVUgY2FuIGJlIGEgcGFpbi4gSSBzaG91bGQgbm90ZSB0aGlzIGRvd24sIGJ1dCBpdCdzIHByb2JhYmx5IGxvdyBwcmlvcml0eS5cblxuVGhlIGNoYW5nZXMgaW4gYGRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgYWRkIHN1cHBvcnQgZm9yIHRoZSBgcmszNTg4YC4gSXQncyBhIHBsYXRmb3JtIGRyaXZlciwgc28gYWdhaW4sIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIGlzIHVubGlrZWx5LCB1bmxlc3MgYSBzcGVjaWZpYyBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gaXMgc2V0dXAuXG5cbkEgdHlwbyBmaXggaW4gYGRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNgIGlz4oCmd2VsbCwgaXQncyBhIHR5cG8gZml4LlxuXG5Ob3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNgLiBXZSd2ZSBnb3QgY2hhbmdlcyB0byBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gSSBzZWUgdGhleSdyZSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgIGFuZCBgbmV0ZGV2X3B1dGAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqIGluIGB2eGNhbmAsIHdoaWNoIGlzIGEgdmlydHVhbCBDQU4gdHVubmVsLiBDcnVjaWFsbHksIEkga25vdyB0aGF0IGB2eGNhbmAgaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlLCBtdWNoIGxpa2UgYHZldGhgLCBhbmQgdGh1cyBlYXNpbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIChydG5ldGxpbmspIGluIFFFTVUvc3l6a2FsbGVyLiBCaW5nbyEgVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHNob3VsZCBiZSB0b3AgcHJpb3JpdHkuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgYHZ4Y2FuYCBjaGFuZ2VzIGluIHBhcnRpY3VsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MDEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MTkuODgzODkxNzQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg5NzU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhjYW5fbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMy1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVxcdFxcdFxcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyMy1cXHQuc2V0dXBcXHRcXHQ9IHZ4Y2FuX3NldHVwLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcXHQubmV3bGlua1xcdD0gdnhjYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXFx0LmRlbGxpbmtcXHQ9IHZ4Y2FuX2RlbGxpbmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjIxLjQ4Mjg3NDE3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzIyMTI4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdnhjYW4uYyBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuLmNgIGFyZSBmb2N1c2VkIG9uIHR3byBrZXkgZnVuY3Rpb25zOiBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBjcmVhdGlvbiBhbmQgZGVsZXRpb24gb2YgdmlydHVhbCBDQU4gaW50ZXJmYWNlcywgcmVzcGVjdGl2ZWx5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gRnJvbSBhbiBhcmNoaXRlY3R1cmUgcGVyc3BlY3RpdmUsIHRoZXNlIGFyZSBjcml0aWNhbCBwb2ludHMsIGFuZCBkZWZpbml0ZWx5ICpyZWFjaGFibGUqIGFuZCAqdGVzdGFibGUqLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucywgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgQ0FOIGNvcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbGwgc2VhcmNoIGZvciB0aGUgYHZ4Y2FuYCBvcHRpb24uIElzIHRoaXMgYSBuZXcgZmVhdHVyZSBnYXRlZCBiZWhpbmQgYSBjb25maWcgb3B0aW9uPyBJcyBpdCBpbmNsdWRlZCBieSBkZWZhdWx0PyBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhbmQsIG9mIGNvdXJzZSwgaG93IGl0IGNhbiBiZSB0ZXN0ZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgY29uZmlndXJhdGlvbnMuIEEgcXVpY2sgY2hlY2sgb2YgYEtjb25maWdgIHdpbGwgdGVsbCBtZSBpZiBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjI1LjMxNTA4OTAwOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk0ODYwMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fVlhDQU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWc9MjU9Y29uZmlnIENBTl9WQ0FOXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0zMy1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzozNDpjb25maWcgQ0FOX1ZYQ0FOXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMzUtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgQ0FOIFR1bm5lbCAodnhjYW4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzoyNi45MDk5NTMxMThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyOTI2NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ0FOX1ZYQ0FOIEtjb25maWcgRW50cnkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBzZWN0aW9uIHJlbGF0ZWQgdG8gYENBTl9WWENBTmAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHZpcnR1YWwgQ0FOIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIEZpcnN0LCBJ4oCZbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIGl0IGRlcGVuZGVudCBvbiBvdGhlciBDQU4gZHJpdmVycywgb3Igc29tZSB1bmRlcmx5aW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBpdCByZXF1aXJlcywgZXZlbiBpZiBpdCdzIHZpcnR1YWw/IEl0J3MgYWxsIGFib3V0IGhvdyBgQ0FOX1ZYQ0FOYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQ0FOIGVjb3N5c3RlbSB3aXRoaW4gdGhpcyBrZXJuZWwuIEkgd2FudCB0byBzZWUgaG93IHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXNvbHZlIHRoaXMgdG8gYSB3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCB1bmRlcnN0YW5kIHdoYXQgSSB3b3VsZCBuZWVkIHRvIGRvIHRvIGVuYWJsZSBpdC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdpbGwgZW5hYmxlIGBDQU5fVlhDQU5gLiBBcmUgdGhlcmUgb3RoZXIgc2V0dGluZ3MgdGhhdCB3aWxsIGFsc28gYmUgbmVlZGVkPyBXaGF0IGtpbmQgb2Ygc3lzdGVtIHdpbGwgaGF2ZSBhIGdvb2QgYXBwbGljYXRpb24gZm9yIHRoZSB1c2Ugb2YgYENBTl9WWENBTmA/IEknbGwgcHJvYmFibHkgbG9vayBmb3IgaXRzIGhlbHAgdGV4dCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzAuMzUyODgyMDU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcXG4gIDMyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdmNhbi5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0Y29uZmlnIENBTl9WWENBTlxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgQ0FOIFR1bm5lbCAodnhjYW4pXFxcIlxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTaW1pbGFyIHRvIHRoZSB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlciB2ZXRoLCB2eGNhbiBpbXBsZW1lbnRzIGFcXG4gIDM4OlxcdFxcdCAgbG9jYWwgQ0FOIHRyYWZmaWMgdHVubmVsIGJldHdlZW4gdHdvIHZpcnR1YWwgQ0FOIG5ldHdvcmsgZGV2aWNlcy5cXG4gIDM5OlxcdFxcdCAgV2hlbiBjcmVhdGluZyBhIHZ4Y2FuLCB0d28gdnhjYW4gZGV2aWNlcyBhcmUgY3JlYXRlZCBhcyBwYWlyLlxcbiAgNDA6XFx0XFx0ICBXaGVuIG9uZSBlbmQgcmVjZWl2ZXMgdGhlIHBhY2tldCBpdCBhcHBlYXJzIG9uIGl0cyBwYWlyIGFuZCB2aWNlXFxuICA0MTpcXHRcXHQgIHZlcnNhLiBUaGUgdnhjYW4gY2FuIGJlIHVzZWQgZm9yIGNyb3NzIG5hbWVzcGFjZSBjb21tdW5pY2F0aW9uLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIFRvIGhhdmUgYSBjbGVhbiBzdGFydCBpbiBlYWNoIG5hbWVzcGFjZSB0aGUgQ0FOIEdXIGhvcCBjb3VudGVyIGlzXFxuICA0NDpcXHRcXHQgIHNldCB0byB6ZXJvLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcXG4gIDQ3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnhjYW4uXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBDQU5fTkVUTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzozMC4zNTI5NjEzMzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM4NDU3ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWd5IGhpbmdlcyBvbiB0aGUgY29uZGl0aW9uYWwgYXZhaWxhYmlsaXR5IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbiBmb3IgdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENBTiBkcml2ZXJzLiBUaGlzIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoZSBrZXJuZWwncyBDQU4gc3Vic3lzdGVtLiBTbywgbGV0J3MgaGVhZCB0byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBkaXZlIHJpZ2h0IGludG8gdGhhdCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uLCBwb3NzaWJseSBhbiBgaWZgIHN0YXRlbWVudCwgZGVmaW5pbmcgdGhlIGNvbmRpdGlvbiBJJ20gbG9va2luZyBmb3IuIExldCdzIHNlZSBpZiBpdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM3OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzMuMDkxNDIwOTE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgQ0FOX0RFVlxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDQU5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXFxuICAgOTpcXHRcXHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXFxuICAxMDpcXHRcXHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcXG4gIDExOlxcdFxcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xcbiAgMTI6XFx0XFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDEzOlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE0OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIENBTigtRkQpIGRldmljZSBkcml2ZXJzIGluY2x1ZGluZyB0aGVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBvbmVzLiBJZiB5b3Ugb3duIHN1Y2ggZGV2aWNlcyBvciBwbGFuIHRvIHVzZSB0aGUgdmlydHVhbCBDQU5cXG4gIDE4OlxcdFxcdCAgaW50ZXJmYWNlcyB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucywgc2F5IFkgaGVyZS5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjMzLjA5MTQ4MzgyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjc3OTUyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYENBTl9WWENBTmAgbW9kdWxlIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IG5lZWRzIGJvdGggYENBTmAgYW5kIGBDQU5fREVWYCBlbmFibGVkLiBUaGF0J3MgcHJldHR5IHN0YW5kYXJkIGZvciB0aGVzZSB2aXJ0dWFsIENBTiBkZXZpY2VzOyB0aGV5J3JlIGJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uYWwgQ0FOIGluZnJhc3RydWN0dXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBpbiB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBDQU5gIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyLiBJdCdzIGFsd2F5cyBnb29kIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2Ygd2hhdCdzIHJlcXVpcmVkIGZvciBgQ0FOX1ZYQ0FOYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzozNS43Njk0MzgwNThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIG5ldHdvcmsgbGF5ZXIgY29yZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgQ0FOXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBhIHNsb3cgKHVwIHRvIDFNYml0L3MpIHNlcmlhbFxcbiAgMTE6XFx0XFx0ICBjb21tdW5pY2F0aW9ucyBwcm90b2NvbC4gRGV2ZWxvcG1lbnQgb2YgdGhlIENBTiBidXMgc3RhcnRlZCBpblxcbiAgMTI6XFx0XFx0ICAxOTgzIGF0IFJvYmVydCBCb3NjaCBHbWJILCBhbmQgdGhlIHByb3RvY29sIHdhcyBvZmZpY2lhbGx5XFxuICAxMzpcXHRcXHQgIHJlbGVhc2VkIGluIDE5ODYuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSxcXG4gIDE0OlxcdFxcdCAgYnV0IGlzIG5vdyB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDE1OlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE2OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIElmIHlvdSB3YW50IENBTiBzdXBwb3J0IHlvdSBzaG91bGQgc2F5IFkgaGVyZSBhbmQgYWxzbyB0byB0aGVcXG4gIDE5OlxcdFxcdCAgc3BlY2lmaWMgZHJpdmVyIGZvciB5b3VyIGNvbnRyb2xsZXIocykgdW5kZXIgdGhlIE5ldHdvcmsgZGV2aWNlXFxuICAyMDpcXHRcXHQgIHN1cHBvcnQgc2VjdGlvbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzUuNzY5NTE5MzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDk4MTk0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIENBTiBEcml2ZXIgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQ0FOIGRyaXZlciBvcHRpb25zOiBgQ0FOYCwgYENBTl9ERVZgLCBgQ0FOX1ZYQ0FOYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHdoYXQncyBlYXNpbHkgdGVzdGFibGUuIFdoYXQgYWJvdXQgdGhlIHNwZWNpZmljcywgbGlrZSBgdGNhbjR4NXgtY29yZS5jYD8gVGhhdCdzIGFuIFNQSSBkcml2ZXIsIHRoZSBgVENBTjRYNVhgIOKAkyBwb3RlbnRpYWxseSBhIGh1cmRsZS4gVGhlbiB0aGVyZSdzIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBwcm9iYWJseSBmb3IgdGhlIGBDQU5fUk9DS0NISVBfQ0FORkRgIHBsYXRmb3JtLiBBbmQgYG1fY2FuYCBpcyBzaW1wbHkgYENBTl9NX0NBTmAuIFRoZXNlIGFyZSBhbGwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczsgdGhleSdyZSBnb2luZyB0byBiZSBhIGJpdCB0cmlja2llciB0byBnZXQgbXkgaGFuZHMgb24gZGlyZWN0bHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuXG5cbkhvd2V2ZXIsIGB2eGNhbmAsIGJlaW5nIGEgdmlydHVhbCBkcml2ZXIsIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgdGhlIG1vc3QgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBjYW5kaWRhdGUuIFRoYXQncyB0aGUga2V5LiBJIGNhbiB3b3JrIHdpdGggdGhhdC5cblxuTm93LCBteSBmb2N1cyBzaGlmdHMuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBvZiBgdnhjYW4uY2AgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLiBTbywgSSdsbCBjaGVjayBpdHMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gbmV0d29yay4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlaXIgc2lnbmF0dXJlcywgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhleSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NTksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo0MC40NzkzNDIyMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2Njk4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhjYW5fbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMy1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVxcdFxcdFxcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyMy1cXHQuc2V0dXBcXHRcXHQ9IHZ4Y2FuX3NldHVwLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcXHQubmV3bGlua1xcdD0gdnhjYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXFx0LmRlbGxpbmtcXHQ9IHZ4Y2FuX2RlbGxpbmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjQxLjk4OTAxNzQ0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ4ODY3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgdnhjYW5fZGVsbGlua2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgdnhjYW5fZGVsbGlua2AuIEkgbmVlZCB0byBhc3Nlc3Mgd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBjb21wb25lbnQuIEknbSBwcm9iYWJseSB0aGlua2luZyBhYm91dCBhIHNwZWNpZmljIHByb2JsZW0gb3IgcGVyaGFwcyBJJ20gaW52ZXN0aWdhdGluZyBhbiBlcnJvciByZXBvcnQuIEZpcnN0LCBJIG5lZWQgdG8gc2VlIHdoYXQgSSBrbm93LCBhbmQgd2hhdCBJICpkb24ndCoga25vdywgYWJvdXQgaG93IGB2eGNhbl9kZWxsaW5rYCBpcyBiZWhhdmluZyByaWdodCBub3cuIElzIGl0IHBlcmZvcm1pbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgYW5vbWFsaWVzPyBCYXNlZCBvbiB0aGF0LCBJJ2xsIHN0YXJ0IGNoZWNraW5nIHRoZSBjb2RlIGRpcmVjdGx5LCBtYXliZSBsb29rIGZvciByZWxhdGVkIGxvZyBlbnRyaWVzLCBvciBiZWdpbiB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGV4ZWN1dGlvbiB0byBzZWUgd2hlcmUgdGhlIGJvdHRsZW5lY2sgbWlnaHQgYmUsIG9yIG1heWJlIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uIHRoYXQncyBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV04oCZcyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxOTMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo0NC42Mzc4ODk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2ODY0MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4Y2FuX2RlbGxpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MjA0PXN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg0LVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjI4NTpzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMyMD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjQtXFx0Lm5ld2xpbmtcXHQ9IHZ4Y2FuX25ld2xpbmssXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzI1OlxcdC5kZWxsaW5rXFx0PSB2eGNhbl9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyNi1cXHQucG9saWN5XFx0XFx0PSB2eGNhbl9wb2xpY3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjQ2LjA3NDc1Nzk2OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIwNjQ4NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCBzZXJpZXMsIEkndmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgaW1wYWN0ZnVsIGNoYW5nZXMsIGFuZCB0aGVyZWZvcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLCBhcmUgZGVmaW5pdGVseSBpbiBgdnhjYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgYXJlIHdoZXJlIHRoZSByZWFsIGp1aWNlIGlzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleeKAmXZlIGFkZHJlc3NlZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgL2BuZXRkZXZfcHV0YC4gU21hcnQgbW92ZSwgdGhhdOKAmXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhbiBiaXRlIHlvdSBsYXRlciBpZiB5b3UncmUgbm90IGNhcmVmdWwuXG5cbkkgdG9vayBhIGxvb2sgdGhyb3VnaCB0aGUgb3RoZXIgZmlsZXMgdG91Y2hlZCBpbiB0aGUgcGF0Y2gsIG9mIGNvdXJzZS4gVGhlIHR5cG8gaW4gYGdzX3VzYi5jYD8gTm90IHdvcnRoIHRoZSB0aW1lLCBhbmQgdGhlIGBvZl9wcm9wZXJ0eWAgY2hhbmdlIGluIGBtX2Nhbi5jYCBhbmQgdGhlIHJlZmFjdG9yaW5nIGluIGBtX2Nhbl9wY2kuY2Agc2VlbSBtb3JlIGNvc21ldGljIG9yIHJlbGF0ZWQgdG8gZGV2aWNlIGluaXRpYWxpemF0aW9uL2NvbmZpZ3VyYXRpb24sIG5vdGhpbmcgdGhhdCB3b3VsZCBiZSBhIGhpZ2ggcHJpb3JpdHkgZm9yIGZ1enppbmcuIGB0Y2FuNHg1eC1jb3JlLmNgIGFuZCBgcm9ja2NoaXBfY2FuZmQtY29yZS5jYCBhcmUgU1BJIGFuZCBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVycyByZXNwZWN0aXZlbHksIHdoaWNoIGFyZW4ndCBlYXNpbHkgcmVhY2hhYmxlIGluIG15IHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIEknbSB3cml0aW5nIHRob3NlIG9mZiBmb3Igbm93LlxuXG5TbywgaXQncyBjbGVhcjogYHZ4Y2FuLmNgIGlzIHRoZSB0YXJnZXQuIFRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyLCBgdnhjYW5gLCBpcyBlYXNpbHkgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgZml4aW5nIHRoaXMga2luZCBvZiBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlIGlzIGFsc28gYSBnb29kIHJlYXNvbiB0byBmb2N1cyBvbiBpdC5cblxuVGhlcmVmb3JlLCBteSBzdW1tYXJ5IGFuZCByZWNvbW1lbmRhdGlvbnMgYXJlOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogdHJ1ZVxuKiAgICoqRm9jdXNTeW1ib2xzKio6XG4gICAgKiAgIGB2eGNhbl9uZXdsaW5rYFxuICAgICogICBgdnhjYW5fZGVsbGlua2BcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjpcbiAgICAqICAgYENBTmBcbiAgICAqICAgYENBTl9ERVZgXG4gICAgKiAgIGBDQU5fVlhDQU5gXG5cblRoZSBwYXRjaCBpcyB0b3VjaGluZyBjb3JlIHJlZiBjb3VudGluZyBsb2dpYyBvbiBhIHZpcnR1YWwgZGV2aWNlLCBzbyBpdCBpcyBoaWdoIHZhbHVlIGFuZCBlYXN5IHRvIHRyaWdnZXIuIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjYyLCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My44OTU0MDg5MzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDEzMDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjUzLjk2OTU0NTU3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzcyNDQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My45NzAyOTQ5MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ0MzY0OTA1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBkZXZpY2UgdHJlZSBiaW5kaW5nIHVwZGF0ZXMsIGhhcmR3YXJlIGRyaXZlciBmaXhlcyAoc2xlZXAgbW9kZSBoYW5kbGluZyBpbiB0Y2FuNHg1eCwgUkszNTg4IHN1cHBvcnQgaW4gcm9ja2NoaXBfY2FuZmQsIGNsb2NrIGZyZXF1ZW5jeSBpbiBtX2Nhbl9wY2kpLCBhbmQgYSByZWZjb3VudGluZy9VQUYgZml4IGluIHZ4Y2FuLmMgdXNpbmcgbmV0ZGV2aWNlX3RyYWNrZXIuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IGV4cG9zZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIHN0YXRlLiBUaGUgdnhjYW4uYyBmaXggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUvcmVmY291bnRpbmcgaXNzdWUgd2hpY2ggaXMgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWxcbmluZGV4IGEwNzdjMDMzMDAxMzcuLjgxZTJiNmRmZWIwMjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5AQCAtMTYsNyArMTYsOSBAQCBhbGxPZjpcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgb25lT2Y6XG4tICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcbisgICAgICAtIGVudW06XG4rICAgICAgICAgIC0gcm9ja2NoaXAscmszNTY4djItY2FuZmRcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1ODgtY2FuZmRcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2My1jYW5mZFxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzg3NGU5ZTQ5MjI0NFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxuQEAgLTAsMCArMSw2NCBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQylcbitcbittYWludGFpbmVyczpcbisgIC0gRWR1YXJkIEJvc3RpbmEgXHUwMDNjZWdib3N0aW5hQGdtYWlsLmNvbVx1MDAzZVxuK1xuK2FsbE9mOlxuKyAgLSAkcmVmOiBjYW4tY29udHJvbGxlci55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogdGksYW0zNTE3LWhlY2NcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDNcbitcbisgIHJlZy1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogaGVjY1xuKyAgICAgIC0gY29uc3Q6IGhlY2MtcmFtXG4rICAgICAgLSBjb25zdDogbWJ4XG4rXG4rICBpbnRlcnJ1cHRzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgY2xvY2tzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgdGksdXNlLWhlY2MxaW50OlxuKyAgICB0eXBlOiBib29sZWFuXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIElmIHByb3ZpZGVkLCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cyBvbiB0aGVcbisgICAgICBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCwgdGhlIEhFQ0MwSU5UIGludGVycnVwdCBsaW5lXG4rICAgICAgd2lsbCBiZSB1c2VkLlxuKyAgICBkZWZhdWx0OiBmYWxzZVxuK1xuKyAgeGNlaXZlci1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlci5cbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWdcbisgIC0gcmVnLW5hbWVzXG4rICAtIGludGVycnVwdHNcbisgIC0gY2xvY2tzXG4rXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK2V4YW1wbGVzOlxuKyAgLSB8XG4rICAgIGNhbkA1YzA1MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJ0aSxhbTM1MTctaGVjY1wiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuKyAgICAgICAgICAgICAgXHUwMDNjMHg1YzA1MzAwMCAweDE4MFx1MDAzZSxcbisgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTIwMDAgMHgyMDBcdTAwM2U7XG4rICAgICAgICByZWctbmFtZXMgPSBcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiO1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzI0XHUwMDNlO1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2aGVjY19ja1x1MDAzZTtcbisgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG4rKysgL2Rldi9udWxsXG5AQCAtMSwzMiArMCwwIEBAXG4tVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4tXG4tVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uLCB3aGF0IHRoZSBkZXZpY2Ugbm9kZVxuLWZvciB0aGUgaGVjYyBpbnRlcmZhY2UgY29udGFpbnMuXG4tXG4tUmVxdWlyZWQgcHJvcGVydGllczpcbi0tIGNvbXBhdGlibGU6IFwidGksYW0zNTE3LWhlY2NcIlxuLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ2hlY2MnLCAnaGVjYy1yYW0nXG4tICAgICAgIGFuZCAnbWJ4J1xuLS0gcmVnLW5hbWVzIDpcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiXG4tLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzXG4tLSBjbG9ja3M6IGNsb2NrIHBoYW5kbGVzIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHRpLHVzZS1oZWNjMWludDogaWYgcHJvdmlkZWQgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHNcbi1cdFx0ICAgb24gSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQgSEVDQzBJTlQgaW50ZXJydXB0XG4tXHRcdCAgIGxpbmUgd2lsbCBiZSB1c2VkLlxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXG4tXG4tRXhhbXBsZTpcbi1cbi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOlxuLVx0aGVjYzogY2FuQDVjMDUwMDAwIHtcbi1cdFx0Y29tcGF0aWJsZSA9IFwidGksYW0zNTE3LWhlY2NcIjtcbi1cdFx0cmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuLVx0XHQgICAgICBcdTAwM2MweDVjMDUzMDAwIDB4MTgwXHUwMDNlLFxuLVx0XHQgICAgICBcdTAwM2MweDVjMDUyMDAwIDB4MjAwXHUwMDNlO1xuLVx0XHRyZWctbmFtZXMgPSBcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiO1xuLVx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjRcdTAwM2U7XG4tXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmhlY2NfY2tcdTAwM2U7XG4tXHR9O1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuaW5kZXggNDA4MzU0OTcwNTBhNS4uMTgwMTVlNjBmZDZkNiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5AQCAtOCw3ICs4LDcgQEAgdGl0bGU6XG4gICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4tICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXHUwMDNlXG4rICAtIEhhcmluaSBUIFx1MDAzY2hhcmluaS50QGFtZC5jb21cdTAwM2VcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbkBAIC01Myw2ICs1Myw5IEBAIHByb3BlcnRpZXM6XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcbiAgICAgZGVzY3JpcHRpb246IENBTiBUWF9PTCwgVFhfVEwgYW5kIFJYIEZJRk9zIGhhdmUgRUNDIHN1cHBvcnQoQVhJIENBTilcbiBcbisgIHBoeXM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuaW5kZXggMzgxMzIzNDIzYjRjYS4uYzhjZjBiYzQ5YjY5YSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuQEAgLTkzLDkgKzkzLDkgQEBcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwiMTQ0LjgyN1wiIGN5PVwiMTU5LjE0M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCI1OS40MzY0XCIgY3k9XCIxNDIuODIzXCIgcng9XCI3LjM2NDU1XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0NC44MjdcIiBjeT1cIjEyOS4xOTZcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIi9cdTAwM2Vcbi0gICBcdTAwM2NlbGxpcHNlIGN4PVwiMTQzLjA3N1wiIGN5PVwiMTgwLjUzXCIgcng9XCIxMC44ODY2XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4gICBcdTAwM2MvZ1x1MDAzZVxuLSAgXHUwMDNjZWxsaXBzZSBjeD1cIjExMC4zODZcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjZmZjYjM1XCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuKyAgXHUwMDNjZWxsaXBzZSBjeD1cIjExMC4zODZcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjMjhhNGZmXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuKyAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0My4wNzdcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjZmZjYjM1XCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuICAgXHUwMDNjdGV4dCB4PVwiMTEwLjkwOTA3XCIgeT1cIjE3OS40MjY4OFwiIGZvbnQtc2l6ZT1cIjMuMTc1cHhcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXHUwMDNlXHUwMDNjdHNwYW4geD1cIjExMC45MDkwN1wiIHk9XCIxNzkuNDI2ODhcIiBkeT1cIjAuNjAwMDAwMDJcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlx1MDAzZUFjY2Vzc2libGVcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTEwLjkwOTA3XCIgeT1cIjE4My4zOTU2M1wiXHUwMDNlXHUwMDNjdHNwYW4gZm9udC1zaXplPVwiMy4xNzVweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHUwMDNlZm9yIFNcdTAwM2MvdHNwYW5cdTAwM2VXXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjL3RleHRcdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cIjE0My41ODY5XCIgeT1cIjE3OS41Mjc5NVwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCJcdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTQzLjU4NjlcIiB5PVwiMTc5LjUyNzk1XCIgZHk9XCIxIDAgMCAwIDAgMFwiIGZvbnQtZmFtaWx5PVwic2Fucy1zZXJpZlwiIGZvbnQtc2l6ZT1cIjIuODIyMjJweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHN0eWxlPVwiZm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWxcIlx1MDAzZUluYWNjZXNzaWJsZVx1MDAzYy90c3Bhblx1MDAzZVx1MDAzY3RzcGFuIHg9XCIxNDMuNTg2OVwiIHk9XCIxODMuMzY3ODZcIiBmb250LXNpemU9XCIzLjE3NXB4XCJcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCIzLjE3NXB4XCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjZyBmb250LXNpemU9XCIzLjE3NXB4XCJcdTAwM2VcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA5OTE0NjAwNTBkYTc0Li42YjQ5YTJjODBjZDVkIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjk1NzMsNyArMjk1NzMsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG4gRjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcbiBcbiBYSUxJTlggQ0FOIERSSVZFUlxuLU06XHRBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuK006XHRIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gTDpcdGxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmdcbiBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG5pbmRleCBlYjg1NjU0N2FlN2RmLi4xNmY4MDYwN2UxNTBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG5AQCAtMjQ2NCw3ICsyNDY0LDcgQEAgc3RydWN0IG1fY2FuX2NsYXNzZGV2ICptX2Nhbl9jbGFzc19hbGxvY2F0ZV9kZXYoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIFx0fVxuIFxuLVx0aWYgKGRldi1cdTAwM2VvZl9ub2RlIFx1MDAyNlx1MDAyNiBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LVx1MDAzZW9mX25vZGUsIFwid2FrZXVwLXNvdXJjZVwiKSlcbitcdGlmIChkZXYtXHUwMDNlb2Zfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcHJvcGVydHlfcHJlc2VudChkZXYtXHUwMDNlb2Zfbm9kZSwgXCJ3YWtldXAtc291cmNlXCIpKVxuIFx0XHRkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKGRldiwgdHJ1ZSk7XG4gXG4gXHQvKiBHZXQgVFggRklGTyBzaXplXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5pbmRleCBlYjMxZWQxZjk2NDQ5Li5kMTFhN2M4OGZjMzJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIGludCBtX2Nhbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIFx0bWNhbl9jbGFzcy1cdTAwM2VuZXQtXHUwMDNlaXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlcG1fY2xvY2tfc3VwcG9ydCA9IDE7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZXBtX3dha2Vfc291cmNlID0gMDtcbi1cdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbitcdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBNX0NBTl9DTE9DS19GUkVRX0VITDtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlaXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlb3BzID0gXHUwMDI2bV9jYW5fcGNpX29wcztcbiBcbkBAIC0xODMsOCArMTgzLDggQEAgc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1fY2FuX3BjaV9wbV9vcHMsXG4gXHRcdFx0IG1fY2FuX3BjaV9zdXNwZW5kLCBtX2Nhbl9wY2lfcmVzdW1lKTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbV9jYW5fcGNpX2lkX3RhYmxlW10gPSB7XG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbi1cdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMiksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LFxuK1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSB9LFxuK1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxuIFx0eyAgfVx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtX2Nhbl9wY2lfaWRfdGFibGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXG5pbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuQEAgLTIxMSw4ICsyMTEsMzEgQEAgc3RhdGljIGludCB0Y2FuNHg1eF93cml0ZV9maWZvKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldixcbiBcdHJldHVybiByZWdtYXBfYnVsa193cml0ZShwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfTVJBTV9TVEFSVCArIGFkZHJfb2Zmc2V0LCB2YWwsIHZhbF9jb3VudCk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3IgKnJlZywgaW50IGVuYWJsZSlcbitzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSlcbiB7XG4rXHRzdHJ1Y3QgcmVndWxhdG9yICpyZWcgPSBwcml2LVx1MDAzZXBvd2VyO1xuK1xuK1x0LypcbitcdCAqIFB1dCB0aGUgZGV2aWNlIGludG8gc2xlZXAgbW9kZSBpZiB0aGUgUlNUIHBpbiBpcyBhdmFpbGFibGUsXG4rXHQgKiBzaW5jZSBhIHdha2UtdXAgZXZlbnQsIFJTVCBwaW4gdG9nZ2xlLCBvciBwb3dlciBjeWNsZSBhcmUgdGhlIG9ubHlcbitcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxuK1x0ICogUmVkdW5kYW50IGlmIHRoZSByZWd1bGF0b3IgaXMgZXhjbHVzaXZlIHRvIHRoaXMgZGV2aWNlLCBidXQgdGhhdFxuK1x0ICogY2FuJ3QgYmUgZGV0ZXJtaW5lZCBoZXJlLlxuK1x0ICpcbitcdCAqIERhdGFzaGVldDogVENBTjQ1NTAsIHNlY3Rpb24gXCI4LjQuMyBTbGVlcCBNb2RlXCJcbitcdCAqIGh0dHBzOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RjYW40NTUwXG4rXHQgKi9cbitcdGlmIChwcml2LVx1MDAzZXJlc2V0X2dwaW8gXHUwMDI2XHUwMDI2ICFlbmFibGUpIHtcbitcdFx0aW50IHJldDtcbitcbitcdFx0cmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBUQ0FONFg1WF9DT05GSUcsXG4rXHRcdFx0XHRcdCBUQ0FONFg1WF9NT0RFX1NFTF9NQVNLLFxuK1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TTEVFUCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZXNwaS1cdTAwM2VkZXYsIFwiU2V0dGluZyBzbGVlcCBtb2RlIGZhaWxlZCAlcGVcXG5cIixcbitcdFx0XHRcdEVSUl9QVFIocmV0KSk7XG4rXHR9XG4rXG4gXHRpZiAoSVNfRVJSX09SX05VTEwocmVnKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG5AQCAtNDc2LDcgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRcdGdvdG8gb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2O1xuIFx0fVxuIFxuLVx0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDEpO1xuK1x0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwiRW5hYmxpbmcgcmVndWxhdG9yIGZhaWxlZCAlcGVcXG5cIixcbiBcdFx0XHRFUlJfUFRSKHJldCkpO1xuQEAgLTUzMSw3ICs1NTQsNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0cmV0dXJuIDA7XG4gXG4gb3V0X3Bvd2VyOlxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuK1x0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApO1xuICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6XG4gXHRtX2Nhbl9jbGFzc19mcmVlX2RldihtY2FuX2NsYXNzLVx1MDAzZW5ldCk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTU0Myw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXG4gXHRtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKFx1MDAyNnByaXYtXHUwMDNlY2Rldik7XG4gXG4tXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cdTAwM2Vwb3dlciwgMCk7XG4rXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XG4gXG4gXHRtX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LVx1MDAzZWNkZXYubmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5AQCAtNTAsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHtcbiBcdFx0UktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHtcbitcdC5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LFxuK1x0LnF1aXJrcyA9IFJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNSB8XG4rXHRcdFJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNixcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpXG4ge1xuIFx0c3dpdGNoIChtb2RlbCkge1xuQEAgLTU3LDYgKzYzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKl9fcmtjYW5mZF9nZXRfbW9kZWxfc3RyKGVudW0gcmtjYW5mZF9tb2RlbCBtb2RlbClcbiBcdFx0cmV0dXJuIFwicmszNTY4djJcIjtcbiBcdGNhc2UgUktDQU5GRF9NT0RFTF9SSzM1NjhWMzpcbiBcdFx0cmV0dXJuIFwicmszNTY4djNcIjtcbitcdGNhc2UgUktDQU5GRF9NT0RFTF9SSzM1ODg6XG4rXHRcdHJldHVybiBcInJrMzU4OFwiO1xuIFx0fVxuIFxuIFx0cmV0dXJuIFwiXHUwMDNjdW5rbm93blx1MDAzZVwiO1xuQEAgLTE0OCw2ICsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbiBcbiBcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpO1xuIFxuK1x0LyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovXG4rXHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcbitcdFx0cmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT04sIDApO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHRkY28gPSAocHJpdi1cdTAwM2VjYW4uY2xvY2suZnJlcSAvIGRidC1cdTAwM2ViaXRyYXRlKSAqIDIgLyAzO1xuIFx0dGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTtcbiBcbkBAIC04NDYsNiArODYwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmtjYW5mZF9vZl9tYXRjaFtdID0ge1xuIFx0fSwge1xuIFx0XHQuY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4djMtY2FuZmRcIixcbiBcdFx0LmRhdGEgPSBcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyxcbitcdH0sIHtcbitcdFx0LmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU4OC1jYW5mZFwiLFxuK1x0XHQuZGF0YSA9IFx1MDAyNnJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCxcbiBcdH0sIHtcbiBcdFx0Lyogc2VudGluZWwgKi9cbiBcdH0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuaW5kZXggNDc1YzA0MDllMjE1YS4uMjRlODdkYWExZGYwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuQEAgLTI4MSw3ICsyODEsMTAgQEAgcmtjYW5mZF9yeF9maWZvX2dldF9sZW4oY29uc3Qgc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbiB7XG4gXHRjb25zdCB1MzIgcmVnID0gcmtjYW5mZF9yZWFkKHByaXYsIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCk7XG4gXG4tXHRyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVCwgcmVnKTtcbitcdGlmIChwcml2LVx1MDAzZWRldnR5cGVfZGF0YS5tb2RlbCA9PSBSS0NBTkZEX01PREVMX1JLMzU4OClcbitcdFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpO1xuK1xuK1x0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4LCByZWcpO1xuIH1cbiBcbiBpbnQgcmtjYW5mZF9oYW5kbGVfcnhfaW50KHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmggYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuQEAgLTIxNCw3ICsyMTQsOCBAQFxuICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XG4tI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KVxuKyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCBHRU5NQVNLKDYsIDQpXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSlcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0ZVTExfV0FURVJNQVJLIEdFTk1BU0soMywgMSlcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0VOQUJMRSBCSVQoMClcbiBcbkBAIC0zMzEsNiArMzMyLDExIEBAXG4gICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHlcbiAgKiBhdCA4MCBNSHouXG4gICpcbisgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgZW1wdHkgRklGTyBjb25kaXRpb24uXG4rICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1c1xuKyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2VcbisgKiB0aGUgYnVzIHJlYWNoZXMgYSBzdGVhZHkgc3RhdGUuXG4rICpcbiAgKiBUbyB3b3JrYXJvdW5kIHRoaXMgcHJvYmxlbSwgY2hlY2sgZm9yIGVtcHR5IEZJRk8gd2l0aFxuICAqIHJrY2FuZmRfZmlmb19oZWFkZXJfZW1wdHkoKSBpbiBya2NhbmZkX2hhbmRsZV9yeF9pbnRfb25lKCkgYW5kIGV4aXRcbiAgKiBlYXJseS5cbkBAIC0zNDQsNiArMzUwLDggQEBcbiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlcidzIHRyYW5zbWlzc2lvbiBvZiBleHRlbmRlZCBmcmFtZXMgbWF5XG4gICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzXG4gICpcbisgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS5cbisgKlxuICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZVxuICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgnZWQgQ0FOIGZyYW1lcyBpblxuICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuXG5AQCAtNDI0LDYgKzQzMiw5IEBAXG4gICogICAgIGNhbnNlcXVlbmNlIC1ydiAtaSAxXG4gICpcbiAgKiAtIFRYIHN0YXJ2YXRpb24gYWZ0ZXIgcmVwZWF0ZWQgQnVzLU9mZlxuKyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGFcbisgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlXG4rICogICBjb250cm9sbGVyIHJlc3RhcnRlZC5cbiAgKiAgIFRvIHJlcHJvZHVjZTpcbiAgKiAgIGhvc3Q6XG4gICogICAgIHNsZWVwIDMgXHUwMDI2XHUwMDI2IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wXG5AQCAtNDM0LDYgKzQ0NSw3IEBAXG4gZW51bSBya2NhbmZkX21vZGVsIHtcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLFxuIFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXG4rXHRSS0NBTkZEX01PREVMX1JLMzU4OCA9IDB4MzU4OCxcbiB9O1xuIFxuIHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcbmluZGV4IDgyNTA4YTg2NTA5NTkuLjNiOWIyZjEwNGQ4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5AQCAtMTU2NSw3ICsxNTY1LDcgQEAgc3RhdGljIGludCBnc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXG4gXHRpZiAoaWNvdW50IFx1MDAzZSB0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2aW50Zi1cdTAwM2VkZXYsXG4tXHRcdFx0XCJEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcXG5cIixcbitcdFx0XHRcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcblwiLFxuIFx0XHRcdHR5cGVfbWF4KHBhcmVudC1cdTAwM2VjaGFubmVsX2NudCkpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG5pbmRleCBlODgyMjUwMTgwZWY2Li45ZTJlMjVkMDI0NzE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG5AQCAtMzMsNiArMzMsNyBAQCBNT0RVTEVfQUxJQVNfUlROTF9MSU5LKERSVl9OQU1FKTtcbiBcbiBzdHJ1Y3QgdnhjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSBfX3JjdVx0KnBlZXI7XG4rXHRuZXRkZXZpY2VfdHJhY2tlciBwZWVyX3RyYWNrZXI7XG4gfTtcbiBcbiBzdGF0aWMgbmV0ZGV2X3R4X3QgdnhjYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqb3NrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC0yNjgsOSArMjY5LDExIEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogY3Jvc3MgbGluayB0aGUgZGV2aWNlIHBhaXIgKi9cbiBcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXHUwMDNlcGVlciwgcGVlcik7XG4rXHRuZXRkZXZfaG9sZChwZWVyLCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocHJpdi1cdTAwM2VwZWVyLCBkZXYpO1xuK1x0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yODEsMjQgKzI4NCwyNSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4ge1xuK1x0bmV0ZGV2aWNlX3RyYWNrZXIgKnBlZXJfdHJhY2tlcjtcbiBcdHN0cnVjdCB2eGNhbl9wcml2ICpwcml2O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKnBlZXI7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHBlZXIgPSBydG5sX2RlcmVmZXJlbmNlKHByaXYtXHUwMDNlcGVlcik7XG4rXHRwZWVyX3RyYWNrZXIgPSBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlcjtcbitcdHBlZXIgPSB1bnJjdV9wb2ludGVyKHhjaGcoXHUwMDI2cHJpdi1cdTAwM2VwZWVyLCBOVUxMKSk7XG4rXHRpZiAoIXBlZXIpXG4rXHRcdHJldHVybjtcbiBcbi1cdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxuLVx0ICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkXG4tXHQgKiBub3QgYmVpbmcgZnJlZWQgYmVmb3JlIG9uZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuLVx0ICovXG4tXHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuIFxuLVx0aWYgKHBlZXIpIHtcbi1cdFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuLVx0XHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xuLVx0fVxuK1x0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuK1x0ZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuK1x0aWYgKGRldilcbitcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVfbmV0KGRldl9uZXQoZGV2KSwgcGVlciwgaGVhZCk7XG4rXG4rXHRuZXRkZXZfcHV0KHBlZXIsIHBlZXJfdHJhY2tlcik7XG4rXHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhjYW5fcG9saWN5W1ZYQ0FOX0lORk9fTUFYICsgMV0gPSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My45NzAyOTYyNzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MzY0NjUxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIFJldmlldzogQ0FOIERyaXZlciBVcGRhdGVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHNldCBvZiB1cGRhdGVzIGFjcm9zcyB2YXJpb3VzIENBTiBkcml2ZXJzLiBOb3RoaW5nIGhlcmUgc2NyZWFtcyBcImNyaXRpY2FsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHlcIiBhdCBmaXJzdCBnbGFuY2UsIGJ1dCBsZXQncyBkaXZlIGRlZXBlciBhbmQgZW5zdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHN1YnRsZS5cblxuRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyB0byB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sYCwgYHRpLGFtMzUxNy1oZWNjLnlhbWxgLCBhbmQgYHhpbGlueCxjYW4ueWFtbGAuIFRoZXNlIGFyZSBjcml0aWNhbCBmb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgYnV0IEkgZG9uJ3QgYW50aWNpcGF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGluIHRoZXNlIG1vZGlmaWNhdGlvbnMgYWxvbmUuIFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZXMgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuIERvY3VtZW50YXRpb24gaXMgYWxzbyB1cGRhdGVkIChgZnNtX3R4dF9idWZmZXJfdXNlci5zdmdgIGFuZCBgTUFJTlRBSU5FUlNgKSwgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2VzLiBJbiBgbV9jYW4uY2AsIGl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgdXBkYXRlIHRvIGhvdyB0aGUgXCJ3YWtldXAtc291cmNlXCIgcHJvcGVydHkgaXMgcmVhZCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggc2hvdWxkbid0IGludHJvZHVjZSBhbnkgbmV3IHNlY3VyaXR5IGNvbmNlcm5zLiBTaW1pbGFybHksIHRoZSBgbV9jYW5fcGNpLmNgIGNoYW5nZSBqdXN0IGZpeGVzIHRoZSBjbG9jayBmcmVxdWVuY3ksIG1ha2luZyBzdXJlIHRoZSBkZXZpY2UgZ2V0cyB0aGUgY29ycmVjdCBjbG9jayByYXRlLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBjaGFuZ2UgaXMgaW4gYHZ4Y2FuLmNgLiBIZXJlLCB3ZSBzZWUgYSBjb3JyZWN0aW9uIHVzaW5nIGBuZXRkZXZpY2VfdHJhY2tlcmAgdG8gaGFuZGxlIHJlZmNvdW50aW5nIG9uIHRoZSBwZWVyIGRldmljZXMgaW4gdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZS4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgaXMgYSBzb2xpZCBmaXggYW5kIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgd2Ugd2FudCB0byBzZWUuIEdpdmVuIHRoZSBuYXR1cmUgb2YgYHZ4Y2FuLmNgLCBLQVNBTiBzaG91bGQgYmUgYWJsZSB0byBjYXRjaCB0aGUgcmVmY291bnQgZXJyb3JzLCB3aGljaCBzaW1wbGlmaWVzIHRoZSByZXZpZXcuXG5cblRoZSBgdGNhbjR4NXgtY29yZS5jYCB1cGRhdGUgc2VlbXMgZm9jdXNlZCBvbiBlbmFibGluZyBzbGVlcCBtb2RlIGluIHRoZSBoYXJkd2FyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGJ1Z3MgdGhhdCByZXF1aXJlIEtBU0FOIHRvIGNhdGNoLCBidXQgaXQncyB1bmxpa2VseSB0byBiZSBzZWN1cml0eS1yZWxldmFudC4gSXQncyBpbXBvcnRhbnQgZm9yIHBvd2VyIG1hbmFnZW1lbnQsIGJ1dCB0aGUgY29yZSBmdW5jdGlvbiBpcyBqdXN0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBoYXJkd2FyZSBmZWF0dXJlcy5cblxuVGhlIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgY2hhbmdlcyBhZGQgc3VwcG9ydCBmb3IgdGhlIFJLMzU4OCBTT0MuIFRoaXMgdXN1YWxseSByZXF1aXJlcyB2ZXJ5IGNhcmVmdWwgcmV2aWV3LiBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2VzIHNpbXBseSBpbnZvbHZlIHNlbGVjdGluZyB0aGUgY29ycmVjdCByZWdpc3RlciBmaWVsZHMgYmFzZWQgb24gdGhlIGRldmljZSBtb2RlbC4gSXQgYXBwZWFycyB0aGF0IHRoZSB1cGRhdGUgaXMgZG9uZSBpbiBhbiBleHBsaWNpdCwgc2FmZSB3YXkuXG5cbkZpbmFsbHksIHdlIGhhdmUgYSB0eXBvIGZpeCBpbiBgZ3NfdXNiLmNgLlxuXG5CYXNlZCBvbiBteSBhbmFseXNpcywgdGhlc2UgY2hhbmdlcyBhcmUgYSBtaXggb2YgZGV2aWNlIHRyZWUgdXBkYXRlcywgaGFyZHdhcmUtc3BlY2lmaWMgZml4ZXMsIGFuZCBidWcgZml4ZXMgZm9yIHRoZSBkcml2ZXJzLiBNb3N0IGltcG9ydGFudGx5LCBub25lIG9mIHRoZXNlIGNoYW5nZXMgc2VlbSB0byBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UuIFRoZSBgdnhjYW4uY2AgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSByZWZjb3VudGluZy9VQUYsIGEgY2xhc3NpYyBwcm9ibGVtIHRoYXQncyBhbHJlYWR5IHdlbGwtdW5kZXJzdG9vZCBhbmQgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTi5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgZG9lcyAqbm90KiB3YXJyYW50IGEgYE5lZWRzS01TQU5gIGxhYmVsLiBUaGUgZm9jdXMgaXMgbW9yZSBvbiBzdGFiaWxpdHkgYW5kIGhhcmR3YXJlIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0OTgsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ4OjA4LjQwNjc2NTIwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGRldmljZSB0cmVlIGJpbmRpbmcgdXBkYXRlcywgaGFyZHdhcmUgZHJpdmVyIGZpeGVzIChzbGVlcCBtb2RlIGhhbmRsaW5nIGluIHRjYW40eDV4LCBSSzM1ODggc3VwcG9ydCBpbiByb2NrY2hpcF9jYW5mZCwgY2xvY2sgZnJlcXVlbmN5IGluIG1fY2FuX3BjaSksIGFuZCBhIHJlZmNvdW50aW5nL1VBRiBmaXggaW4gdnhjYW4uYyB1c2luZyBuZXRkZXZpY2VfdHJhY2tlci4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBtb2RpZnkgYm91bmRzIGNoZWNraW5nIGluIGEgd2F5IHRoYXQgZXhwb3NlcyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgc3RhdGUuIFRoZSB2eGNhbi5jIGZpeCBhZGRyZXNzZXMgYSB1c2UtYWZ0ZXItZnJlZS9yZWZjb3VudGluZyBpc3N1ZSB3aGljaCBpcyBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 23:43:40 +0000 UTC FinishedAt: 2026-08-17 23:48:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_VXCAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_VXCAN" ], "series_id": "ef095d48-7bd1-4b87-aeaa-156c979669cc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxcan_newlink", "vxcan_dellink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9WWENBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4Y2FuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBkZXZpY2UgdHJlZSBiaW5kaW5nIHVwZGF0ZXMsIGhhcmR3YXJlIGRyaXZlciBmaXhlcyAoc2xlZXAgbW9kZSBoYW5kbGluZyBpbiB0Y2FuNHg1eCwgUkszNTg4IHN1cHBvcnQgaW4gcm9ja2NoaXBfY2FuZmQsIGNsb2NrIGZyZXF1ZW5jeSBpbiBtX2Nhbl9wY2kpLCBhbmQgYSByZWZjb3VudGluZy9VQUYgZml4IGluIHZ4Y2FuLmMgdXNpbmcgbmV0ZGV2aWNlX3RyYWNrZXIuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IGV4cG9zZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIHN0YXRlLiBUaGUgdnhjYW4uYyBmaXggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUvcmVmY291bnRpbmcgaXNzdWUgd2hpY2ggaXMgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5pbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuQEAgLTE2LDcgJiM0MzsxNiw5IEBAIGFsbE9mOlxuIHByb3BlcnRpZXM6XG4gICBjb21wYXRpYmxlOlxuICAgICBvbmVPZjpcbi0gICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxuJiM0MzsgICAgICAtIGVudW06XG4mIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4mIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU4OC1jYW5mZFxuICAgICAgIC0gaXRlbXM6XG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43ODc0ZTllNDkyMjQ0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXG5AQCAtMCwwICYjNDM7MSw2NCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbiYjNDM7JVlBTUwgMS4yXG4mIzQzOy0tLVxuJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcbiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4mIzQzO1xuJiM0Mzt0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEVkdWFyZCBCb3N0aW5hIFx1MDAzY2VnYm9zdGluYUBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiB0aSxhbTM1MTctaGVjY1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogM1xuJiM0MztcbiYjNDM7ICByZWctbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogaGVjY1xuJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjLXJhbVxuJiM0MzsgICAgICAtIGNvbnN0OiBtYnhcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHRpLHVzZS1oZWNjMWludDpcbiYjNDM7ICAgIHR5cGU6IGJvb2xlYW5cbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlXG4mIzQzOyAgICAgIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0LCB0aGUgSEVDQzBJTlQgaW50ZXJydXB0IGxpbmVcbiYjNDM7ICAgICAgd2lsbCBiZSB1c2VkLlxuJiM0MzsgICAgZGVmYXVsdDogZmFsc2VcbiYjNDM7XG4mIzQzOyAgeGNlaXZlci1zdXBwbHk6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gcmVnLW5hbWVzXG4mIzQzOyAgLSBpbnRlcnJ1cHRzXG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgY2FuQDVjMDUwMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7dGksYW0zNTE3LWhlY2NcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4mIzQzOyAgICAgICAgICAgICAgXHUwMDNjMHg1YzA1MjAwMCAweDIwMFx1MDAzZTtcbiYjNDM7ICAgICAgICByZWctbmFtZXMgPSBcJiMzNDtoZWNjXCYjMzQ7LCBcJiMzNDtoZWNjLXJhbVwmIzM0OywgXCYjMzQ7bWJ4XCYjMzQ7O1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbiYjNDM7ICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZoZWNjX2NrXHUwMDNlO1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSwzMiAmIzQzOzAsMCBAQFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxuLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLVxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcbi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLlxuLVxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XG4tLSBjb21wYXRpYmxlOiBcJiMzNDt0aSxhbTM1MTctaGVjY1wmIzM0O1xuLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJiMzOTtoZWNjJiMzOTssICYjMzk7aGVjYy1yYW0mIzM5O1xuLSAgICAgICBhbmQgJiMzOTttYngmIzM5O1xuLS0gcmVnLW5hbWVzIDpcJiMzNDtoZWNjXCYjMzQ7LCBcJiMzNDtoZWNjLXJhbVwmIzM0OywgXCYjMzQ7bWJ4XCYjMzQ7XG4tLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzXG4tLSBjbG9ja3M6IGNsb2NrIHBoYW5kbGVzIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHRpLHVzZS1oZWNjMWludDogaWYgcHJvdmlkZWQgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHNcbi1cdFx0ICAgb24gSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQgSEVDQzBJTlQgaW50ZXJydXB0XG4tXHRcdCAgIGxpbmUgd2lsbCBiZSB1c2VkLlxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXG4tXG4tRXhhbXBsZTpcbi1cbi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOlxuLVx0aGVjYzogY2FuQDVjMDUwMDAwIHtcbi1cdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3RpLGFtMzUxNy1oZWNjXCYjMzQ7O1xuLVx0XHRyZWcgPSBcdTAwM2MweDVjMDUwMDAwIDB4ODBcdTAwM2UsXG4tXHRcdCAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4tXHRcdCAgICAgIFx1MDAzYzB4NWMwNTIwMDAgMHgyMDBcdTAwM2U7XG4tXHRcdHJlZy1uYW1lcyA9IFwmIzM0O2hlY2NcJiMzNDssIFwmIzM0O2hlY2MtcmFtXCYjMzQ7LCBcJiMzNDttYnhcJiMzNDs7XG4tXHRcdGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbi1cdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2aGVjY19ja1x1MDAzZTtcbi1cdH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5pbmRleCA0MDgzNTQ5NzA1MGE1Li4xODAxNWU2MGZkNmQ2IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbkBAIC04LDcgJiM0Mzs4LDcgQEAgdGl0bGU6XG4gICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4tICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXHUwMDNlXG4mIzQzOyAgLSBIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG5AQCAtNTMsNiAmIzQzOzUzLDkgQEAgcHJvcGVydGllczpcbiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuICAgICBkZXNjcmlwdGlvbjogQ0FOIFRYX09MLCBUWF9UTCBhbmQgUlggRklGT3MgaGF2ZSBFQ0Mgc3VwcG9ydChBWEkgQ0FOKVxuIFxuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG5pbmRleCAzODEzMjM0MjNiNGNhLi5jOGNmMGJjNDliNjlhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG5AQCAtOTMsOSAmIzQzOzkzLDkgQEBcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzE0NC44MjdcJiMzNDsgY3k9XCYjMzQ7MTU5LjE0M1wmIzM0OyByeD1cJiMzNDsxMC44ODY2XCYjMzQ7IHJ5PVwmIzM0OzQuMzkzMDhcJiMzNDsvXHUwMDNlXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cJiMzNDs1OS40MzY0XCYjMzQ7IGN5PVwmIzM0OzE0Mi44MjNcJiMzNDsgcng9XCYjMzQ7Ny4zNjQ1NVwmIzM0OyByeT1cJiMzNDs0LjM5MzA4XCYjMzQ7L1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCYjMzQ7MTQ0LjgyN1wmIzM0OyBjeT1cJiMzNDsxMjkuMTk2XCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0Oy9cdTAwM2Vcbi0gICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzE0My4wNzdcJiMzNDsgY3k9XCYjMzQ7MTgwLjUzXCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0Oy9cdTAwM2VcbiAgIFx1MDAzYy9nXHUwMDNlXG4tICBcdTAwM2NlbGxpcHNlIGN4PVwmIzM0OzExMC4zODZcJiMzNDsgY3k9XCYjMzQ7MTgwLjUzXCYjMzQ7IHJ4PVwmIzM0OzEwLjg4NjZcJiMzNDsgcnk9XCYjMzQ7NC4zOTMwOFwmIzM0OyBmaWxsPVwmIzM0OyNmZmNiMzVcJiMzNDsgc3Ryb2tlPVwmIzM0OyMwMDBcJiMzNDsgc3Ryb2tlLWxpbmVjYXA9XCYjMzQ7c3F1YXJlXCYjMzQ7IHN0cm9rZS13aWR0aD1cJiMzNDsuNDk5OTk5XCYjMzQ7L1x1MDAzZVxuJiM0MzsgIFx1MDAzY2VsbGlwc2UgY3g9XCYjMzQ7MTEwLjM4NlwmIzM0OyBjeT1cJiMzNDsxODAuNTNcJiMzNDsgcng9XCYjMzQ7MTAuODg2NlwmIzM0OyByeT1cJiMzNDs0LjM5MzA4XCYjMzQ7IGZpbGw9XCYjMzQ7IzI4YTRmZlwmIzM0OyBzdHJva2U9XCYjMzQ7IzAwMFwmIzM0OyBzdHJva2UtbGluZWNhcD1cJiMzNDtzcXVhcmVcJiMzNDsgc3Ryb2tlLXdpZHRoPVwmIzM0Oy40OTk5OTlcJiMzNDsvXHUwMDNlXG4mIzQzOyAgXHUwMDNjZWxsaXBzZSBjeD1cJiMzNDsxNDMuMDc3XCYjMzQ7IGN5PVwmIzM0OzE4MC41M1wmIzM0OyByeD1cJiMzNDsxMC44ODY2XCYjMzQ7IHJ5PVwmIzM0OzQuMzkzMDhcJiMzNDsgZmlsbD1cJiMzNDsjZmZjYjM1XCYjMzQ7IHN0cm9rZT1cJiMzNDsjMDAwXCYjMzQ7IHN0cm9rZS1saW5lY2FwPVwmIzM0O3NxdWFyZVwmIzM0OyBzdHJva2Utd2lkdGg9XCYjMzQ7LjQ5OTk5OVwmIzM0Oy9cdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxNzkuNDI2ODhcJiMzNDsgZm9udC1zaXplPVwmIzM0OzMuMTc1cHhcJiMzNDsgeG1sOnNwYWNlPVwmIzM0O3ByZXNlcnZlXCYjMzQ7XHUwMDNlXHUwMDNjdHNwYW4geD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxNzkuNDI2ODhcJiMzNDsgZHk9XCYjMzQ7MC42MDAwMDAwMlwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2VBY2Nlc3NpYmxlXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjdHNwYW4geD1cJiMzNDsxMTAuOTA5MDdcJiMzNDsgeT1cJiMzNDsxODMuMzk1NjNcJiMzNDtcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjdGV4dCB4PVwmIzM0OzE0My41ODY5XCYjMzQ7IHk9XCYjMzQ7MTc5LjUyNzk1XCYjMzQ7IHhtbDpzcGFjZT1cJiMzNDtwcmVzZXJ2ZVwmIzM0O1x1MDAzZVx1MDAzY3RzcGFuIHg9XCYjMzQ7MTQzLjU4NjlcJiMzNDsgeT1cJiMzNDsxNzkuNTI3OTVcJiMzNDsgZHk9XCYjMzQ7MSAwIDAgMCAwIDBcJiMzNDsgZm9udC1mYW1pbHk9XCYjMzQ7c2Fucy1zZXJpZlwmIzM0OyBmb250LXNpemU9XCYjMzQ7Mi44MjIyMnB4XCYjMzQ7IHRleHQtYWxpZ249XCYjMzQ7Y2VudGVyXCYjMzQ7IHRleHQtYW5jaG9yPVwmIzM0O21pZGRsZVwmIzM0OyBzdHlsZT1cJiMzNDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbFwmIzM0O1x1MDAzZUluYWNjZXNzaWJsZVx1MDAzYy90c3Bhblx1MDAzZVx1MDAzY3RzcGFuIHg9XCYjMzQ7MTQzLjU4NjlcJiMzNDsgeT1cJiMzNDsxODMuMzY3ODZcJiMzNDsgZm9udC1zaXplPVwmIzM0OzMuMTc1cHhcJiMzNDtcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0OyB0ZXh0LWFsaWduPVwmIzM0O2NlbnRlclwmIzM0OyB0ZXh0LWFuY2hvcj1cJiMzNDttaWRkbGVcJiMzNDtcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjZyBmb250LXNpemU9XCYjMzQ7My4xNzVweFwmIzM0O1x1MDAzZVxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDk5MTQ2MDA1MGRhNzQuLjZiNDlhMmM4MGNkNWQgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0yOTU3Myw3ICYjNDM7Mjk1NzMsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG4gRjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcbiBcbiBYSUxJTlggQ0FOIERSSVZFUlxuLU06XHRBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuJiM0MztNOlx0SGFyaW5pIFQgXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVx1MDAzZVxuIEw6XHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXG4gUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuQEAgLTI0NjQsNyAmIzQzOzI0NjQsNyBAQCBzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKm1fY2FuX2NsYXNzX2FsbG9jYXRlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gXHR9XG4gXG4tXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7d2FrZXVwLXNvdXJjZVwmIzM0OykpXG4mIzQzO1x0aWYgKGRldi1cdTAwM2VvZl9ub2RlIFx1MDAyNlx1MDAyNiBvZl9wcm9wZXJ0eV9wcmVzZW50KGRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDt3YWtldXAtc291cmNlXCYjMzQ7KSlcbiBcdFx0ZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpO1xuIFxuIFx0LyogR2V0IFRYIEZJRk8gc2l6ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuaW5kZXggZWIzMWVkMWY5NjQ0OS4uZDExYTdjODhmYzMyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5AQCAtMTI2LDcgJiM0MzsxMjYsNyBAQCBzdGF0aWMgaW50IG1fY2FuX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gXHRtY2FuX2NsYXNzLVx1MDAzZW5ldC1cdTAwM2VpcnEgPSBwY2lfaXJxX3ZlY3RvcihwY2ksIDApO1xuIFx0bWNhbl9jbGFzcy1cdTAwM2VwbV9jbG9ja19zdXBwb3J0ID0gMTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlcG1fd2FrZV9zb3VyY2UgPSAwO1xuLVx0bWNhbl9jbGFzcy1cdTAwM2VjYW4uY2xvY2suZnJlcSA9IGlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuJiM0MztcdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBNX0NBTl9DTE9DS19GUkVRX0VITDtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlaXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlb3BzID0gXHUwMDI2bV9jYW5fcGNpX29wcztcbiBcbkBAIC0xODMsOCAmIzQzOzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxuIFx0XHRcdCBtX2Nhbl9wY2lfc3VzcGVuZCwgbV9jYW5fcGNpX3Jlc3VtZSk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xuLVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzIpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbiYjNDM7XHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpIH0sXG4mIzQzO1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxuIFx0eyAgfVx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtX2Nhbl9wY2lfaWRfdGFibGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXG5pbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuQEAgLTIxMSw4ICYjNDM7MjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXG4gXHRyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi1cdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgJiM0MzsgYWRkcl9vZmZzZXQsIHZhbCwgdmFsX2NvdW50KTtcbiB9XG4gXG4tc3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHJlZ3VsYXRvciAqcmVnLCBpbnQgZW5hYmxlKVxuJiM0MztzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSlcbiB7XG4mIzQzO1x0c3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi1cdTAwM2Vwb3dlcjtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLFxuJiM0MztcdCAqIHNpbmNlIGEgd2FrZS11cCBldmVudCwgUlNUIHBpbiB0b2dnbGUsIG9yIHBvd2VyIGN5Y2xlIGFyZSB0aGUgb25seVxuJiM0MztcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxuJiM0MztcdCAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXRcbiYjNDM7XHQgKiBjYW4mIzM5O3QgYmUgZGV0ZXJtaW5lZCBoZXJlLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiBcJiMzNDs4LjQuMyBTbGVlcCBNb2RlXCYjMzQ7XG4mIzQzO1x0ICogaHR0cHM6Ly93d3cudGkuY29tL2xpdC9ncG4vdGNhbjQ1NTBcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvIFx1MDAyNlx1MDAyNiAhZW5hYmxlKSB7XG4mIzQzO1x0XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfQ09ORklHLFxuJiM0MztcdFx0XHRcdFx0IFRDQU40WDVYX01PREVfU0VMX01BU0ssXG4mIzQzO1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TTEVFUCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlc3BpLVx1MDAzZWRldiwgXCYjMzQ7U2V0dGluZyBzbGVlcCBtb2RlIGZhaWxlZCAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0RVJSX1BUUihyZXQpKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQ3Niw3ICYjNDM7NDk5LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdFx0Z290byBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY7XG4gXHR9XG4gXG4tXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cdTAwM2Vwb3dlciwgMSk7XG4mIzQzO1x0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0VuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXFxuXCYjMzQ7LFxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG5AQCAtNTMxLDcgJiM0Mzs1NTQsNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0cmV0dXJuIDA7XG4gXG4gb3V0X3Bvd2VyOlxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuJiM0MztcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcbiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OlxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy1cdTAwM2VuZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC01NDMsNyAmIzQzOzU2Niw3IEBAIHN0YXRpYyB2b2lkIHRjYW40eDV4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcbiBcdG1fY2FuX2NsYXNzX3VucmVnaXN0ZXIoXHUwMDI2cHJpdi1cdTAwM2VjZGV2KTtcbiBcbi1cdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAwKTtcbiYjNDM7XHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XG4gXG4gXHRtX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LVx1MDAzZWNkZXYubmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5AQCAtNTAsNiAmIzQzOzUwLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMgPSB7XG4gXHRcdFJLQ0FORkRfUVVJUktfQ0FORkRfQlJPS0VOLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTg4ID0ge1xuJiM0MztcdC5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LFxuJiM0MztcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxuJiM0MztcdFx0UktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV82LFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIHtcbiBcdHN3aXRjaCAobW9kZWwpIHtcbkBAIC01Nyw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIFx0XHRyZXR1cm4gXCYjMzQ7cmszNTY4djJcJiMzNDs7XG4gXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTY4VjM6XG4gXHRcdHJldHVybiBcJiMzNDtyazM1Njh2M1wmIzM0OztcbiYjNDM7XHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OlxuJiM0MztcdFx0cmV0dXJuIFwmIzM0O3JrMzU4OFwmIzM0OztcbiBcdH1cbiBcbiBcdHJldHVybiBcJiMzNDtcdTAwM2N1bmtub3duXHUwMDNlXCYjMzQ7O1xuQEAgLTE0OCw2ICYjNDM7MTU2LDEyIEBAIHN0YXRpYyBpbnQgcmtjYW5mZF9zZXRfYml0dGltaW5nKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4gXG4gXHRya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX0ZEX0RBVEFfQklUVElNSU5HLCByZWdfZGJ0KTtcbiBcbiYjNDM7XHQvKiBSSzM1ODggQ0FOLUZEIEJSUyB3b3JrcyB3aXRoIFREQyBkaXNhYmxlZC4gKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcbiYjNDM7XHRcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR0ZGNvID0gKHByaXYtXHUwMDNlY2FuLmNsb2NrLmZyZXEgLyBkYnQtXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcbiBcdHRkY28gPSBtaW4odGRjbywgRklFTERfTUFYKFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTl9URENfT0ZGU0VUKSk7XG4gXG5AQCAtODQ2LDYgJiM0Mzs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7XG4gXHR9LCB7XG4gXHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4djMtY2FuZmRcJiMzNDssXG4gXHRcdC5kYXRhID0gXHUwMDI2cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsXG4mIzQzO1x0fSwge1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1ODgtY2FuZmRcJiMzNDssXG4mIzQzO1x0XHQuZGF0YSA9IFx1MDAyNnJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCxcbiBcdH0sIHtcbiBcdFx0Lyogc2VudGluZWwgKi9cbiBcdH0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuaW5kZXggNDc1YzA0MDllMjE1YS4uMjRlODdkYWExZGYwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuQEAgLTI4MSw3ICYjNDM7MjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4ge1xuIFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xuIFxuLVx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KVxuJiM0MztcdFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjgsIHJlZyk7XG4gfVxuIFxuIGludCBya2NhbmZkX2hhbmRsZV9yeF9pbnQoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG5pbmRleCA5MzEzMWM3ZDdmNTRkLi45NWJlYTliZmQ4YTJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG5AQCAtMjE0LDcgJiM0MzsyMTQsOCBAQFxuICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XG4tI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KVxuJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KVxuJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1ODggR0VOTUFTSyg3LCA1KVxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRlVMTF9XQVRFUk1BUksgR0VOTUFTSygzLCAxKVxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuQEAgLTMzMSw2ICYjNDM7MzMyLDExIEBAXG4gICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHlcbiAgKiBhdCA4MCBNSHouXG4gICpcbiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLlxuJiM0MzsgKiBJbiB0aGF0IHNldHVwIHJ4X2ZpZm9fZW1wdHlfZXJyb3JzIGluY3JlbWVudHMgd2hlbiB0aGUgYnVzXG4mIzQzOyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2VcbiYjNDM7ICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLlxuJiM0MzsgKlxuICAqIFRvIHdvcmthcm91bmQgdGhpcyBwcm9ibGVtLCBjaGVjayBmb3IgZW1wdHkgRklGTyB3aXRoXG4gICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdFxuICAqIGVhcmx5LlxuQEAgLTM0NCw2ICYjNDM7MzUwLDggQEBcbiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlciYjMzk7cyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heVxuICAqIGludGVybWl0dGVudGx5IGNoYW5nZSBpbnRvIHN0YW5kYXJkIGZyYW1lc1xuICAqXG4mIzQzOyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLlxuJiM0MzsgKlxuICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZVxuICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgmIzM5O2VkIENBTiBmcmFtZXMgaW5cbiAgKiBya2NhbmZkX3J4c3R4X2ZpbHRlcigpLlxuQEAgLTQyNCw2ICYjNDM7NDMyLDkgQEBcbiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDFcbiAgKlxuICAqIC0gVFggc3RhcnZhdGlvbiBhZnRlciByZXBlYXRlZCBCdXMtT2ZmXG4mIzQzOyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGFcbiYjNDM7ICogICAxMC1jeWNsZSBCdXMtT2ZmIHJlY292ZXJ5IHRlc3QsIDkgY3ljbGVzIGZhaWxlZCB0byBzZW5kIGFmdGVyIHRoZVxuJiM0MzsgKiAgIGNvbnRyb2xsZXIgcmVzdGFydGVkLlxuICAqICAgVG8gcmVwcm9kdWNlOlxuICAqICAgaG9zdDpcbiAgKiAgICAgc2xlZXAgMyBcdTAwMjZcdTAwMjYgY2FuZ2VuIGNhbjAgLUkyIC1MaSAtRGkgLXAxMCAtZyAwLjBcbkBAIC00MzQsNiAmIzQzOzQ0NSw3IEBAXG4gZW51bSBya2NhbmZkX21vZGVsIHtcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLFxuIFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXG4mIzQzO1x0UktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsXG4gfTtcbiBcbiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuQEAgLTE1NjUsNyAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IGdzX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcbiBcdGlmIChpY291bnQgXHUwMDNlIHR5cGVfbWF4KHBhcmVudC1cdTAwM2VjaGFubmVsX2NudCkpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZpbnRmLVx1MDAzZWRldixcbi1cdFx0XHRcJiMzNDtEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFwmIzM0O0RyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcblwmIzM0OyxcbiBcdFx0XHR0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuQEAgLTMzLDYgJiM0MzszMyw3IEBAIE1PRFVMRV9BTElBU19SVE5MX0xJTksoRFJWX05BTUUpO1xuIFxuIHN0cnVjdCB2eGNhbl9wcml2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1XHQqcGVlcjtcbiYjNDM7XHRuZXRkZXZpY2VfdHJhY2tlciBwZWVyX3RyYWNrZXI7XG4gfTtcbiBcbiBzdGF0aWMgbmV0ZGV2X3R4X3QgdnhjYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqb3NrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC0yNjgsOSAmIzQzOzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGNyb3NzIGxpbmsgdGhlIGRldmljZSBwYWlyICovXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIHBlZXIpO1xuJiM0MztcdG5ldGRldl9ob2xkKHBlZXIsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIGRldik7XG4mIzQzO1x0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yODEsMjQgJiM0MzsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIHtcbiYjNDM7XHRuZXRkZXZpY2VfdHJhY2tlciAqcGVlcl90cmFja2VyO1xuIFx0c3RydWN0IHZ4Y2FuX3ByaXYgKnByaXY7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0cGVlciA9IHJ0bmxfZGVyZWZlcmVuY2UocHJpdi1cdTAwM2VwZWVyKTtcbiYjNDM7XHRwZWVyX3RyYWNrZXIgPSBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlcjtcbiYjNDM7XHRwZWVyID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuJiM0MztcdGlmICghcGVlcilcbiYjNDM7XHRcdHJldHVybjtcbiBcbi1cdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxuLVx0ICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkXG4tXHQgKiBub3QgYmVpbmcgZnJlZWQgYmVmb3JlIG9uZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuLVx0ICovXG4tXHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuIFxuLVx0aWYgKHBlZXIpIHtcbi1cdFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuLVx0XHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xuLVx0fVxuJiM0MztcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbiYjNDM7XHRkZXYgPSB1bnJjdV9wb2ludGVyKHhjaGcoXHUwMDI2cHJpdi1cdTAwM2VwZWVyLCBOVUxMKSk7XG4mIzQzO1x0aWYgKGRldilcbiYjNDM7XHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xuJiM0MztcbiYjNDM7XHRuZXRkZXZfcHV0KHBlZXIsIHBlZXJfdHJhY2tlcik7XG4mIzQzO1x0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCAmIzQzOyAxXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX1ZYQ0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhjYW5fbmV3bGluayYjMzQ7LAogICAgJiMzNDt2eGNhbl9kZWxsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwKaW5kZXggYTA3N2MwMzMwMDEzNy4uODFlMmI2ZGZlYjAyMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sCkBAIC0xNiw3ICYjNDM7MTYsOSBAQCBhbGxPZjoKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CiAgICAgb25lT2Y6Ci0gICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZAomIzQzOyAgICAgIC0gZW51bToKJiM0MzsgICAgICAgICAgLSByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZAomIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU4OC1jYW5mZAogICAgICAgLSBpdGVtczoKICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2My1jYW5mZAogICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43ODc0ZTllNDkyMjQ0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbApAQCAtMCwwICYjNDM7MSw2NCBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBUZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQykKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gRWR1YXJkIEJvc3RpbmEgJmx0O2VnYm9zdGluYUBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtICRyZWY6IGNhbi1jb250cm9sbGVyLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiB0aSxhbTM1MTctaGVjYwomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMwomIzQzOwomIzQzOyAgcmVnLW5hbWVzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjCiYjNDM7ICAgICAgLSBjb25zdDogaGVjYy1yYW0KJiM0MzsgICAgICAtIGNvbnN0OiBtYngKJiM0MzsKJiM0MzsgIGludGVycnVwdHM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICB0aSx1c2UtaGVjYzFpbnQ6CiYjNDM7ICAgIHR5cGU6IGJvb2xlYW4KJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgSWYgcHJvdmlkZWQsIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzIG9uIHRoZQomIzQzOyAgICAgIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0LCB0aGUgSEVDQzBJTlQgaW50ZXJydXB0IGxpbmUKJiM0MzsgICAgICB3aWxsIGJlIHVzZWQuCiYjNDM7ICAgIGRlZmF1bHQ6IGZhbHNlCiYjNDM7CiYjNDM7ICB4Y2VpdmVyLXN1cHBseToKJiM0MzsgICAgZGVzY3JpcHRpb246IFJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyLgomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSByZWctbmFtZXMKJiM0MzsgIC0gaW50ZXJydXB0cwomIzQzOyAgLSBjbG9ja3MKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgY2FuQDVjMDUwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDs7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MHg1YzA1MDAwMCAweDgwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDVjMDUzMDAwIDB4MTgwJmd0OywKJiM0MzsgICAgICAgICAgICAgICZsdDsweDVjMDUyMDAwIDB4MjAwJmd0OzsKJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9ICYjMzQ7aGVjYyYjMzQ7LCAmIzM0O2hlY2MtcmFtJiMzNDssICYjMzQ7bWJ4JiMzNDs7CiYjNDM7ICAgICAgICBpbnRlcnJ1cHRzID0gJmx0OzI0Jmd0OzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2hlY2NfY2smZ3Q7OwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmMGE3Y2ZlMzI5My4uMDAwMDAwMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDMyICYjNDM7MCwwIEBACi1UZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQykKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24sIHdoYXQgdGhlIGRldmljZSBub2RlCi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLgotCi1SZXF1aXJlZCBwcm9wZXJ0aWVzOgotLSBjb21wYXRpYmxlOiAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDsKLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJiMzOTtoZWNjJiMzOTssICYjMzk7aGVjYy1yYW0mIzM5OwotICAgICAgIGFuZCAmIzM5O21ieCYjMzk7Ci0tIHJlZy1uYW1lcyA6JiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OwotLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzCi0tIGNsb2NrczogY2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscykKLQotT3B0aW9uYWwgcHJvcGVydGllczoKLS0gdGksdXNlLWhlY2MxaW50OiBpZiBwcm92aWRlZCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cwotCQkgICBvbiBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCBIRUNDMElOVCBpbnRlcnJ1cHQKLQkJICAgbGluZSB3aWxsIGJlIHVzZWQuCi0tIHhjZWl2ZXItc3VwcGx5OiByZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlcgotCi1FeGFtcGxlOgotCi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOgotCWhlY2M6IGNhbkA1YzA1MDAwMCB7Ci0JCWNvbXBhdGlibGUgPSAmIzM0O3RpLGFtMzUxNy1oZWNjJiMzNDs7Ci0JCXJlZyA9ICZsdDsweDVjMDUwMDAwIDB4ODAmZ3Q7LAotCQkgICAgICAmbHQ7MHg1YzA1MzAwMCAweDE4MCZndDssCi0JCSAgICAgICZsdDsweDVjMDUyMDAwIDB4MjAwJmd0OzsKLQkJcmVnLW5hbWVzID0gJiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OzsKLQkJaW50ZXJydXB0cyA9ICZsdDsyNCZndDs7Ci0JCWNsb2NrcyA9ICZsdDsmYW1wO2hlY2NfY2smZ3Q7OwotCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKaW5kZXggNDA4MzU0OTcwNTBhNS4uMTgwMTVlNjBmZDZkNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbApAQCAtOCw3ICYjNDM7OCw3IEBAIHRpdGxlOgogICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyCiAKIG1haW50YWluZXJzOgotICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gJmx0O2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbSZndDsKJiM0MzsgIC0gSGFyaW5pIFQgJmx0O2hhcmluaS50QGFtZC5jb20mZ3Q7CiAKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CkBAIC01Myw2ICYjNDM7NTMsOSBAQCBwcm9wZXJ0aWVzOgogICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKICAgICBkZXNjcmlwdGlvbjogQ0FOIFRYX09MLCBUWF9UTCBhbmQgUlggRklGT3MgaGF2ZSBFQ0Mgc3VwcG9ydChBWEkgQ0FOKQogCiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwppbmRleCAzODEzMjM0MjNiNGNhLi5jOGNmMGJjNDliNjlhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZwpAQCAtOTMsOSAmIzQzOzkzLDkgQEAKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQ0LjgyNyYjMzQ7IGN5PSYjMzQ7MTU5LjE0MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7NTkuNDM2NCYjMzQ7IGN5PSYjMzQ7MTQyLjgyMyYjMzQ7IHJ4PSYjMzQ7Ny4zNjQ1NSYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKICAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQ0LjgyNyYjMzQ7IGN5PSYjMzQ7MTI5LjE5NiYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7LyZndDsKLSAgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQzLjA3NyYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAmbHQ7L2cmZ3Q7Ci0gICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTEwLjM4NiYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsgZmlsbD0mIzM0OyNmZmNiMzUmIzM0OyBzdHJva2U9JiMzNDsjMDAwJiMzNDsgc3Ryb2tlLWxpbmVjYXA9JiMzNDtzcXVhcmUmIzM0OyBzdHJva2Utd2lkdGg9JiMzNDsuNDk5OTk5JiMzNDsvJmd0OwomIzQzOyAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxMTAuMzg2JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0OyBmaWxsPSYjMzQ7IzI4YTRmZiYjMzQ7IHN0cm9rZT0mIzM0OyMwMDAmIzM0OyBzdHJva2UtbGluZWNhcD0mIzM0O3NxdWFyZSYjMzQ7IHN0cm9rZS13aWR0aD0mIzM0Oy40OTk5OTkmIzM0Oy8mZ3Q7CiYjNDM7ICAmbHQ7ZWxsaXBzZSBjeD0mIzM0OzE0My4wNzcmIzM0OyBjeT0mIzM0OzE4MC41MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7IGZpbGw9JiMzNDsjZmZjYjM1JiMzNDsgc3Ryb2tlPSYjMzQ7IzAwMCYjMzQ7IHN0cm9rZS1saW5lY2FwPSYjMzQ7c3F1YXJlJiMzNDsgc3Ryb2tlLXdpZHRoPSYjMzQ7LjQ5OTk5OSYjMzQ7LyZndDsKICAgJmx0O3RleHQgeD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxNzkuNDI2ODgmIzM0OyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgeG1sOnNwYWNlPSYjMzQ7cHJlc2VydmUmIzM0OyZndDsmbHQ7dHNwYW4geD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxNzkuNDI2ODgmIzM0OyBkeT0mIzM0OzAuNjAwMDAwMDImIzM0OyB0ZXh0LWFsaWduPSYjMzQ7Y2VudGVyJiMzNDsgdGV4dC1hbmNob3I9JiMzNDttaWRkbGUmIzM0OyZndDtBY2Nlc3NpYmxlJmx0Oy90c3BhbiZndDsmbHQ7dHNwYW4geD0mIzM0OzExMC45MDkwNyYjMzQ7IHk9JiMzNDsxODMuMzk1NjMmIzM0OyZndDsmbHQ7dHNwYW4gZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7Jmd0O2ZvciBTJmx0Oy90c3BhbiZndDtXJmx0Oy90c3BhbiZndDsmbHQ7L3RleHQmZ3Q7CiAgICZsdDt0ZXh0IHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxNzkuNTI3OTUmIzM0OyB4bWw6c3BhY2U9JiMzNDtwcmVzZXJ2ZSYjMzQ7Jmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTQzLjU4NjkmIzM0OyB5PSYjMzQ7MTc5LjUyNzk1JiMzNDsgZHk9JiMzNDsxIDAgMCAwIDAgMCYjMzQ7IGZvbnQtZmFtaWx5PSYjMzQ7c2Fucy1zZXJpZiYjMzQ7IGZvbnQtc2l6ZT0mIzM0OzIuODIyMjJweCYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7IHN0eWxlPSYjMzQ7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWwmIzM0OyZndDtJbmFjY2Vzc2libGUmbHQ7L3RzcGFuJmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTQzLjU4NjkmIzM0OyB5PSYjMzQ7MTgzLjM2Nzg2JiMzNDsgZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7Jmd0OyZsdDt0c3BhbiBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsmZ3Q7Zm9yIFMmbHQ7L3RzcGFuJmd0O1cmbHQ7L3RzcGFuJmd0OyZsdDsvdGV4dCZndDsKICAgJmx0O2cgZm9udC1zaXplPSYjMzQ7My4xNzVweCYjMzQ7Jmd0OwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA5OTE0NjAwNTBkYTc0Li42YjQ5YTJjODBjZDVkIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMjk1NzMsNyAmIzQzOzI5NTczLDcgQEAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sCiBGOglkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqCiAKIFhJTElOWCBDQU4gRFJJVkVSCi1NOglBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvICZsdDthcHBhbmEuZHVyZ2EucmFvQHhpbGlueC5jb20mZ3Q7CiYjNDM7TToJSGFyaW5pIFQgJmx0O2hhcmluaS50QGFtZC5jb20mZ3Q7CiBMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMKQEAgLTI0NjQsNyAmIzQzOzI0NjQsNyBAQCBzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKm1fY2FuX2NsYXNzX2FsbG9jYXRlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JaWYgKGRldi0mZ3Q7b2Zfbm9kZSAmYW1wOyZhbXA7IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtJmd0O29mX25vZGUsICYjMzQ7d2FrZXVwLXNvdXJjZSYjMzQ7KSkKJiM0MzsJaWYgKGRldi0mZ3Q7b2Zfbm9kZSAmYW1wOyZhbXA7IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LSZndDtvZl9ub2RlLCAmIzM0O3dha2V1cC1zb3VyY2UmIzM0OykpCiAJCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoZGV2LCB0cnVlKTsKIAogCS8qIEdldCBUWCBGSUZPIHNpemUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYwppbmRleCBlYjMxZWQxZjk2NDQ5Li5kMTFhN2M4OGZjMzJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jCkBAIC0xMjYsNyAmIzQzOzEyNiw3IEBAIHN0YXRpYyBpbnQgbV9jYW5fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKIAltY2FuX2NsYXNzLSZndDtuZXQtJmd0O2lycSA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7CiAJbWNhbl9jbGFzcy0mZ3Q7cG1fY2xvY2tfc3VwcG9ydCA9IDE7CiAJbWNhbl9jbGFzcy0mZ3Q7cG1fd2FrZV9zb3VyY2UgPSAwOwotCW1jYW5fY2xhc3MtJmd0O2Nhbi5jbG9jay5mcmVxID0gaWQtJmd0O2RyaXZlcl9kYXRhOwomIzQzOwltY2FuX2NsYXNzLSZndDtjYW4uY2xvY2suZnJlcSA9IE1fQ0FOX0NMT0NLX0ZSRVFfRUhMOwogCW1jYW5fY2xhc3MtJmd0O2lycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7CiAJbWNhbl9jbGFzcy0mZ3Q7b3BzID0gJmFtcDttX2Nhbl9wY2lfb3BzOwogCkBAIC0xODMsOCAmIzQzOzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLAogCQkJIG1fY2FuX3BjaV9zdXNwZW5kLCBtX2Nhbl9wY2lfcmVzdW1lKTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0gewotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LAotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMiksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LAomIzQzOwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpIH0sCiYjNDM7CXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMikgfSwKIAl7ICB9CS8qIFRlcm1pbmF0aW5nIEVudHJ5ICovCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1fY2FuX3BjaV9pZF90YWJsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuYwppbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMKQEAgLTIxMSw4ICYjNDM7MjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsCiAJcmV0dXJuIHJlZ21hcF9idWxrX3dyaXRlKHByaXYtJmd0O3JlZ21hcCwgVENBTjRYNVhfTVJBTV9TVEFSVCAmIzQzOyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpOwogfQogCi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpCiYjNDM7c3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHRjYW40eDV4X3ByaXYgKnByaXYsIGludCBlbmFibGUpCiB7CiYjNDM7CXN0cnVjdCByZWd1bGF0b3IgKnJlZyA9IHByaXYtJmd0O3Bvd2VyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLAomIzQzOwkgKiBzaW5jZSBhIHdha2UtdXAgZXZlbnQsIFJTVCBwaW4gdG9nZ2xlLCBvciBwb3dlciBjeWNsZSBhcmUgdGhlIG9ubHkKJiM0MzsJICogd2F5cyB0byBleGl0IHNsZWVwIG1vZGUuCiYjNDM7CSAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXQKJiM0MzsJICogY2FuJiMzOTt0IGJlIGRldGVybWluZWQgaGVyZS4KJiM0MzsJICoKJiM0MzsJICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiAmIzM0OzguNC4zIFNsZWVwIE1vZGUmIzM0OwomIzQzOwkgKiBodHRwczovL3d3dy50aS5jb20vbGl0L2dwbi90Y2FuNDU1MAomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2V0X2dwaW8gJmFtcDsmYW1wOyAhZW5hYmxlKSB7CiYjNDM7CQlpbnQgcmV0OwomIzQzOwomIzQzOwkJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtJmd0O3JlZ21hcCwgVENBTjRYNVhfQ09ORklHLAomIzQzOwkJCQkJIFRDQU40WDVYX01PREVfU0VMX01BU0ssCiYjNDM7CQkJCQkgVENBTjRYNVhfTU9ERV9TTEVFUCk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDtzcGktJmd0O2RldiwgJiMzNDtTZXR0aW5nIHNsZWVwIG1vZGUgZmFpbGVkICVwZVxuJiMzNDssCiYjNDM7CQkJCUVSUl9QVFIocmV0KSk7CiYjNDM7CX0KJiM0MzsKIAlpZiAoSVNfRVJSX09SX05VTEwocmVnKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTQ3Niw3ICYjNDM7NDk5LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJZ290byBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY7CiAJfQogCi0JcmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtJmd0O3Bvd2VyLCAxKTsKJiM0MzsJcmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycigmYW1wO3NwaS0mZ3Q7ZGV2LCAmIzM0O0VuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXG4mIzM0OywKIAkJCUVSUl9QVFIocmV0KSk7CkBAIC01MzEsNyAmIzQzOzU1NCw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiAKIG91dF9wb3dlcjoKLQl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDApOwomIzQzOwl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7CiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OgogCW1fY2FuX2NsYXNzX2ZyZWVfZGV2KG1jYW5fY2xhc3MtJmd0O25ldCk7CiAJcmV0dXJuIHJldDsKQEAgLTU0Myw3ICYjNDM7NTY2LDcgQEAgc3RhdGljIHZvaWQgdGNhbjR4NXhfY2FuX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCiAJbV9jYW5fY2xhc3NfdW5yZWdpc3RlcigmYW1wO3ByaXYtJmd0O2NkZXYpOwogCi0JdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtJmd0O3Bvd2VyLCAwKTsKJiM0MzsJdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApOwogCiAJbV9jYW5fY2xhc3NfZnJlZV9kZXYocHJpdi0mZ3Q7Y2Rldi5uZXQpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMKaW5kZXggMjlkZTBjMDFlNGVkYy4uMzdjMWMyMmM0MGM5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jCkBAIC01MCw2ICYjNDM7NTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHsKIAkJUktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sCiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODggPSB7CiYjNDM7CS5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LAomIzQzOwkucXVpcmtzID0gUktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV81IHwKJiM0MzsJCVJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNiwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGNvbnN0IGNoYXIgKl9fcmtjYW5mZF9nZXRfbW9kZWxfc3RyKGVudW0gcmtjYW5mZF9tb2RlbCBtb2RlbCkKIHsKIAlzd2l0Y2ggKG1vZGVsKSB7CkBAIC01Nyw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKQogCQlyZXR1cm4gJiMzNDtyazM1Njh2MiYjMzQ7OwogCWNhc2UgUktDQU5GRF9NT0RFTF9SSzM1NjhWMzoKIAkJcmV0dXJuICYjMzQ7cmszNTY4djMmIzM0OzsKJiM0MzsJY2FzZSBSS0NBTkZEX01PREVMX1JLMzU4ODoKJiM0MzsJCXJldHVybiAmIzM0O3JrMzU4OCYjMzQ7OwogCX0KIAogCXJldHVybiAmIzM0OyZsdDt1bmtub3duJmd0OyYjMzQ7OwpAQCAtMTQ4LDYgJiM0MzsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKIAogCXJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpOwogCiYjNDM7CS8qIFJLMzU4OCBDQU4tRkQgQlJTIHdvcmtzIHdpdGggVERDIGRpc2FibGVkLiAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7ZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KSB7CiYjNDM7CQlya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTiwgMCk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCXRkY28gPSAocHJpdi0mZ3Q7Y2FuLmNsb2NrLmZyZXEgLyBkYnQtJmd0O2JpdHJhdGUpICogMiAvIDM7CiAJdGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTsKIApAQCAtODQ2LDYgJiM0Mzs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7CiAJfSwgewogCQkuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4djMtY2FuZmQmIzM0OywKIAkJLmRhdGEgPSAmYW1wO3JrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU2OHYzLAomIzQzOwl9LCB7CiYjNDM7CQkuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTg4LWNhbmZkJiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTg4LAogCX0sIHsKIAkJLyogc2VudGluZWwgKi8KIAl9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwppbmRleCA0NzVjMDQwOWUyMTVhLi4yNGU4N2RhYTFkZjAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYwpAQCAtMjgxLDcgJiM0MzsyODEsMTAgQEAgcmtjYW5mZF9yeF9maWZvX2dldF9sZW4oY29uc3Qgc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKIHsKIAljb25zdCB1MzIgcmVnID0gcmtjYW5mZF9yZWFkKHByaXYsIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCk7CiAKLQlyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVCwgcmVnKTsKJiM0MzsJaWYgKHByaXYtJmd0O2RldnR5cGVfZGF0YS5tb2RlbCA9PSBSS0NBTkZEX01PREVMX1JLMzU4OCkKJiM0MzsJCXJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4LCByZWcpOwogfQogCiBpbnQgcmtjYW5mZF9oYW5kbGVfcnhfaW50KHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCmluZGV4IDkzMTMxYzdkN2Y1NGQuLjk1YmVhOWJmZDhhMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oCkBAIC0yMTQsNyAmIzQzOzIxNCw4IEBACiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMCkKIAogI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwgMHgxMTgKLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNCkKJiM0MzsjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KQomIzQzOyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCBHRU5NQVNLKDcsIDUpCiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0ZVTExfV0FURVJNQVJLIEdFTk1BU0soMywgMSkKICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKQogCkBAIC0zMzEsNiAmIzQzOzMzMiwxMSBAQAogICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHkKICAqIGF0IDgwIE1Iei4KICAqCiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLgomIzQzOyAqIEluIHRoYXQgc2V0dXAgcnhfZmlmb19lbXB0eV9lcnJvcnMgaW5jcmVtZW50cyB3aGVuIHRoZSBidXMKJiM0MzsgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlCiYjNDM7ICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLgomIzQzOyAqCiAgKiBUbyB3b3JrYXJvdW5kIHRoaXMgcHJvYmxlbSwgY2hlY2sgZm9yIGVtcHR5IEZJRk8gd2l0aAogICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdAogICogZWFybHkuCkBAIC0zNDQsNiAmIzQzOzM1MCw4IEBACiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlciYjMzk7cyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heQogICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzCiAgKgomIzQzOyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLgomIzQzOyAqCiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2UKICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgmIzM5O2VkIENBTiBmcmFtZXMgaW4KICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuCkBAIC00MjQsNiAmIzQzOzQzMiw5IEBACiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDEKICAqCiAgKiAtIFRYIHN0YXJ2YXRpb24gYWZ0ZXIgcmVwZWF0ZWQgQnVzLU9mZgomIzQzOyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGEKJiM0MzsgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlCiYjNDM7ICogICBjb250cm9sbGVyIHJlc3RhcnRlZC4KICAqICAgVG8gcmVwcm9kdWNlOgogICogICBob3N0OgogICogICAgIHNsZWVwIDMgJmFtcDsmYW1wOyBjYW5nZW4gY2FuMCAtSTIgLUxpIC1EaSAtcDEwIC1nIDAuMApAQCAtNDM0LDYgJiM0Mzs0NDUsNyBAQAogZW51bSBya2NhbmZkX21vZGVsIHsKIAlSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MiwKIAlSS0NBTkZEX01PREVMX1JLMzU2OFYzID0gMHgzNTY4MywKJiM0MzsJUktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsCiB9OwogCiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMKaW5kZXggODI1MDhhODY1MDk1OS4uM2I5YjJmMTA0ZDg2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jCkBAIC0xNTY1LDcgJiM0MzsxNTY1LDcgQEAgc3RhdGljIGludCBnc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAKIAlpZiAoaWNvdW50ICZndDsgdHlwZV9tYXgocGFyZW50LSZndDtjaGFubmVsX2NudCkpIHsKIAkJZGV2X2VycigmYW1wO2ludGYtJmd0O2RldiwKLQkJCSYjMzQ7RHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGF0ICV1IENBTiBpbnRlcmZhY2VzXG4mIzM0OywKJiM0MzsJCQkmIzM0O0RyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xuJiMzNDssCiAJCQl0eXBlX21heChwYXJlbnQtJmd0O2NoYW5uZWxfY250KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jIGIvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMKQEAgLTMzLDYgJiM0MzszMyw3IEBAIE1PRFVMRV9BTElBU19SVE5MX0xJTksoRFJWX05BTUUpOwogCiBzdHJ1Y3QgdnhjYW5fcHJpdiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgX19yY3UJKnBlZXI7CiYjNDM7CW5ldGRldmljZV90cmFja2VyIHBlZXJfdHJhY2tlcjsKIH07CiAKIHN0YXRpYyBuZXRkZXZfdHhfdCB2eGNhbl94bWl0KHN0cnVjdCBza19idWZmICpvc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtMjY4LDkgJiM0MzsyNjksMTEgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogY3Jvc3MgbGluayB0aGUgZGV2aWNlIHBhaXIgKi8KIAlwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlyY3VfYXNzaWduX3BvaW50ZXIocHJpdi0mZ3Q7cGVlciwgcGVlcik7CiYjNDM7CW5ldGRldl9ob2xkKHBlZXIsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTsKIAogCXByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTsKIAlyY3VfYXNzaWduX3BvaW50ZXIocHJpdi0mZ3Q7cGVlciwgZGV2KTsKJiM0MzsJbmV0ZGV2X2hvbGQoZGV2LCAmYW1wO3ByaXYtJmd0O3BlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7CiAKIAlyZXR1cm4gMDsKIApAQCAtMjgxLDI0ICYjNDM7Mjg0LDI1IEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiBzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCiB7CiYjNDM7CW5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7CiAJc3RydWN0IHZ4Y2FuX3ByaXYgKnByaXY7CiAJc3RydWN0IG5ldF9kZXZpY2UgKnBlZXI7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LSZndDtwZWVyKTsKJiM0MzsJcGVlcl90cmFja2VyID0gJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXI7CiYjNDM7CXBlZXIgPSB1bnJjdV9wb2ludGVyKHhjaGcoJmFtcDtwcml2LSZndDtwZWVyLCBOVUxMKSk7CiYjNDM7CWlmICghcGVlcikKJiM0MzsJCXJldHVybjsKIAotCS8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLAotCSAqIGJlZm9yZSBhIHJjdV9zeW5jaHJvbml6ZSgpIHBvaW50LiBUaGUgZGV2aWNlcyBhcmUgZ3VhcmFudGVlZAotCSAqIG5vdCBiZWluZyBmcmVlZCBiZWZvcmUgb25lIFJDVSBncmFjZSBwZXJpb2QuCi0JICovCi0JUkNVX0lOSVRfUE9JTlRFUihwcml2LSZndDtwZWVyLCBOVUxMKTsKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpOwogCi0JaWYgKHBlZXIpIHsKLQkJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwotCQlSQ1VfSU5JVF9QT0lOVEVSKHByaXYtJmd0O3BlZXIsIE5VTEwpOwotCQl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShwZWVyLCBoZWFkKTsKLQl9CiYjNDM7CXByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTsKJiM0MzsJZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKCZhbXA7cHJpdi0mZ3Q7cGVlciwgTlVMTCkpOwomIzQzOwlpZiAoZGV2KQomIzQzOwkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVfbmV0KGRldl9uZXQoZGV2KSwgcGVlciwgaGVhZCk7CiYjNDM7CiYjNDM7CW5ldGRldl9wdXQocGVlciwgcGVlcl90cmFja2VyKTsKJiM0MzsJbmV0ZGV2X3B1dChkZXYsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCAmIzQzOyAxXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUwMQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb24gZm9yIEZ1enppbmcgQ2FuZGlkYXRlIElkZW50aWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hpY2gsIGlmIGFueSwgb2YgdGhlc2Uga2VybmVsIGNoYW5nZXMgd2FycmFudCBmb2N1c2VkIGZ1enppbmcgZWZmb3J0cy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBwYXRjaHNldCBtYWtlcyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB0aGVuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGFjY2Vzc2libGUgdGhvc2UgY2hhbmdlcyBhcmUgZm9yIGZ1enppbmcuCgpMb29raW5nIGF0IHRoZSBkaWZmLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhcmUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIOKAkyBub3QgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHNvIHRob3NlIGFyZSBvdXQuIFRoZSBgTUFJTlRBSU5FUlNgIGZpbGUgY2hhbmdlIGlzIGlycmVsZXZhbnQuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byB0aGUgZHJpdmVyIGNoYW5nZXMuIEkgc2VlIGEgbWlub3IgQVBJIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNgIHdoZXJlIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGlzIHJlcGxhY2VkIHdpdGggYG9mX3Byb3BlcnR5X3ByZXNlbnRgLiBJdCYjMzk7cyBhIHN1YnRsZSBjaGFuZ2UsIGFzIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGltcGxpY2l0bHkgY2hlY2tzIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMsIHRoZXJlZm9yZSwgbm8gZnV6emluZyByZXF1aXJlZC4gIFNpbWlsYXJseSwgdGhlIHJlZmFjdG9yaW5nIGluIGBkcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmNgIHNlZW1zIGxpa2UgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KCk5leHQsIGBkcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jYCBoYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdGVhcmRvd24vc3VzcGVuZC9wcm9iZSBlcnJvciBwYXRoLiBJdCYjMzk7cyBwdXR0aW5nIHRoZSBkZXZpY2UgdG8gc2xlZXAuIEhtbSwgdGhpcyBpcyBhbiBTUEkgQ0FOIGNvbnRyb2xsZXIuIEkmIzM5O20gZ29pbmcgdG8gZ3Vlc3MgdGhpcyBpc24mIzM5O3QgZWFzeSB0byByZWFjaCB3aXRoIHN0YW5kYXJkIFFFTVU7IGdldHRpbmcgU1BJIGRldmljZXMgcmlnaHQgaW4gUUVNVSBjYW4gYmUgYSBwYWluLiBJIHNob3VsZCBub3RlIHRoaXMgZG93biwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGxvdyBwcmlvcml0eS4KClRoZSBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jYCwgYHJvY2tjaGlwX2NhbmZkLXJ4LmNgLCBhbmQgYHJvY2tjaGlwX2NhbmZkLmhgIGFkZCBzdXBwb3J0IGZvciB0aGUgYHJrMzU4OGAuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBhZ2FpbiwgcmVhY2hpbmcgdGhpcyB0aHJvdWdoIHN0YW5kYXJkIFFFTVUgaXMgdW5saWtlbHksIHVubGVzcyBhIHNwZWNpZmljIG1hY2hpbmUgY29uZmlndXJhdGlvbiBpcyBzZXR1cC4KCkEgdHlwbyBmaXggaW4gYGRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNgIGlz4oCmd2VsbCwgaXQmIzM5O3MgYSB0eXBvIGZpeC4KCk5vdywgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNgLiBXZSYjMzk7dmUgZ290IGNoYW5nZXMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AuIEkgc2VlIHRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBuZXRkZXZpY2VfdHJhY2tlcmAgYW5kIHVzaW5nIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsIGNoYW5nZSogaW4gYHZ4Y2FuYCwgd2hpY2ggaXMgYSB2aXJ0dWFsIENBTiB0dW5uZWwuIENydWNpYWxseSwgSSBrbm93IHRoYXQgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UsIG11Y2ggbGlrZSBgdmV0aGAsIGFuZCB0aHVzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsgKHJ0bmV0bGluaykgaW4gUUVNVS9zeXprYWxsZXIuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgc2hvdWxkIGJlIHRvcCBwcmlvcml0eS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGVzZSBgdnhjYW5gIGNoYW5nZXMgaW4gcGFydGljdWxhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGNhbl9uZXdsaW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMj1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMDMtXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMDUtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjMtXHQuc2V0dXBcdFx0PSB2eGNhbl9zZXR1cCxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcdC5uZXdsaW5rXHQ9IHZ4Y2FuX25ld2xpbmssXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXHQuZGVsbGlua1x0PSB2eGNhbl9kZWxsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDA2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdnhjYW4uYyBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIHRoZSBtb2RpZmljYXRpb25zIHRvIGB2eGNhbi5jYCBhcmUgZm9jdXNlZCBvbiB0d28ga2V5IGZ1bmN0aW9uczogYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AuIFRoZXNlIGFyZSB0aGUgY3JlYXRpb24gYW5kIGRlbGV0aW9uIG9mIHZpcnR1YWwgQ0FOIGludGVyZmFjZXMsIHJlc3BlY3RpdmVseS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIEZyb20gYW4gYXJjaGl0ZWN0dXJlIHBlcnNwZWN0aXZlLCB0aGVzZSBhcmUgY3JpdGljYWwgcG9pbnRzLCBhbmQgZGVmaW5pdGVseSAqcmVhY2hhYmxlKiBhbmQgKnRlc3RhYmxlKi4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGFuZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gY29yZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBgdnhjYW5gIG9wdGlvbi4gSXMgdGhpcyBhIG5ldyBmZWF0dXJlIGdhdGVkIGJlaGluZCBhIGNvbmZpZyBvcHRpb24/IElzIGl0IGluY2x1ZGVkIGJ5IGRlZmF1bHQ/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpbnRlZ3JhdGlvbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCwgb2YgY291cnNlLCBob3cgaXQgY2FuIGJlIHRlc3RlZCBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zIGFuZCBjb25maWd1cmF0aW9ucy4gQSBxdWljayBjaGVjayBvZiBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIGlmIEkgbmVlZCB0byB3b3JyeSBhYm91dCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTl9WWENBTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0yNT1jb25maWcgQ0FOX1ZDQU5cbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0zMy1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjM0OmNvbmZpZyBDQU5fVlhDQU5cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTM1LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBDQU4gVHVubmVsICh2eGNhbilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBDQU5fVlhDQU4gS2NvbmZpZyBFbnRyeSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgc2VjdGlvbiByZWxhdGVkIHRvIGBDQU5fVlhDQU5gLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB2aXJ0dWFsIENBTiBkZXZpY2UgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBGaXJzdCwgSeKAmWxsIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgQ0FOIGRyaXZlcnMsIG9yIHNvbWUgdW5kZXJseWluZyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgaXQgcmVxdWlyZXMsIGV2ZW4gaWYgaXQmIzM5O3MgdmlydHVhbD8gSXQmIzM5O3MgYWxsIGFib3V0IGhvdyBgQ0FOX1ZYQ0FOYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQ0FOIGVjb3N5c3RlbSB3aXRoaW4gdGhpcyBrZXJuZWwuIEkgd2FudCB0byBzZWUgaG93IHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXNvbHZlIHRoaXMgdG8gYSB3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCB1bmRlcnN0YW5kIHdoYXQgSSB3b3VsZCBuZWVkIHRvIGRvIHRvIGVuYWJsZSBpdC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdpbGwgZW5hYmxlIGBDQU5fVlhDQU5gLiBBcmUgdGhlcmUgb3RoZXIgc2V0dGluZ3MgdGhhdCB3aWxsIGFsc28gYmUgbmVlZGVkPyBXaGF0IGtpbmQgb2Ygc3lzdGVtIHdpbGwgaGF2ZSBhIGdvb2QgYXBwbGljYXRpb24gZm9yIHRoZSB1c2Ugb2YgYENBTl9WWENBTmA/IEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgZm9yIGl0cyBoZWxwIHRleHQgYW5kIHNlZSB3aGF0IGl0IHRlbGxzIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcbiAgMzI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdmNhbi5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgQ0FOX1ZYQ0FOXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIENBTiBUdW5uZWwgKHZ4Y2FuKVwmIzM0O1xuICAzNjpcdFx0aGVscFxuICAzNzpcdFx0ICBTaW1pbGFyIHRvIHRoZSB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlciB2ZXRoLCB2eGNhbiBpbXBsZW1lbnRzIGFcbiAgMzg6XHRcdCAgbG9jYWwgQ0FOIHRyYWZmaWMgdHVubmVsIGJldHdlZW4gdHdvIHZpcnR1YWwgQ0FOIG5ldHdvcmsgZGV2aWNlcy5cbiAgMzk6XHRcdCAgV2hlbiBjcmVhdGluZyBhIHZ4Y2FuLCB0d28gdnhjYW4gZGV2aWNlcyBhcmUgY3JlYXRlZCBhcyBwYWlyLlxuICA0MDpcdFx0ICBXaGVuIG9uZSBlbmQgcmVjZWl2ZXMgdGhlIHBhY2tldCBpdCBhcHBlYXJzIG9uIGl0cyBwYWlyIGFuZCB2aWNlXG4gIDQxOlx0XHQgIHZlcnNhLiBUaGUgdnhjYW4gY2FuIGJlIHVzZWQgZm9yIGNyb3NzIG5hbWVzcGFjZSBjb21tdW5pY2F0aW9uLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUbyBoYXZlIGEgY2xlYW4gc3RhcnQgaW4gZWFjaCBuYW1lc3BhY2UgdGhlIENBTiBHVyBob3AgY291bnRlciBpc1xuICA0NDpcdFx0ICBzZXQgdG8gemVyby5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZVxuICA0NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGNhbi5cbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgQ0FOX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWd5IGhpbmdlcyBvbiB0aGUgY29uZGl0aW9uYWwgYXZhaWxhYmlsaXR5IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbiBmb3IgdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENBTiBkcml2ZXJzLiBUaGlzIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgQ0FOIHN1YnN5c3RlbS4gU28sIGxldCYjMzk7cyBoZWFkIHRvIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgYW5kIGRpdmUgcmlnaHQgaW50byB0aGF0IGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uLCBwb3NzaWJseSBhbiBgaWZgIHN0YXRlbWVudCwgZGVmaW5pbmcgdGhlIGNvbmRpdGlvbiBJJiMzOTttIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIGlmIGl0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0bWVudWNvbmZpZyBDQU5fREVWXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtDQU4gRGV2aWNlIERyaXZlcnNcJiMzNDtcbiAgIDU6XHRcdGRlZmF1bHQgeVxuICAgNjpcdFx0ZGVwZW5kcyBvbiBDQU5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXG4gICA5Olx0XHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXG4gIDEwOlx0XHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcbiAgMTE6XHRcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xuICAxMjpcdFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcbiAgMTM6XHRcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcbiAgMTQ6XHRcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFx1MDAzZS5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgQ0FOKC1GRCkgZGV2aWNlIGRyaXZlcnMgaW5jbHVkaW5nIHRoZVxuICAxNzpcdFx0ICB2aXJ0dWFsIG9uZXMuIElmIHlvdSBvd24gc3VjaCBkZXZpY2VzIG9yIHBsYW4gdG8gdXNlIHRoZSB2aXJ0dWFsIENBTlxuICAxODpcdFx0ICBpbnRlcmZhY2VzIHRvIGRldmVsb3AgYXBwbGljYXRpb25zLCBzYXkgWSBoZXJlLlxuICAxOTpcdFxuICAyMDpcdFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYENBTl9WWENBTmAgbW9kdWxlIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IG5lZWRzIGJvdGggYENBTmAgYW5kIGBDQU5fREVWYCBlbmFibGVkLiBUaGF0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhlc2UgdmlydHVhbCBDQU4gZGV2aWNlczsgdGhleSYjMzk7cmUgYnVpbHQgb24gdGhlIGZvdW5kYXRpb25hbCBDQU4gaW5mcmFzdHJ1Y3R1cmUuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBpbiB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgQ0FOYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGZvciBgQ0FOX1ZYQ0FOYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgbmV0d29yayBsYXllciBjb3JlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBDQU5cbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0NBTiBidXMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBhIHNsb3cgKHVwIHRvIDFNYml0L3MpIHNlcmlhbFxuICAxMTpcdFx0ICBjb21tdW5pY2F0aW9ucyBwcm90b2NvbC4gRGV2ZWxvcG1lbnQgb2YgdGhlIENBTiBidXMgc3RhcnRlZCBpblxuICAxMjpcdFx0ICAxOTgzIGF0IFJvYmVydCBCb3NjaCBHbWJILCBhbmQgdGhlIHByb3RvY29sIHdhcyBvZmZpY2lhbGx5XG4gIDEzOlx0XHQgIHJlbGVhc2VkIGluIDE5ODYuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSxcbiAgMTQ6XHRcdCAgYnV0IGlzIG5vdyB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcbiAgMTU6XHRcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcbiAgMTY6XHRcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFx1MDAzZS5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IHdhbnQgQ0FOIHN1cHBvcnQgeW91IHNob3VsZCBzYXkgWSBoZXJlIGFuZCBhbHNvIHRvIHRoZVxuICAxOTpcdFx0ICBzcGVjaWZpYyBkcml2ZXIgZm9yIHlvdXIgY29udHJvbGxlcihzKSB1bmRlciB0aGUgTmV0d29yayBkZXZpY2VcbiAgMjA6XHRcdCAgc3VwcG9ydCBzZWN0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ1OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgQ0FOIERyaXZlciBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIENBTiBkcml2ZXIgb3B0aW9uczogYENBTmAsIGBDQU5fREVWYCwgYENBTl9WWENBTmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzc2VzcyB3aGF0JiMzOTtzIGVhc2lseSB0ZXN0YWJsZS4gV2hhdCBhYm91dCB0aGUgc3BlY2lmaWNzLCBsaWtlIGB0Y2FuNHg1eC1jb3JlLmNgPyBUaGF0JiMzOTtzIGFuIFNQSSBkcml2ZXIsIHRoZSBgVENBTjRYNVhgIOKAkyBwb3RlbnRpYWxseSBhIGh1cmRsZS4gVGhlbiB0aGVyZSYjMzk7cyBgcm9ja2NoaXBfY2FuZmQtY29yZS5jYCwgcHJvYmFibHkgZm9yIHRoZSBgQ0FOX1JPQ0tDSElQX0NBTkZEYCBwbGF0Zm9ybS4gQW5kIGBtX2NhbmAgaXMgc2ltcGx5IGBDQU5fTV9DQU5gLiBUaGVzZSBhcmUgYWxsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM7IHRoZXkmIzM5O3JlIGdvaW5nIHRvIGJlIGEgYml0IHRyaWNraWVyIHRvIGdldCBteSBoYW5kcyBvbiBkaXJlY3RseSBmb3IgdGVzdGluZyBvciBhbmFseXNpcy4KCkhvd2V2ZXIsIGB2eGNhbmAsIGJlaW5nIGEgdmlydHVhbCBkcml2ZXIsIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgdGhlIG1vc3QgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBjYW5kaWRhdGUuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBjYW4gd29yayB3aXRoIHRoYXQuCgpOb3csIG15IGZvY3VzIHNoaWZ0cy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIG9mIGB2eGNhbi5jYCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMuIFNvLCBJJiMzOTtsbCBjaGVjayBpdHMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gbmV0d29yay4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlaXIgc2lnbmF0dXJlcywgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhleSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhjYW5fbmV3bGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAzLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjA0OnN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVx0XHRcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMyMD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzIzLVx0LnNldHVwXHRcdD0gdnhjYW5fc2V0dXAsXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMjQ6XHQubmV3bGlua1x0PSB2eGNhbl9uZXdsaW5rLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzI1LVx0LmRlbGxpbmtcdD0gdnhjYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxOTMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYHZ4Y2FuX2RlbGxpbmtgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGB2eGNhbl9kZWxsaW5rYC4gSSBuZWVkIHRvIGFzc2VzcyB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBjb21wb25lbnQuIEkmIzM5O20gcHJvYmFibHkgdGhpbmtpbmcgYWJvdXQgYSBzcGVjaWZpYyBwcm9ibGVtIG9yIHBlcmhhcHMgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGFuIGVycm9yIHJlcG9ydC4gRmlyc3QsIEkgbmVlZCB0byBzZWUgd2hhdCBJIGtub3csIGFuZCB3aGF0IEkgKmRvbiYjMzk7dCoga25vdywgYWJvdXQgaG93IGB2eGNhbl9kZWxsaW5rYCBpcyBiZWhhdmluZyByaWdodCBub3cuIElzIGl0IHBlcmZvcm1pbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgYW5vbWFsaWVzPyBCYXNlZCBvbiB0aGF0LCBJJiMzOTtsbCBzdGFydCBjaGVja2luZyB0aGUgY29kZSBkaXJlY3RseSwgbWF5YmUgbG9vayBmb3IgcmVsYXRlZCBsb2cgZW50cmllcywgb3IgYmVnaW4gdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZXhlY3V0aW9uIHRvIHNlZSB3aGVyZSB0aGUgYm90dGxlbmVjayBtaWdodCBiZSwgb3IgbWF5YmUgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYW4gdW5leHBlY3RlZCBjb25kaXRpb24gdGhhdCYjMzk7cyBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV04oCZcyBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDQ9c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg0LVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6Mjg1OnN0YXRpYyB2b2lkIHZ4Y2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjQtXHQubmV3bGlua1x0PSB2eGNhbl9uZXdsaW5rLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzI1Olx0LmRlbGxpbmtcdD0gdnhjYW5fZGVsbGluayxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyNi1cdC5wb2xpY3lcdFx0PSB2eGNhbl9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjYyCgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQU4gRHJpdmVyIFBhdGNoKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoIHNlcmllcywgSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgaW1wYWN0ZnVsIGNoYW5nZXMsIGFuZCB0aGVyZWZvcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLCBhcmUgZGVmaW5pdGVseSBpbiBgdnhjYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgYXJlIHdoZXJlIHRoZSByZWFsIGp1aWNlIGlzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleeKAmXZlIGFkZHJlc3NlZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgL2BuZXRkZXZfcHV0YC4gU21hcnQgbW92ZSwgdGhhdOKAmXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhbiBiaXRlIHlvdSBsYXRlciBpZiB5b3UmIzM5O3JlIG5vdCBjYXJlZnVsLgoKSSB0b29rIGEgbG9vayB0aHJvdWdoIHRoZSBvdGhlciBmaWxlcyB0b3VjaGVkIGluIHRoZSBwYXRjaCwgb2YgY291cnNlLiBUaGUgdHlwbyBpbiBgZ3NfdXNiLmNgPyBOb3Qgd29ydGggdGhlIHRpbWUsIGFuZCB0aGUgYG9mX3Byb3BlcnR5YCBjaGFuZ2UgaW4gYG1fY2FuLmNgIGFuZCB0aGUgcmVmYWN0b3JpbmcgaW4gYG1fY2FuX3BjaS5jYCBzZWVtIG1vcmUgY29zbWV0aWMgb3IgcmVsYXRlZCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24vY29uZmlndXJhdGlvbiwgbm90aGluZyB0aGF0IHdvdWxkIGJlIGEgaGlnaCBwcmlvcml0eSBmb3IgZnV6emluZy4gYHRjYW40eDV4LWNvcmUuY2AgYW5kIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgIGFyZSBTUEkgYW5kIHBsYXRmb3JtIGRldmljZSBkcml2ZXJzIHJlc3BlY3RpdmVseSwgd2hpY2ggYXJlbiYjMzk7dCBlYXNpbHkgcmVhY2hhYmxlIGluIG15IHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIEkmIzM5O20gd3JpdGluZyB0aG9zZSBvZmYgZm9yIG5vdy4KClNvLCBpdCYjMzk7cyBjbGVhcjogYHZ4Y2FuLmNgIGlzIHRoZSB0YXJnZXQuIFRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyLCBgdnhjYW5gLCBpcyBlYXNpbHkgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgZml4aW5nIHRoaXMga2luZCBvZiBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlIGlzIGFsc28gYSBnb29kIHJlYXNvbiB0byBmb2N1cyBvbiBpdC4KClRoZXJlZm9yZSwgbXkgc3VtbWFyeSBhbmQgcmVjb21tZW5kYXRpb25zIGFyZToKCiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlCiogICAqKkZvY3VzU3ltYm9scyoqOgogICAgKiAgIGB2eGNhbl9uZXdsaW5rYAogICAgKiAgIGB2eGNhbl9kZWxsaW5rYAoqICAgKipFbmFibGVDb25maWdzKio6CiAgICAqICAgYENBTmAKICAgICogICBgQ0FOX0RFVmAKICAgICogICBgQ0FOX1ZYQ0FOYAoKVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgcmVmIGNvdW50aW5nIGxvZ2ljIG9uIGEgdmlydHVhbCBkZXZpY2UsIHNvIGl0IGlzIGhpZ2ggdmFsdWUgYW5kIGVhc3kgdG8gdHJpZ2dlci4gV2UmIzM5O3JlIGdvb2QgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDIzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU4mIzM0OywKICAgICYjMzQ7Q0FOX0RFViYjMzQ7LAogICAgJiMzNDtDQU5fVlhDQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGNhbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O3Z4Y2FuX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9WWENBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4Y2FuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7dnhjYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYCBpbiB0aGUgdmlydHVhbCBDQU4gdHVubmVsIGRyaXZlciAoYHZ4Y2FuYCkgdG8gdXNlIGBuZXRkZXZpY2VfdHJhY2tlcmAgZm9yIHBlZXIgZGV2aWNlcywgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZXMuIFNpbmNlIGB2eGNhbmAgaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHRoYXQgY2FuIGJlIGluc3RhbnRpYXRlZCB2aWEgbmV0bGluaywgdGhlc2UgY2hhbmdlcyBhcmUgZWFzaWx5IHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4gT3RoZXIgY2hhbmdlcyBpbiB0aGUgc2VyaWVzIGFyZSBlaXRoZXIgZG9jdW1lbnRhdGlvbiwgdHlwbyBmaXhlcywgb3IgYWZmZWN0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKFNQSSwgUm9ja2NoaXAsIFBDSSkgbm90IGVhc2lseSBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYmY5Y2UxNTA5MzA3MDMxMjkyOGE1ZjY5NTYxYzFhNDc2ZDczODRmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMjM6NDc6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbAppbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwKQEAgLTE2LDcgJiM0MzsxNiw5IEBAIGFsbE9mOgogcHJvcGVydGllczoKICAgY29tcGF0aWJsZToKICAgICBvbmVPZjoKLSAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCiYjNDM7ICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkCiYjNDM7ICAgICAgICAgIC0gcm9ja2NoaXAscmszNTg4LWNhbmZkCiAgICAgICAtIGl0ZW1zOgogICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkCiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjc4NzRlOWU0OTIyNDQKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sCkBAIC0wLDAgJiM0MzsxLDY0IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IFRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBFZHVhcmQgQm9zdGluYSAmbHQ7ZWdib3N0aW5hQGdtYWlsLmNvbSZndDsKJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAzCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGhlY2MKJiM0MzsgICAgICAtIGNvbnN0OiBoZWNjLXJhbQomIzQzOyAgICAgIC0gY29uc3Q6IG1ieAomIzQzOwomIzQzOyAgaW50ZXJydXB0czoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIGNsb2NrczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHRpLHVzZS1oZWNjMWludDoKJiM0MzsgICAgdHlwZTogYm9vbGVhbgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlCiYjNDM7ICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZQomIzQzOyAgICAgIHdpbGwgYmUgdXNlZC4KJiM0MzsgICAgZGVmYXVsdDogZmFsc2UKJiM0MzsKJiM0MzsgIHhjZWl2ZXItc3VwcGx5OgomIzQzOyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBpbnRlcnJ1cHRzCiYjNDM7ICAtIGNsb2NrcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICBjYW5ANWMwNTAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDVjMDUwMDAwIDB4ODAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgJmx0OzB4NWMwNTMwMDAgMHgxODAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgJmx0OzB4NWMwNTIwMDAgMHgyMDAmZ3Q7OwomIzQzOyAgICAgICAgcmVnLW5hbWVzID0gJiMzNDtoZWNjJiMzNDssICYjMzQ7aGVjYy1yYW0mIzM0OywgJiMzNDttYngmIzM0OzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7MjQmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7aGVjY19jayZndDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGYwYTdjZmUzMjkzLi4wMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0CiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsMzIgJiM0MzswLDAgQEAKLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGUKLWZvciB0aGUgaGVjYyBpbnRlcmZhY2UgY29udGFpbnMuCi0KLVJlcXVpcmVkIHByb3BlcnRpZXM6Ci0tIGNvbXBhdGlibGU6ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OwotLSByZWc6IGFkZHJlc3NlcyBhbmQgbGVuZ3RocyBvZiB0aGUgcmVnaXN0ZXIgc3BhY2VzIGZvciAmIzM5O2hlY2MmIzM5OywgJiMzOTtoZWNjLXJhbSYjMzk7Ci0gICAgICAgYW5kICYjMzk7bWJ4JiMzOTsKLS0gcmVnLW5hbWVzIDomIzM0O2hlY2MmIzM0OywgJiMzNDtoZWNjLXJhbSYjMzQ7LCAmIzM0O21ieCYjMzQ7Ci0tIGludGVycnVwdHM6IGludGVycnVwdCBtYXBwaW5nIGZvciB0aGUgaGVjYyBpbnRlcnJ1cHRzIHNvdXJjZXMKLS0gY2xvY2tzOiBjbG9jayBwaGFuZGxlcyAoc2VlIGNsb2NrIGJpbmRpbmdzIGZvciBkZXRhaWxzKQotCi1PcHRpb25hbCBwcm9wZXJ0aWVzOgotLSB0aSx1c2UtaGVjYzFpbnQ6IGlmIHByb3ZpZGVkIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzCi0JCSAgIG9uIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0IEhFQ0MwSU5UIGludGVycnVwdAotCQkgICBsaW5lIHdpbGwgYmUgdXNlZC4KLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyCi0KLUV4YW1wbGU6Ci0KLUZvciBhbTM1MTdldm0gYm9hcmQ6Ci0JaGVjYzogY2FuQDVjMDUwMDAwIHsKLQkJY29tcGF0aWJsZSA9ICYjMzQ7dGksYW0zNTE3LWhlY2MmIzM0OzsKLQkJcmVnID0gJmx0OzB4NWMwNTAwMDAgMHg4MCZndDssCi0JCSAgICAgICZsdDsweDVjMDUzMDAwIDB4MTgwJmd0OywKLQkJICAgICAgJmx0OzB4NWMwNTIwMDAgMHgyMDAmZ3Q7OwotCQlyZWctbmFtZXMgPSAmIzM0O2hlY2MmIzM0OywgJiMzNDtoZWNjLXJhbSYjMzQ7LCAmIzM0O21ieCYjMzQ7OwotCQlpbnRlcnJ1cHRzID0gJmx0OzI0Jmd0OzsKLQkJY2xvY2tzID0gJmx0OyZhbXA7aGVjY19jayZndDs7Ci0JfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbAppbmRleCA0MDgzNTQ5NzA1MGE1Li4xODAxNWU2MGZkNmQ2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sCkBAIC04LDcgJiM0Mzs4LDcgQEAgdGl0bGU6CiAgIFhpbGlueCBDQU4gYW5kIENBTkZEIGNvbnRyb2xsZXIKIAogbWFpbnRhaW5lcnM6Ci0gIC0gQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyAmbHQ7YXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tJmd0OwomIzQzOyAgLSBIYXJpbmkgVCAmbHQ7aGFyaW5pLnRAYW1kLmNvbSZndDsKIAogcHJvcGVydGllczoKICAgY29tcGF0aWJsZToKQEAgLTUzLDYgJiM0Mzs1Myw5IEBAIHByb3BlcnRpZXM6CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZwogICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pCiAKJiM0MzsgIHBoeXM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2ZyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnCkBAIC05Myw5ICYjNDM7OTMsOSBAQAogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDQuODI3JiMzNDsgY3k9JiMzNDsxNTkuMTQzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDs1OS40MzY0JiMzNDsgY3k9JiMzNDsxNDIuODIzJiMzNDsgcng9JiMzNDs3LjM2NDU1JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwogICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDQuODI3JiMzNDsgY3k9JiMzNDsxMjkuMTk2JiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsvJmd0OwotICAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxNDMuMDc3JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0Oy8mZ3Q7CiAgICZsdDsvZyZndDsKLSAgJmx0O2VsbGlwc2UgY3g9JiMzNDsxMTAuMzg2JiMzNDsgY3k9JiMzNDsxODAuNTMmIzM0OyByeD0mIzM0OzEwLjg4NjYmIzM0OyByeT0mIzM0OzQuMzkzMDgmIzM0OyBmaWxsPSYjMzQ7I2ZmY2IzNSYjMzQ7IHN0cm9rZT0mIzM0OyMwMDAmIzM0OyBzdHJva2UtbGluZWNhcD0mIzM0O3NxdWFyZSYjMzQ7IHN0cm9rZS13aWR0aD0mIzM0Oy40OTk5OTkmIzM0Oy8mZ3Q7CiYjNDM7ICAmbHQ7ZWxsaXBzZSBjeD0mIzM0OzExMC4zODYmIzM0OyBjeT0mIzM0OzE4MC41MyYjMzQ7IHJ4PSYjMzQ7MTAuODg2NiYjMzQ7IHJ5PSYjMzQ7NC4zOTMwOCYjMzQ7IGZpbGw9JiMzNDsjMjhhNGZmJiMzNDsgc3Ryb2tlPSYjMzQ7IzAwMCYjMzQ7IHN0cm9rZS1saW5lY2FwPSYjMzQ7c3F1YXJlJiMzNDsgc3Ryb2tlLXdpZHRoPSYjMzQ7LjQ5OTk5OSYjMzQ7LyZndDsKJiM0MzsgICZsdDtlbGxpcHNlIGN4PSYjMzQ7MTQzLjA3NyYjMzQ7IGN5PSYjMzQ7MTgwLjUzJiMzNDsgcng9JiMzNDsxMC44ODY2JiMzNDsgcnk9JiMzNDs0LjM5MzA4JiMzNDsgZmlsbD0mIzM0OyNmZmNiMzUmIzM0OyBzdHJva2U9JiMzNDsjMDAwJiMzNDsgc3Ryb2tlLWxpbmVjYXA9JiMzNDtzcXVhcmUmIzM0OyBzdHJva2Utd2lkdGg9JiMzNDsuNDk5OTk5JiMzNDsvJmd0OwogICAmbHQ7dGV4dCB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE3OS40MjY4OCYjMzQ7IGZvbnQtc2l6ZT0mIzM0OzMuMTc1cHgmIzM0OyB4bWw6c3BhY2U9JiMzNDtwcmVzZXJ2ZSYjMzQ7Jmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE3OS40MjY4OCYjMzQ7IGR5PSYjMzQ7MC42MDAwMDAwMiYjMzQ7IHRleHQtYWxpZ249JiMzNDtjZW50ZXImIzM0OyB0ZXh0LWFuY2hvcj0mIzM0O21pZGRsZSYjMzQ7Jmd0O0FjY2Vzc2libGUmbHQ7L3RzcGFuJmd0OyZsdDt0c3BhbiB4PSYjMzQ7MTEwLjkwOTA3JiMzNDsgeT0mIzM0OzE4My4zOTU2MyYjMzQ7Jmd0OyZsdDt0c3BhbiBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsmZ3Q7Zm9yIFMmbHQ7L3RzcGFuJmd0O1cmbHQ7L3RzcGFuJmd0OyZsdDsvdGV4dCZndDsKICAgJmx0O3RleHQgeD0mIzM0OzE0My41ODY5JiMzNDsgeT0mIzM0OzE3OS41Mjc5NSYjMzQ7IHhtbDpzcGFjZT0mIzM0O3ByZXNlcnZlJiMzNDsmZ3Q7Jmx0O3RzcGFuIHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxNzkuNTI3OTUmIzM0OyBkeT0mIzM0OzEgMCAwIDAgMCAwJiMzNDsgZm9udC1mYW1pbHk9JiMzNDtzYW5zLXNlcmlmJiMzNDsgZm9udC1zaXplPSYjMzQ7Mi44MjIyMnB4JiMzNDsgdGV4dC1hbGlnbj0mIzM0O2NlbnRlciYjMzQ7IHRleHQtYW5jaG9yPSYjMzQ7bWlkZGxlJiMzNDsgc3R5bGU9JiMzNDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbCYjMzQ7Jmd0O0luYWNjZXNzaWJsZSZsdDsvdHNwYW4mZ3Q7Jmx0O3RzcGFuIHg9JiMzNDsxNDMuNTg2OSYjMzQ7IHk9JiMzNDsxODMuMzY3ODYmIzM0OyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsmZ3Q7Jmx0O3RzcGFuIGZvbnQtc2l6ZT0mIzM0OzMuMTc1cHgmIzM0OyB0ZXh0LWFsaWduPSYjMzQ7Y2VudGVyJiMzNDsgdGV4dC1hbmNob3I9JiMzNDttaWRkbGUmIzM0OyZndDtmb3IgUyZsdDsvdHNwYW4mZ3Q7VyZsdDsvdHNwYW4mZ3Q7Jmx0Oy90ZXh0Jmd0OwogICAmbHQ7ZyBmb250LXNpemU9JiMzNDszLjE3NXB4JiMzNDsmZ3Q7CmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDk5MTQ2MDA1MGRhNzQuLjZiNDlhMmM4MGNkNWQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC0yOTU3Myw3ICYjNDM7Mjk1NzMsNyBAQCBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWwKIEY6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCoKIAogWElMSU5YIENBTiBEUklWRVIKLU06CUFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gJmx0O2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbSZndDsKJiM0MztNOglIYXJpbmkgVCAmbHQ7aGFyaW5pLnRAYW1kLmNvbSZndDsKIEw6CWxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmcKIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwppbmRleCBlYjg1NjU0N2FlN2RmLi4xNmY4MDYwN2UxNTBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYwpAQCAtMjQ2NCw3ICYjNDM7MjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKLQlpZiAoZGV2LSZndDtvZl9ub2RlICZhbXA7JmFtcDsgb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi0mZ3Q7b2Zfbm9kZSwgJiMzNDt3YWtldXAtc291cmNlJiMzNDspKQomIzQzOwlpZiAoZGV2LSZndDtvZl9ub2RlICZhbXA7JmFtcDsgb2ZfcHJvcGVydHlfcHJlc2VudChkZXYtJmd0O29mX25vZGUsICYjMzQ7d2FrZXVwLXNvdXJjZSYjMzQ7KSkKIAkJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpOwogCiAJLyogR2V0IFRYIEZJRk8gc2l6ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jCmluZGV4IGViMzFlZDFmOTY0NDkuLmQxMWE3Yzg4ZmMzMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgc3RhdGljIGludCBtX2Nhbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQogCW1jYW5fY2xhc3MtJmd0O25ldC0mZ3Q7aXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTsKIAltY2FuX2NsYXNzLSZndDtwbV9jbG9ja19zdXBwb3J0ID0gMTsKIAltY2FuX2NsYXNzLSZndDtwbV93YWtlX3NvdXJjZSA9IDA7Ci0JbWNhbl9jbGFzcy0mZ3Q7Y2FuLmNsb2NrLmZyZXEgPSBpZC0mZ3Q7ZHJpdmVyX2RhdGE7CiYjNDM7CW1jYW5fY2xhc3MtJmd0O2Nhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7CiAJbWNhbl9jbGFzcy0mZ3Q7aXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTsKIAltY2FuX2NsYXNzLSZndDtvcHMgPSAmYW1wO21fY2FuX3BjaV9vcHM7CiAKQEAgLTE4Myw4ICYjNDM7MTgzLDggQEAgc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1fY2FuX3BjaV9wbV9vcHMsCiAJCQkgbV9jYW5fcGNpX3N1c3BlbmQsIG1fY2FuX3BjaV9yZXN1bWUpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbV9jYW5fcGNpX2lkX3RhYmxlW10gPSB7Ci0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sCi0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sCiYjNDM7CXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSwKJiM0MzsJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LAogCXsgIH0JLyogVGVybWluYXRpbmcgRW50cnkgKi8KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbV9jYW5fcGNpX2lkX3RhYmxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jCmluZGV4IDMxY2M5ZDBhYmQ0NTMuLmE1Yjg4MjlhYTUxOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuYwpAQCAtMjExLDggJiM0MzsyMTEsMzEgQEAgc3RhdGljIGludCB0Y2FuNHg1eF93cml0ZV9maWZvKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldiwKIAlyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi0mZ3Q7cmVnbWFwLCBUQ0FONFg1WF9NUkFNX1NUQVJUICYjNDM7IGFkZHJfb2Zmc2V0LCB2YWwsIHZhbF9jb3VudCk7CiB9CiAKLXN0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3IgKnJlZywgaW50IGVuYWJsZSkKJiM0MztzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSkKIHsKJiM0MzsJc3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi0mZ3Q7cG93ZXI7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFB1dCB0aGUgZGV2aWNlIGludG8gc2xlZXAgbW9kZSBpZiB0aGUgUlNUIHBpbiBpcyBhdmFpbGFibGUsCiYjNDM7CSAqIHNpbmNlIGEgd2FrZS11cCBldmVudCwgUlNUIHBpbiB0b2dnbGUsIG9yIHBvd2VyIGN5Y2xlIGFyZSB0aGUgb25seQomIzQzOwkgKiB3YXlzIHRvIGV4aXQgc2xlZXAgbW9kZS4KJiM0MzsJICogUmVkdW5kYW50IGlmIHRoZSByZWd1bGF0b3IgaXMgZXhjbHVzaXZlIHRvIHRoaXMgZGV2aWNlLCBidXQgdGhhdAomIzQzOwkgKiBjYW4mIzM5O3QgYmUgZGV0ZXJtaW5lZCBoZXJlLgomIzQzOwkgKgomIzQzOwkgKiBEYXRhc2hlZXQ6IFRDQU40NTUwLCBzZWN0aW9uICYjMzQ7OC40LjMgU2xlZXAgTW9kZSYjMzQ7CiYjNDM7CSAqIGh0dHBzOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RjYW40NTUwCiYjNDM7CSAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzZXRfZ3BpbyAmYW1wOyZhbXA7ICFlbmFibGUpIHsKJiM0MzsJCWludCByZXQ7CiYjNDM7CiYjNDM7CQlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0mZ3Q7cmVnbWFwLCBUQ0FONFg1WF9DT05GSUcsCiYjNDM7CQkJCQkgVENBTjRYNVhfTU9ERV9TRUxfTUFTSywKJiM0MzsJCQkJCSBUQ0FONFg1WF9NT0RFX1NMRUVQKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O3NwaS0mZ3Q7ZGV2LCAmIzM0O1NldHRpbmcgc2xlZXAgbW9kZSBmYWlsZWQgJXBlXG4mIzM0OywKJiM0MzsJCQkJRVJSX1BUUihyZXQpKTsKJiM0MzsJfQomIzQzOwogCWlmIChJU19FUlJfT1JfTlVMTChyZWcpKQogCQlyZXR1cm4gMDsKIApAQCAtNDc2LDcgJiM0Mzs0OTksNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCQlnb3RvIG91dF9tX2Nhbl9jbGFzc19mcmVlX2RldjsKIAl9CiAKLQlyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDEpOwomIzQzOwlyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMSk7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7RW5hYmxpbmcgcmVndWxhdG9yIGZhaWxlZCAlcGVcbiYjMzQ7LAogCQkJRVJSX1BUUihyZXQpKTsKQEAgLTUzMSw3ICYjNDM7NTU0LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIAogb3V0X3Bvd2VyOgotCXRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LSZndDtwb3dlciwgMCk7CiYjNDM7CXRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTsKICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6CiAJbV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy0mZ3Q7bmV0KTsKIAlyZXR1cm4gcmV0OwpAQCAtNTQzLDcgJiM0Mzs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAKIAltX2Nhbl9jbGFzc191bnJlZ2lzdGVyKCZhbXA7cHJpdi0mZ3Q7Y2Rldik7CiAKLQl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi0mZ3Q7cG93ZXIsIDApOwomIzQzOwl0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7CiAKIAltX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LSZndDtjZGV2Lm5ldCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYwppbmRleCAyOWRlMGMwMWU0ZWRjLi4zN2MxYzIyYzQwYzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMKQEAgLTUwLDYgJiM0Mzs1MCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU2OHYzID0gewogCQlSS0NBTkZEX1FVSVJLX0NBTkZEX0JST0tFTiwKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHsKJiM0MzsJLm1vZGVsID0gUktDQU5GRF9NT0RFTF9SSzM1ODgsCiYjNDM7CS5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfAomIzQzOwkJUktDQU5GRF9RVUlSS19SSzM1NjhfRVJSQVRVTV82LAomIzQzO307CiYjNDM7CiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKQogewogCXN3aXRjaCAobW9kZWwpIHsKQEAgLTU3LDYgJiM0Mzs2Myw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpCiAJCXJldHVybiAmIzM0O3JrMzU2OHYyJiMzNDs7CiAJY2FzZSBSS0NBTkZEX01PREVMX1JLMzU2OFYzOgogCQlyZXR1cm4gJiMzNDtyazM1Njh2MyYjMzQ7OwomIzQzOwljYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OgomIzQzOwkJcmV0dXJuICYjMzQ7cmszNTg4JiMzNDs7CiAJfQogCiAJcmV0dXJuICYjMzQ7Jmx0O3Vua25vd24mZ3Q7JiMzNDs7CkBAIC0xNDgsNiAmIzQzOzE1NiwxMiBAQCBzdGF0aWMgaW50IHJrY2FuZmRfc2V0X2JpdHRpbWluZyhzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KQogCiAJcmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19GRF9EQVRBX0JJVFRJTUlORywgcmVnX2RidCk7CiAKJiM0MzsJLyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovCiYjNDM7CWlmIChwcml2LSZndDtkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHsKJiM0MzsJCXJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJdGRjbyA9IChwcml2LSZndDtjYW4uY2xvY2suZnJlcSAvIGRidC0mZ3Q7Yml0cmF0ZSkgKiAyIC8gMzsKIAl0ZGNvID0gbWluKHRkY28sIEZJRUxEX01BWChSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT05fVERDX09GRlNFVCkpOwogCkBAIC04NDYsNiAmIzQzOzg2MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrY2FuZmRfb2ZfbWF0Y2hbXSA9IHsKIAl9LCB7CiAJCS5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1Njh2My1jYW5mZCYjMzQ7LAogCQkuZGF0YSA9ICZhbXA7cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsCiYjNDM7CX0sIHsKJiM0MzsJCS5jb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1ODgtY2FuZmQmIzM0OywKJiM0MzsJCS5kYXRhID0gJmFtcDtya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsCiAJfSwgewogCQkvKiBzZW50aW5lbCAqLwogCX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jCkBAIC0yODEsNyAmIzQzOzI4MSwxMCBAQCBya2NhbmZkX3J4X2ZpZm9fZ2V0X2xlbihjb25zdCBzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KQogewogCWNvbnN0IHUzMiByZWcgPSBya2NhbmZkX3JlYWQocHJpdiwgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMKTsKIAotCXJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05ULCByZWcpOwomIzQzOwlpZiAocHJpdi0mZ3Q7ZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KQomIzQzOwkJcmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpOwomIzQzOwomIzQzOwlyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjgsIHJlZyk7CiB9CiAKIGludCBya2NhbmZkX2hhbmRsZV9yeF9pbnQoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmgKQEAgLTIxNCw3ICYjNDM7MjE0LDggQEAKICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKQogCiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCAweDExOAotI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KQomIzQzOyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCBHRU5NQVNLKDYsIDQpCiYjNDM7I2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSkKICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRlVMTF9XQVRFUk1BUksgR0VOTUFTSygzLCAxKQogI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19FTkFCTEUgQklUKDApCiAKQEAgLTMzMSw2ICYjNDM7MzMyLDExIEBACiAgKiByYXJlbHkgd2l0aCB0aGUgc3RhbmRhcmQgY2xvY2sgb2YgMzAwIE1IeiwgYnV0IGFsbW9zdCBpbW1lZGlhdGVseQogICogYXQgODAgTUh6LgogICoKJiM0MzsgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgZW1wdHkgRklGTyBjb25kaXRpb24uCiYjNDM7ICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1cwomIzQzOyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2UKJiM0MzsgKiB0aGUgYnVzIHJlYWNoZXMgYSBzdGVhZHkgc3RhdGUuCiYjNDM7ICoKICAqIFRvIHdvcmthcm91bmQgdGhpcyBwcm9ibGVtLCBjaGVjayBmb3IgZW1wdHkgRklGTyB3aXRoCiAgKiBya2NhbmZkX2ZpZm9faGVhZGVyX2VtcHR5KCkgaW4gcmtjYW5mZF9oYW5kbGVfcnhfaW50X29uZSgpIGFuZCBleGl0CiAgKiBlYXJseS4KQEAgLTM0NCw2ICYjNDM7MzUwLDggQEAKIC8qIEVycmF0dW0gNjogVGhlIENBTiBjb250cm9sbGVyJiMzOTtzIHRyYW5zbWlzc2lvbiBvZiBleHRlbmRlZCBmcmFtZXMgbWF5CiAgKiBpbnRlcm1pdHRlbnRseSBjaGFuZ2UgaW50byBzdGFuZGFyZCBmcmFtZXMKICAqCiYjNDM7ICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uCiYjNDM7ICoKICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZQogICogaGF2ZSBwZW5kaW5nIFRYIENBTiBmcmFtZXMsIGNoZWNrIGFsbCBSWCYjMzk7ZWQgQ0FOIGZyYW1lcyBpbgogICogcmtjYW5mZF9yeHN0eF9maWx0ZXIoKS4KQEAgLTQyNCw2ICYjNDM7NDMyLDkgQEAKICAqICAgICBjYW5zZXF1ZW5jZSAtcnYgLWkgMQogICoKICAqIC0gVFggc3RhcnZhdGlvbiBhZnRlciByZXBlYXRlZCBCdXMtT2ZmCiYjNDM7ICogICBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS4gSW4gYQomIzQzOyAqICAgMTAtY3ljbGUgQnVzLU9mZiByZWNvdmVyeSB0ZXN0LCA5IGN5Y2xlcyBmYWlsZWQgdG8gc2VuZCBhZnRlciB0aGUKJiM0MzsgKiAgIGNvbnRyb2xsZXIgcmVzdGFydGVkLgogICogICBUbyByZXByb2R1Y2U6CiAgKiAgIGhvc3Q6CiAgKiAgICAgc2xlZXAgMyAmYW1wOyZhbXA7IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wCkBAIC00MzQsNiAmIzQzOzQ0NSw3IEBACiBlbnVtIHJrY2FuZmRfbW9kZWwgewogCVJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLAogCVJLQ0FORkRfTU9ERUxfUkszNTY4VjMgPSAweDM1NjgzLAomIzQzOwlSS0NBTkZEX01PREVMX1JLMzU4OCA9IDB4MzU4OCwKIH07CiAKIHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYwppbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMKQEAgLTE1NjUsNyAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IGdzX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAogCWlmIChpY291bnQgJmd0OyB0eXBlX21heChwYXJlbnQtJmd0O2NoYW5uZWxfY250KSkgewogCQlkZXZfZXJyKCZhbXA7aW50Zi0mZ3Q7ZGV2LAotCQkJJiMzNDtEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcbiYjMzQ7LAomIzQzOwkJCSYjMzQ7RHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGFuICV1IENBTiBpbnRlcmZhY2VzXG4mIzM0OywKIAkJCXR5cGVfbWF4KHBhcmVudC0mZ3Q7Y2hhbm5lbF9jbnQpKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwppbmRleCBlODgyMjUwMTgwZWY2Li45ZTJlMjVkMDI0NzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYwpAQCAtMzMsNiAmIzQzOzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7CiAKIHN0cnVjdCB2eGNhbl9wcml2IHsKIAlzdHJ1Y3QgbmV0X2RldmljZSBfX3JjdQkqcGVlcjsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgcGVlcl90cmFja2VyOwogfTsKIAogc3RhdGljIG5ldGRldl90eF90IHZ4Y2FuX3htaXQoc3RydWN0IHNrX2J1ZmYgKm9za2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC0yNjgsOSAmIzQzOzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkvKiBjcm9zcyBsaW5rIHRoZSBkZXZpY2UgcGFpciAqLwogCXByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXJjdV9hc3NpZ25fcG9pbnRlcihwcml2LSZndDtwZWVyLCBwZWVyKTsKJiM0MzsJbmV0ZGV2X2hvbGQocGVlciwgJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpOwogCiAJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwogCXJjdV9hc3NpZ25fcG9pbnRlcihwcml2LSZndDtwZWVyLCBkZXYpOwomIzQzOwluZXRkZXZfaG9sZChkZXYsICZhbXA7cHJpdi0mZ3Q7cGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTsKIAogCXJldHVybiAwOwogCkBAIC0yODEsMjQgJiM0MzsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIHN0YXRpYyB2b2lkIHZ4Y2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIHsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgKnBlZXJfdHJhY2tlcjsKIAlzdHJ1Y3QgdnhjYW5fcHJpdiAqcHJpdjsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjsKIAogCXByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwotCXBlZXIgPSBydG5sX2RlcmVmZXJlbmNlKHByaXYtJmd0O3BlZXIpOwomIzQzOwlwZWVyX3RyYWNrZXIgPSAmYW1wO3ByaXYtJmd0O3BlZXJfdHJhY2tlcjsKJiM0MzsJcGVlciA9IHVucmN1X3BvaW50ZXIoeGNoZygmYW1wO3ByaXYtJmd0O3BlZXIsIE5VTEwpKTsKJiM0MzsJaWYgKCFwZWVyKQomIzQzOwkJcmV0dXJuOwogCi0JLyogTm90ZSA6IGRlbGxpbmsoKSBpcyBjYWxsZWQgZnJvbSBkZWZhdWx0X2RldmljZV9leGl0X2JhdGNoKCksCi0JICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkCi0JICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC4KLQkgKi8KLQlSQ1VfSU5JVF9QT0lOVEVSKHByaXYtJmd0O3BlZXIsIE5VTEwpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CiAKLQlpZiAocGVlcikgewotCQlwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7Ci0JCVJDVV9JTklUX1BPSU5URVIocHJpdi0mZ3Q7cGVlciwgTlVMTCk7Ci0JCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpOwotCX0KJiM0MzsJcHJpdiA9IG5ldGRldl9wcml2KHBlZXIpOwomIzQzOwlkZXYgPSB1bnJjdV9wb2ludGVyKHhjaGcoJmFtcDtwcml2LSZndDtwZWVyLCBOVUxMKSk7CiYjNDM7CWlmIChkZXYpCiYjNDM7CQl1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZV9uZXQoZGV2X25ldChkZXYpLCBwZWVyLCBoZWFkKTsKJiM0MzsKJiM0MzsJbmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpOwomIzQzOwluZXRkZXZfcHV0KGRldiwgJmFtcDtwcml2LSZndDtwZWVyX3RyYWNrZXIpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhjYW5fcG9saWN5W1ZYQ0FOX0lORk9fTUFYICYjNDM7IDFdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMjM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ5OAoJCQkJCQkJb3V0cHV0OiAxNjUKCQkJCQkJCXRob3VnaHRzOiAxNzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFNlcmllcyBSZXZpZXc6IENBTiBEcml2ZXIgVXBkYXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHNldCBvZiB1cGRhdGVzIGFjcm9zcyB2YXJpb3VzIENBTiBkcml2ZXJzLiBOb3RoaW5nIGhlcmUgc2NyZWFtcyAmIzM0O2NyaXRpY2FsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkmIzM0OyBhdCBmaXJzdCBnbGFuY2UsIGJ1dCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGVuc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLgoKRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyB0byB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sYCwgYHRpLGFtMzUxNy1oZWNjLnlhbWxgLCBhbmQgYHhpbGlueCxjYW4ueWFtbGAuIFRoZXNlIGFyZSBjcml0aWNhbCBmb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgYnV0IEkgZG9uJiMzOTt0IGFudGljaXBhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBpbiB0aGVzZSBtb2RpZmljYXRpb25zIGFsb25lLiBXZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2VzIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLiBEb2N1bWVudGF0aW9uIGlzIGFsc28gdXBkYXRlZCAoYGZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnYCBhbmQgYE1BSU5UQUlORVJTYCksIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2VzLiBJbiBgbV9jYW4uY2AsIGl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgdXBkYXRlIHRvIGhvdyB0aGUgJiMzNDt3YWtldXAtc291cmNlJiMzNDsgcHJvcGVydHkgaXMgcmVhZCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggc2hvdWxkbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBzZWN1cml0eSBjb25jZXJucy4gU2ltaWxhcmx5LCB0aGUgYG1fY2FuX3BjaS5jYCBjaGFuZ2UganVzdCBmaXhlcyB0aGUgY2xvY2sgZnJlcXVlbmN5LCBtYWtpbmcgc3VyZSB0aGUgZGV2aWNlIGdldHMgdGhlIGNvcnJlY3QgY2xvY2sgcmF0ZS4KClRoZSBtb3N0IGludGVyZXN0aW5nIGNoYW5nZSBpcyBpbiBgdnhjYW4uY2AuIEhlcmUsIHdlIHNlZSBhIGNvcnJlY3Rpb24gdXNpbmcgYG5ldGRldmljZV90cmFja2VyYCB0byBoYW5kbGUgcmVmY291bnRpbmcgb24gdGhlIHBlZXIgZGV2aWNlcyBpbiB0aGUgdmlydHVhbCBDQU4gaW50ZXJmYWNlLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBhIHNvbGlkIGZpeCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB3ZSB3YW50IHRvIHNlZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBgdnhjYW4uY2AsIEtBU0FOIHNob3VsZCBiZSBhYmxlIHRvIGNhdGNoIHRoZSByZWZjb3VudCBlcnJvcnMsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIHJldmlldy4KClRoZSBgdGNhbjR4NXgtY29yZS5jYCB1cGRhdGUgc2VlbXMgZm9jdXNlZCBvbiBlbmFibGluZyBzbGVlcCBtb2RlIGluIHRoZSBoYXJkd2FyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGJ1Z3MgdGhhdCByZXF1aXJlIEtBU0FOIHRvIGNhdGNoLCBidXQgaXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgc2VjdXJpdHktcmVsZXZhbnQuIEl0JiMzOTtzIGltcG9ydGFudCBmb3IgcG93ZXIgbWFuYWdlbWVudCwgYnV0IHRoZSBjb3JlIGZ1bmN0aW9uIGlzIGp1c3QgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGhhcmR3YXJlIGZlYXR1cmVzLgoKVGhlIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgY2hhbmdlcyBhZGQgc3VwcG9ydCBmb3IgdGhlIFJLMzU4OCBTT0MuIFRoaXMgdXN1YWxseSByZXF1aXJlcyB2ZXJ5IGNhcmVmdWwgcmV2aWV3LiBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2VzIHNpbXBseSBpbnZvbHZlIHNlbGVjdGluZyB0aGUgY29ycmVjdCByZWdpc3RlciBmaWVsZHMgYmFzZWQgb24gdGhlIGRldmljZSBtb2RlbC4gSXQgYXBwZWFycyB0aGF0IHRoZSB1cGRhdGUgaXMgZG9uZSBpbiBhbiBleHBsaWNpdCwgc2FmZSB3YXkuCgpGaW5hbGx5LCB3ZSBoYXZlIGEgdHlwbyBmaXggaW4gYGdzX3VzYi5jYC4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGVzZSBjaGFuZ2VzIGFyZSBhIG1peCBvZiBkZXZpY2UgdHJlZSB1cGRhdGVzLCBoYXJkd2FyZS1zcGVjaWZpYyBmaXhlcywgYW5kIGJ1ZyBmaXhlcyBmb3IgdGhlIGRyaXZlcnMuIE1vc3QgaW1wb3J0YW50bHksIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBzZWVtIHRvIGludHJvZHVjZSBuZXcgdmVjdG9ycyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gVGhlIGB2eGNhbi5jYCBmaXggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHJlZmNvdW50aW5nL1VBRiwgYSBjbGFzc2ljIHByb2JsZW0gdGhhdCYjMzk7cyBhbHJlYWR5IHdlbGwtdW5kZXJzdG9vZCBhbmQgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTi4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGRvZXMgKm5vdCogd2FycmFudCBhIGBOZWVkc0tNU0FOYCBsYWJlbC4gVGhlIGZvY3VzIGlzIG1vcmUgb24gc3RhYmlsaXR5IGFuZCBoYXJkd2FyZSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAyMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGRldmljZSB0cmVlIGJpbmRpbmcgdXBkYXRlcywgaGFyZHdhcmUgZHJpdmVyIGZpeGVzIChzbGVlcCBtb2RlIGhhbmRsaW5nIGluIHRjYW40eDV4LCBSSzM1ODggc3VwcG9ydCBpbiByb2NrY2hpcF9jYW5mZCwgY2xvY2sgZnJlcXVlbmN5IGluIG1fY2FuX3BjaSksIGFuZCBhIHJlZmNvdW50aW5nL1VBRiBmaXggaW4gdnhjYW4uYyB1c2luZyBuZXRkZXZpY2VfdHJhY2tlci4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBtb2RpZnkgYm91bmRzIGNoZWNraW5nIGluIGEgd2F5IHRoYXQgZXhwb3NlcyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgc3RhdGUuIFRoZSB2eGNhbi5jIGZpeCBhZGRyZXNzZXMgYSB1c2UtYWZ0ZXItZnJlZS9yZWZjb3VudGluZyBpc3N1ZSB3aGljaCBpcyBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDcuMzEzOTg5NzAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwOTI4MTA0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGNhbl9uZXdsaW5rYCBhbmQgYHZ4Y2FuX2RlbGxpbmtgIGluIHRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyIChgdnhjYW5gKSB0byB1c2UgYG5ldGRldmljZV90cmFja2VyYCBmb3IgcGVlciBkZXZpY2VzLCBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50aW5nIGlzc3Vlcy4gU2luY2UgYHZ4Y2FuYCBpcyBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCB0aGVzZSBjaGFuZ2VzIGFyZSBlYXNpbHkgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiBPdGhlciBjaGFuZ2VzIGluIHRoZSBzZXJpZXMgYXJlIGVpdGhlciBkb2N1bWVudGF0aW9uLCB0eXBvIGZpeGVzLCBvciBhZmZlY3QgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoU1BJLCBSb2NrY2hpcCwgUENJKSBub3QgZWFzaWx5IGVtdWxhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzowNy4zMTM5OTQ2MTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTMwNzM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmY5Y2UxNTA5MzA3MDMxMjkyOGE1ZjY5NTYxYzFhNDc2ZDczODRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXFxuaW5kZXggYTA3N2MwMzMwMDEzNy4uODFlMmI2ZGZlYjAyMyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxcbkBAIC0xNiw3ICsxNiw5IEBAIGFsbE9mOlxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuICAgICBvbmVPZjpcXG4tICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcXG4rICAgICAgLSBlbnVtOlxcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1ODgtY2FuZmRcXG4gICAgICAgLSBpdGVtczpcXG4gICAgICAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXFxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzg3NGU5ZTQ5MjI0NFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXFxuQEAgLTAsMCArMSw2NCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEVkdWFyZCBCb3N0aW5hIFxcdTAwM2NlZ2Jvc3RpbmFAZ21haWwuY29tXFx1MDAzZVxcbitcXG4rYWxsT2Y6XFxuKyAgLSAkcmVmOiBjYW4tY29udHJvbGxlci55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAzXFxuK1xcbisgIHJlZy1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBoZWNjXFxuKyAgICAgIC0gY29uc3Q6IGhlY2MtcmFtXFxuKyAgICAgIC0gY29uc3Q6IG1ieFxcbitcXG4rICBpbnRlcnJ1cHRzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgY2xvY2tzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgdGksdXNlLWhlY2MxaW50OlxcbisgICAgdHlwZTogYm9vbGVhblxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIElmIHByb3ZpZGVkLCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cyBvbiB0aGVcXG4rICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZVxcbisgICAgICB3aWxsIGJlIHVzZWQuXFxuKyAgICBkZWZhdWx0OiBmYWxzZVxcbitcXG4rICB4Y2VpdmVyLXN1cHBseTpcXG4rICAgIGRlc2NyaXB0aW9uOiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlci5cXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSByZWctbmFtZXNcXG4rICAtIGludGVycnVwdHNcXG4rICAtIGNsb2Nrc1xcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICBjYW5ANWMwNTAwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwidGksYW0zNTE3LWhlY2NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDVjMDUwMDAwIDB4ODBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDVjMDUzMDAwIDB4MTgwXFx1MDAzZSxcXG4rICAgICAgICAgICAgICBcXHUwMDNjMHg1YzA1MjAwMCAweDIwMFxcdTAwM2U7XFxuKyAgICAgICAgcmVnLW5hbWVzID0gXFxcImhlY2NcXFwiLCBcXFwiaGVjYy1yYW1cXFwiLCBcXFwibWJ4XFxcIjtcXG4rICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzI0XFx1MDAzZTtcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmhlY2NfY2tcXHUwMDNlO1xcbisgICAgfTtcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxcbisrKyAvZGV2L251bGxcXG5AQCAtMSwzMiArMCwwIEBAXFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxcbi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4tXFxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcXG4tZm9yIHRoZSBoZWNjIGludGVyZmFjZSBjb250YWlucy5cXG4tXFxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XFxuLS0gY29tcGF0aWJsZTogXFxcInRpLGFtMzUxNy1oZWNjXFxcIlxcbi0tIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdoZWNjJywgJ2hlY2MtcmFtJ1xcbi0gICAgICAgYW5kICdtYngnXFxuLS0gcmVnLW5hbWVzIDpcXFwiaGVjY1xcXCIsIFxcXCJoZWNjLXJhbVxcXCIsIFxcXCJtYnhcXFwiXFxuLS0gaW50ZXJydXB0czogaW50ZXJydXB0IG1hcHBpbmcgZm9yIHRoZSBoZWNjIGludGVycnVwdHMgc291cmNlc1xcbi0tIGNsb2NrczogY2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscylcXG4tXFxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XFxuLS0gdGksdXNlLWhlY2MxaW50OiBpZiBwcm92aWRlZCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0c1xcbi1cXHRcXHQgICBvbiBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCBIRUNDMElOVCBpbnRlcnJ1cHRcXG4tXFx0XFx0ICAgbGluZSB3aWxsIGJlIHVzZWQuXFxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXFxuLVxcbi1FeGFtcGxlOlxcbi1cXG4tRm9yIGFtMzUxN2V2bSBib2FyZDpcXG4tXFx0aGVjYzogY2FuQDVjMDUwMDAwIHtcXG4tXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ0aSxhbTM1MTctaGVjY1xcXCI7XFxuLVxcdFxcdHJlZyA9IFxcdTAwM2MweDVjMDUwMDAwIDB4ODBcXHUwMDNlLFxcbi1cXHRcXHQgICAgICBcXHUwMDNjMHg1YzA1MzAwMCAweDE4MFxcdTAwM2UsXFxuLVxcdFxcdCAgICAgIFxcdTAwM2MweDVjMDUyMDAwIDB4MjAwXFx1MDAzZTtcXG4tXFx0XFx0cmVnLW5hbWVzID0gXFxcImhlY2NcXFwiLCBcXFwiaGVjYy1yYW1cXFwiLCBcXFwibWJ4XFxcIjtcXG4tXFx0XFx0aW50ZXJydXB0cyA9IFxcdTAwM2MyNFxcdTAwM2U7XFxuLVxcdFxcdGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2aGVjY19ja1xcdTAwM2U7XFxuLVxcdH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxcbmluZGV4IDQwODM1NDk3MDUwYTUuLjE4MDE1ZTYwZmQ2ZDYgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXFxuQEAgLTgsNyArOCw3IEBAIHRpdGxlOlxcbiAgIFhpbGlueCBDQU4gYW5kIENBTkZEIGNvbnRyb2xsZXJcXG4gXFxuIG1haW50YWluZXJzOlxcbi0gIC0gQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyBcXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXFx1MDAzZVxcbisgIC0gSGFyaW5pIFQgXFx1MDAzY2hhcmluaS50QGFtZC5jb21cXHUwMDNlXFxuIFxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuQEAgLTUzLDYgKzUzLDkgQEAgcHJvcGVydGllczpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcXG4gICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pXFxuIFxcbisgIHBoeXM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xcbmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xcbkBAIC05Myw5ICs5Myw5IEBAXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDQuODI3XFxcIiBjeT1cXFwiMTU5LjE0M1xcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCI1OS40MzY0XFxcIiBjeT1cXFwiMTQyLjgyM1xcXCIgcng9XFxcIjcuMzY0NTVcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuICAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDQuODI3XFxcIiBjeT1cXFwiMTI5LjE5NlxcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIi9cXHUwMDNlXFxuLSAgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDMuMDc3XFxcIiBjeT1cXFwiMTgwLjUzXFxcIiByeD1cXFwiMTAuODg2NlxcXCIgcnk9XFxcIjQuMzkzMDhcXFwiL1xcdTAwM2VcXG4gICBcXHUwMDNjL2dcXHUwMDNlXFxuLSAgXFx1MDAzY2VsbGlwc2UgY3g9XFxcIjExMC4zODZcXFwiIGN5PVxcXCIxODAuNTNcXFwiIHJ4PVxcXCIxMC44ODY2XFxcIiByeT1cXFwiNC4zOTMwOFxcXCIgZmlsbD1cXFwiI2ZmY2IzNVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2UtbGluZWNhcD1cXFwic3F1YXJlXFxcIiBzdHJva2Utd2lkdGg9XFxcIi40OTk5OTlcXFwiL1xcdTAwM2VcXG4rICBcXHUwMDNjZWxsaXBzZSBjeD1cXFwiMTEwLjM4NlxcXCIgY3k9XFxcIjE4MC41M1xcXCIgcng9XFxcIjEwLjg4NjZcXFwiIHJ5PVxcXCI0LjM5MzA4XFxcIiBmaWxsPVxcXCIjMjhhNGZmXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJzcXVhcmVcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjQ5OTk5OVxcXCIvXFx1MDAzZVxcbisgIFxcdTAwM2NlbGxpcHNlIGN4PVxcXCIxNDMuMDc3XFxcIiBjeT1cXFwiMTgwLjUzXFxcIiByeD1cXFwiMTAuODg2NlxcXCIgcnk9XFxcIjQuMzkzMDhcXFwiIGZpbGw9XFxcIiNmZmNiMzVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInNxdWFyZVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNDk5OTk5XFxcIi9cXHUwMDNlXFxuICAgXFx1MDAzY3RleHQgeD1cXFwiMTEwLjkwOTA3XFxcIiB5PVxcXCIxNzkuNDI2ODhcXFwiIGZvbnQtc2l6ZT1cXFwiMy4xNzVweFxcXCIgeG1sOnNwYWNlPVxcXCJwcmVzZXJ2ZVxcXCJcXHUwMDNlXFx1MDAzY3RzcGFuIHg9XFxcIjExMC45MDkwN1xcXCIgeT1cXFwiMTc5LjQyNjg4XFxcIiBkeT1cXFwiMC42MDAwMDAwMlxcXCIgdGV4dC1hbGlnbj1cXFwiY2VudGVyXFxcIiB0ZXh0LWFuY2hvcj1cXFwibWlkZGxlXFxcIlxcdTAwM2VBY2Nlc3NpYmxlXFx1MDAzYy90c3BhblxcdTAwM2VcXHUwMDNjdHNwYW4geD1cXFwiMTEwLjkwOTA3XFxcIiB5PVxcXCIxODMuMzk1NjNcXFwiXFx1MDAzZVxcdTAwM2N0c3BhbiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCJcXHUwMDNlZm9yIFNcXHUwMDNjL3RzcGFuXFx1MDAzZVdcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2MvdGV4dFxcdTAwM2VcXG4gICBcXHUwMDNjdGV4dCB4PVxcXCIxNDMuNTg2OVxcXCIgeT1cXFwiMTc5LjUyNzk1XFxcIiB4bWw6c3BhY2U9XFxcInByZXNlcnZlXFxcIlxcdTAwM2VcXHUwMDNjdHNwYW4geD1cXFwiMTQzLjU4NjlcXFwiIHk9XFxcIjE3OS41Mjc5NVxcXCIgZHk9XFxcIjEgMCAwIDAgMCAwXFxcIiBmb250LWZhbWlseT1cXFwic2Fucy1zZXJpZlxcXCIgZm9udC1zaXplPVxcXCIyLjgyMjIycHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCIgc3R5bGU9XFxcImZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsXFxcIlxcdTAwM2VJbmFjY2Vzc2libGVcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2N0c3BhbiB4PVxcXCIxNDMuNTg2OVxcXCIgeT1cXFwiMTgzLjM2Nzg2XFxcIiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiXFx1MDAzZVxcdTAwM2N0c3BhbiBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiIHRleHQtYWxpZ249XFxcImNlbnRlclxcXCIgdGV4dC1hbmNob3I9XFxcIm1pZGRsZVxcXCJcXHUwMDNlZm9yIFNcXHUwMDNjL3RzcGFuXFx1MDAzZVdcXHUwMDNjL3RzcGFuXFx1MDAzZVxcdTAwM2MvdGV4dFxcdTAwM2VcXG4gICBcXHUwMDNjZyBmb250LXNpemU9XFxcIjMuMTc1cHhcXFwiXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggOTkxNDYwMDUwZGE3NC4uNmI0OWEyYzgwY2Q1ZCAxMDA2NDRcXG4tLS0gYS9NQUlOVEFJTkVSU1xcbisrKyBiL01BSU5UQUlORVJTXFxuQEAgLTI5NTczLDcgKzI5NTczLDcgQEAgRjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWxcXG4gRjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXFxuIFxcbiBYSUxJTlggQ0FOIERSSVZFUlxcbi1NOlxcdEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVxcdTAwM2VcXG4rTTpcXHRIYXJpbmkgVCBcXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVxcdTAwM2VcXG4gTDpcXHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXFxuIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXFxuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXFxuQEAgLTI0NjQsNyArMjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGRldi1cXHUwMDNlb2Zfbm9kZSBcXHUwMDI2XFx1MDAyNiBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwid2FrZXVwLXNvdXJjZVxcXCIpKVxcbitcXHRpZiAoZGV2LVxcdTAwM2VvZl9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwid2FrZXVwLXNvdXJjZVxcXCIpKVxcbiBcXHRcXHRkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKGRldiwgdHJ1ZSk7XFxuIFxcbiBcXHQvKiBHZXQgVFggRklGTyBzaXplXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xcbmluZGV4IGViMzFlZDFmOTY0NDkuLmQxMWE3Yzg4ZmMzMmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXFxuQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgaW50IG1fY2FuX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZW5ldC1cXHUwMDNlaXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcXG4gXFx0bWNhbl9jbGFzcy1cXHUwMDNlcG1fY2xvY2tfc3VwcG9ydCA9IDE7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZXBtX3dha2Vfc291cmNlID0gMDtcXG4tXFx0bWNhbl9jbGFzcy1cXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuK1xcdG1jYW5fY2xhc3MtXFx1MDAzZWNhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZWlycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7XFxuIFxcdG1jYW5fY2xhc3MtXFx1MDAzZW9wcyA9IFxcdTAwMjZtX2Nhbl9wY2lfb3BzO1xcbiBcXG5AQCAtMTgzLDggKzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxcbiBcXHRcXHRcXHQgbV9jYW5fcGNpX3N1c3BlbmQsIG1fY2FuX3BjaV9yZXN1bWUpO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xcbi1cXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcXG4tXFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXFxuK1xcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSxcXG4rXFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxcbiBcXHR7ICB9XFx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1fY2FuX3BjaV9pZF90YWJsZSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXFxuaW5kZXggMzFjYzlkMGFiZDQ1My4uYTViODgyOWFhNTE5MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xcbkBAIC0yMTEsOCArMjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXFxuIFxcdHJldHVybiByZWdtYXBfYnVsa193cml0ZShwcml2LVxcdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgKyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpXFxuK3N0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCB0Y2FuNHg1eF9wcml2ICpwcml2LCBpbnQgZW5hYmxlKVxcbiB7XFxuK1xcdHN0cnVjdCByZWd1bGF0b3IgKnJlZyA9IHByaXYtXFx1MDAzZXBvd2VyO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHV0IHRoZSBkZXZpY2UgaW50byBzbGVlcCBtb2RlIGlmIHRoZSBSU1QgcGluIGlzIGF2YWlsYWJsZSxcXG4rXFx0ICogc2luY2UgYSB3YWtlLXVwIGV2ZW50LCBSU1QgcGluIHRvZ2dsZSwgb3IgcG93ZXIgY3ljbGUgYXJlIHRoZSBvbmx5XFxuK1xcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxcbitcXHQgKiBSZWR1bmRhbnQgaWYgdGhlIHJlZ3VsYXRvciBpcyBleGNsdXNpdmUgdG8gdGhpcyBkZXZpY2UsIGJ1dCB0aGF0XFxuK1xcdCAqIGNhbid0IGJlIGRldGVybWluZWQgaGVyZS5cXG4rXFx0ICpcXG4rXFx0ICogRGF0YXNoZWV0OiBUQ0FONDU1MCwgc2VjdGlvbiBcXFwiOC40LjMgU2xlZXAgTW9kZVxcXCJcXG4rXFx0ICogaHR0cHM6Ly93d3cudGkuY29tL2xpdC9ncG4vdGNhbjQ1NTBcXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNldF9ncGlvIFxcdTAwMjZcXHUwMDI2ICFlbmFibGUpIHtcXG4rXFx0XFx0aW50IHJldDtcXG4rXFxuK1xcdFxcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVxcdTAwM2VyZWdtYXAsIFRDQU40WDVYX0NPTkZJRyxcXG4rXFx0XFx0XFx0XFx0XFx0IFRDQU40WDVYX01PREVfU0VMX01BU0ssXFxuK1xcdFxcdFxcdFxcdFxcdCBUQ0FONFg1WF9NT0RFX1NMRUVQKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlc3BpLVxcdTAwM2VkZXYsIFxcXCJTZXR0aW5nIHNsZWVwIG1vZGUgZmFpbGVkICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNDc2LDcgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdFxcdGdvdG8gb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2O1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cXHUwMDNlcG93ZXIsIDEpO1xcbitcXHRyZXQgPSB0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMSk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJFbmFibGluZyByZWd1bGF0b3IgZmFpbGVkICVwZVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG5AQCAtNTMxLDcgKzU1NCw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gb3V0X3Bvd2VyOlxcbi1cXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cXHUwMDNlcG93ZXIsIDApO1xcbitcXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XFxuICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6XFxuIFxcdG1fY2FuX2NsYXNzX2ZyZWVfZGV2KG1jYW5fY2xhc3MtXFx1MDAzZW5ldCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTU0Myw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcbiBcXHRtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKFxcdTAwMjZwcml2LVxcdTAwM2VjZGV2KTtcXG4gXFxuLVxcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVxcdTAwM2Vwb3dlciwgMCk7XFxuK1xcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcXG4gXFxuIFxcdG1fY2FuX2NsYXNzX2ZyZWVfZGV2KHByaXYtXFx1MDAzZWNkZXYubmV0KTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcXG5AQCAtNTAsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHtcXG4gXFx0XFx0UktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sXFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHtcXG4rXFx0Lm1vZGVsID0gUktDQU5GRF9NT0RFTF9SSzM1ODgsXFxuK1xcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxcbitcXHRcXHRSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzYsXFxuK307XFxuK1xcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxcbiB7XFxuIFxcdHN3aXRjaCAobW9kZWwpIHtcXG5AQCAtNTcsNiArNjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxcbiBcXHRcXHRyZXR1cm4gXFxcInJrMzU2OHYyXFxcIjtcXG4gXFx0Y2FzZSBSS0NBTkZEX01PREVMX1JLMzU2OFYzOlxcbiBcXHRcXHRyZXR1cm4gXFxcInJrMzU2OHYzXFxcIjtcXG4rXFx0Y2FzZSBSS0NBTkZEX01PREVMX1JLMzU4ODpcXG4rXFx0XFx0cmV0dXJuIFxcXCJyazM1ODhcXFwiO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gXFxcIlxcdTAwM2N1bmtub3duXFx1MDAzZVxcXCI7XFxuQEAgLTE0OCw2ICsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcXG4gXFxuIFxcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpO1xcbiBcXG4rXFx0LyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcXG4rXFx0XFx0cmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT04sIDApO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0dGRjbyA9IChwcml2LVxcdTAwM2VjYW4uY2xvY2suZnJlcSAvIGRidC1cXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcXG4gXFx0dGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTtcXG4gXFxuQEAgLTg0Niw2ICs4NjAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya2NhbmZkX29mX21hdGNoW10gPSB7XFxuIFxcdH0sIHtcXG4gXFx0XFx0LmNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4djMtY2FuZmRcXFwiLFxcbiBcXHRcXHQuZGF0YSA9IFxcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyxcXG4rXFx0fSwge1xcbitcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1ODgtY2FuZmRcXFwiLFxcbitcXHRcXHQuZGF0YSA9IFxcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsXFxuIFxcdH0sIHtcXG4gXFx0XFx0Lyogc2VudGluZWwgKi9cXG4gXFx0fSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xcbmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xcbkBAIC0yODEsNyArMjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xcbiBcXG4tXFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpXFxuK1xcdFxcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTtcXG4rXFxuK1xcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCwgcmVnKTtcXG4gfVxcbiBcXG4gaW50IHJrY2FuZmRfaGFuZGxlX3J4X2ludChzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaCBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXFxuaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXFxuQEAgLTIxNCw3ICsyMTQsOCBAQFxcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMClcXG4gXFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XFxuLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNClcXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4IEdFTk1BU0soNiwgNClcXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSlcXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19GVUxMX1dBVEVSTUFSSyBHRU5NQVNLKDMsIDEpXFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fRU5BQkxFIEJJVCgwKVxcbiBcXG5AQCAtMzMxLDYgKzMzMiwxMSBAQFxcbiAgKiByYXJlbHkgd2l0aCB0aGUgc3RhbmRhcmQgY2xvY2sgb2YgMzAwIE1IeiwgYnV0IGFsbW9zdCBpbW1lZGlhdGVseVxcbiAgKiBhdCA4MCBNSHouXFxuICAqXFxuKyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBlbXB0eSBGSUZPIGNvbmRpdGlvbi5cXG4rICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1c1xcbisgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlXFxuKyAqIHRoZSBidXMgcmVhY2hlcyBhIHN0ZWFkeSBzdGF0ZS5cXG4rICpcXG4gICogVG8gd29ya2Fyb3VuZCB0aGlzIHByb2JsZW0sIGNoZWNrIGZvciBlbXB0eSBGSUZPIHdpdGhcXG4gICogcmtjYW5mZF9maWZvX2hlYWRlcl9lbXB0eSgpIGluIHJrY2FuZmRfaGFuZGxlX3J4X2ludF9vbmUoKSBhbmQgZXhpdFxcbiAgKiBlYXJseS5cXG5AQCAtMzQ0LDYgKzM1MCw4IEBAXFxuIC8qIEVycmF0dW0gNjogVGhlIENBTiBjb250cm9sbGVyJ3MgdHJhbnNtaXNzaW9uIG9mIGV4dGVuZGVkIGZyYW1lcyBtYXlcXG4gICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzXFxuICAqXFxuKyAqIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLlxcbisgKlxcbiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2VcXG4gICogaGF2ZSBwZW5kaW5nIFRYIENBTiBmcmFtZXMsIGNoZWNrIGFsbCBSWCdlZCBDQU4gZnJhbWVzIGluXFxuICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuXFxuQEAgLTQyNCw2ICs0MzIsOSBAQFxcbiAgKiAgICAgY2Fuc2VxdWVuY2UgLXJ2IC1pIDFcXG4gICpcXG4gICogLSBUWCBzdGFydmF0aW9uIGFmdGVyIHJlcGVhdGVkIEJ1cy1PZmZcXG4rICogICBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS4gSW4gYVxcbisgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlXFxuKyAqICAgY29udHJvbGxlciByZXN0YXJ0ZWQuXFxuICAqICAgVG8gcmVwcm9kdWNlOlxcbiAgKiAgIGhvc3Q6XFxuICAqICAgICBzbGVlcCAzIFxcdTAwMjZcXHUwMDI2IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wXFxuQEAgLTQzNCw2ICs0NDUsNyBAQFxcbiBlbnVtIHJrY2FuZmRfbW9kZWwge1xcbiBcXHRSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MixcXG4gXFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXFxuK1xcdFJLQ0FORkRfTU9ERUxfUkszNTg4ID0gMHgzNTg4LFxcbiB9O1xcbiBcXG4gc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXFxuQEAgLTE1NjUsNyArMTU2NSw3IEBAIHN0YXRpYyBpbnQgZ3NfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiBcXG4gXFx0aWYgKGljb3VudCBcXHUwMDNlIHR5cGVfbWF4KHBhcmVudC1cXHUwMDNlY2hhbm5lbF9jbnQpKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNmludGYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFxcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhdCAldSBDQU4gaW50ZXJmYWNlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFxcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0dHlwZV9tYXgocGFyZW50LVxcdTAwM2VjaGFubmVsX2NudCkpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXFxuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXFxuQEAgLTMzLDYgKzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7XFxuIFxcbiBzdHJ1Y3QgdnhjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1XFx0KnBlZXI7XFxuK1xcdG5ldGRldmljZV90cmFja2VyIHBlZXJfdHJhY2tlcjtcXG4gfTtcXG4gXFxuIHN0YXRpYyBuZXRkZXZfdHhfdCB2eGNhbl94bWl0KHN0cnVjdCBza19idWZmICpvc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC0yNjgsOSArMjY5LDExIEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHQvKiBjcm9zcyBsaW5rIHRoZSBkZXZpY2UgcGFpciAqL1xcbiBcXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXFx1MDAzZXBlZXIsIHBlZXIpO1xcbitcXHRuZXRkZXZfaG9sZChwZWVyLCBcXHUwMDI2cHJpdi1cXHUwMDNlcGVlcl90cmFja2VyLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXFx1MDAzZXBlZXIsIGRldik7XFxuK1xcdG5ldGRldl9ob2xkKGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTI4MSwyNCArMjg0LDI1IEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiB7XFxuK1xcdG5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7XFxuIFxcdHN0cnVjdCB2eGNhbl9wcml2ICpwcml2O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqcGVlcjtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbi1cXHRwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LVxcdTAwM2VwZWVyKTtcXG4rXFx0cGVlcl90cmFja2VyID0gXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlcjtcXG4rXFx0cGVlciA9IHVucmN1X3BvaW50ZXIoeGNoZyhcXHUwMDI2cHJpdi1cXHUwMDNlcGVlciwgTlVMTCkpO1xcbitcXHRpZiAoIXBlZXIpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuLVxcdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxcbi1cXHQgKiBiZWZvcmUgYSByY3Vfc3luY2hyb25pemUoKSBwb2ludC4gVGhlIGRldmljZXMgYXJlIGd1YXJhbnRlZWRcXG4tXFx0ICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC5cXG4tXFx0ICovXFxuLVxcdFJDVV9JTklUX1BPSU5URVIocHJpdi1cXHUwMDNlcGVlciwgTlVMTCk7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XFxuIFxcbi1cXHRpZiAocGVlcikge1xcbi1cXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7XFxuLVxcdFxcdFJDVV9JTklUX1BPSU5URVIocHJpdi1cXHUwMDNlcGVlciwgTlVMTCk7XFxuLVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xcbi1cXHR9XFxuK1xcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcXG4rXFx0ZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKFxcdTAwMjZwcml2LVxcdTAwM2VwZWVyLCBOVUxMKSk7XFxuK1xcdGlmIChkZXYpXFxuK1xcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xcbitcXG4rXFx0bmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpO1xcbitcXHRuZXRkZXZfcHV0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXBlZXJfdHJhY2tlcik7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGNhbl9wb2xpY3lbVlhDQU5fSU5GT19NQVggKyAxXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDguODA3Njc5MTA4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDUxNjE4NjM3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNiZjljZTE1MDkzMDcwMzEyOTI4YTVmNjk1NjFjMWE0NzZkNzM4NGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAyMzo0NzowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5pbmRleCBhMDc3YzAzMzAwMTM3Li44MWUyYjZkZmViMDIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbFxuQEAgLTE2LDcgKzE2LDkgQEAgYWxsT2Y6XG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4gICAgIG9uZU9mOlxuLSAgICAgIC0gY29uc3Q6IHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4rICAgICAgLSBlbnVtOlxuKyAgICAgICAgICAtIHJvY2tjaGlwLHJrMzU2OHYyLWNhbmZkXG4rICAgICAgICAgIC0gcm9ja2NoaXAscmszNTg4LWNhbmZkXG4gICAgICAgLSBpdGVtczpcbiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djMtY2FuZmRcbiAgICAgICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjc4NzRlOWU0OTIyNDRcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWxcbkBAIC0wLDAgKzEsNjQgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcbislWUFNTCAxLjJcbistLS1cbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEVkdWFyZCBCb3N0aW5hIFx1MDAzY2VnYm9zdGluYUBnbWFpbC5jb21cdTAwM2VcbitcbithbGxPZjpcbisgIC0gJHJlZjogY2FuLWNvbnRyb2xsZXIueWFtbCNcbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHRpLGFtMzUxNy1oZWNjXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAzXG4rXG4rICByZWctbmFtZXM6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gY29uc3Q6IGhlY2NcbisgICAgICAtIGNvbnN0OiBoZWNjLXJhbVxuKyAgICAgIC0gY29uc3Q6IG1ieFxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIGNsb2NrczpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHRpLHVzZS1oZWNjMWludDpcbisgICAgdHlwZTogYm9vbGVhblxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBJZiBwcm92aWRlZCwgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHMgb24gdGhlXG4rICAgICAgSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQsIHRoZSBIRUNDMElOVCBpbnRlcnJ1cHQgbGluZVxuKyAgICAgIHdpbGwgYmUgdXNlZC5cbisgICAgZGVmYXVsdDogZmFsc2VcbitcbisgIHhjZWl2ZXItc3VwcGx5OlxuKyAgICBkZXNjcmlwdGlvbjogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gdHJhbnNjZWl2ZXIuXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIHJlZy1uYW1lc1xuKyAgLSBpbnRlcnJ1cHRzXG4rICAtIGNsb2Nrc1xuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICBjYW5ANWMwNTAwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwidGksYW0zNTE3LWhlY2NcIjtcbisgICAgICAgIHJlZyA9IFx1MDAzYzB4NWMwNTAwMDAgMHg4MFx1MDAzZSxcbisgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTMwMDAgMHgxODBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDVjMDUyMDAwIDB4MjAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIjtcbisgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2MyNFx1MDAzZTtcbisgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmhlY2NfY2tcdTAwM2U7XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGlfaGVjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBlMGYwYTdjZmUzMjkzLi4wMDAwMDAwMDAwMDAwXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsMzIgKzAsMCBAQFxuLVRleGFzIEluc3RydW1lbnRzIEhpZ2ggRW5kIENBTiBDb250cm9sbGVyIChIRUNDKVxuLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLVxuLVRoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiwgd2hhdCB0aGUgZGV2aWNlIG5vZGVcbi1mb3IgdGhlIGhlY2MgaW50ZXJmYWNlIGNvbnRhaW5zLlxuLVxuLVJlcXVpcmVkIHByb3BlcnRpZXM6XG4tLSBjb21wYXRpYmxlOiBcInRpLGFtMzUxNy1oZWNjXCJcbi0tIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdoZWNjJywgJ2hlY2MtcmFtJ1xuLSAgICAgICBhbmQgJ21ieCdcbi0tIHJlZy1uYW1lcyA6XCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIlxuLS0gaW50ZXJydXB0czogaW50ZXJydXB0IG1hcHBpbmcgZm9yIHRoZSBoZWNjIGludGVycnVwdHMgc291cmNlc1xuLS0gY2xvY2tzOiBjbG9jayBwaGFuZGxlcyAoc2VlIGNsb2NrIGJpbmRpbmdzIGZvciBkZXRhaWxzKVxuLVxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XG4tLSB0aSx1c2UtaGVjYzFpbnQ6IGlmIHByb3ZpZGVkIGNvbmZpZ3VyZXMgSEVDQyB0byBwcm9kdWNlIGFsbCBpbnRlcnJ1cHRzXG4tXHRcdCAgIG9uIEhFQ0MxSU5UIGludGVycnVwdCBsaW5lLiBCeSBkZWZhdWx0IEhFQ0MwSU5UIGludGVycnVwdFxuLVx0XHQgICBsaW5lIHdpbGwgYmUgdXNlZC5cbi0tIHhjZWl2ZXItc3VwcGx5OiByZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlclxuLVxuLUV4YW1wbGU6XG4tXG4tRm9yIGFtMzUxN2V2bSBib2FyZDpcbi1cdGhlY2M6IGNhbkA1YzA1MDAwMCB7XG4tXHRcdGNvbXBhdGlibGUgPSBcInRpLGFtMzUxNy1oZWNjXCI7XG4tXHRcdHJlZyA9IFx1MDAzYzB4NWMwNTAwMDAgMHg4MFx1MDAzZSxcbi1cdFx0ICAgICAgXHUwMDNjMHg1YzA1MzAwMCAweDE4MFx1MDAzZSxcbi1cdFx0ICAgICAgXHUwMDNjMHg1YzA1MjAwMCAweDIwMFx1MDAzZTtcbi1cdFx0cmVnLW5hbWVzID0gXCJoZWNjXCIsIFwiaGVjYy1yYW1cIiwgXCJtYnhcIjtcbi1cdFx0aW50ZXJydXB0cyA9IFx1MDAzYzI0XHUwMDNlO1xuLVx0XHRjbG9ja3MgPSBcdTAwM2NcdTAwMjZoZWNjX2NrXHUwMDNlO1xuLVx0fTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbmluZGV4IDQwODM1NDk3MDUwYTUuLjE4MDE1ZTYwZmQ2ZDYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuQEAgLTgsNyArOCw3IEBAIHRpdGxlOlxuICAgWGlsaW54IENBTiBhbmQgQ0FORkQgY29udHJvbGxlclxuIFxuIG1haW50YWluZXJzOlxuLSAgLSBBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuKyAgLSBIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG5AQCAtNTMsNiArNTMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy9mbGFnXG4gICAgIGRlc2NyaXB0aW9uOiBDQU4gVFhfT0wsIFRYX1RMIGFuZCBSWCBGSUZPcyBoYXZlIEVDQyBzdXBwb3J0KEFYSSBDQU4pXG4gXG4rICBwaHlzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbmluZGV4IDM4MTMyMzQyM2I0Y2EuLmM4Y2YwYmM0OWI2OWEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmdcbkBAIC05Myw5ICs5Myw5IEBAXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0NC44MjdcIiBjeT1cIjE1OS4xNDNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIi9cdTAwM2VcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwiNTkuNDM2NFwiIGN5PVwiMTQyLjgyM1wiIHJ4PVwiNy4zNjQ1NVwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCIxNDQuODI3XCIgY3k9XCIxMjkuMTk2XCIgcng9XCIxMC44ODY2XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4tICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0My4wNzdcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgXHUwMDNjL2dcdTAwM2Vcbi0gIFx1MDAzY2VsbGlwc2UgY3g9XCIxMTAuMzg2XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiI2ZmY2IzNVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbisgIFx1MDAzY2VsbGlwc2UgY3g9XCIxMTAuMzg2XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiIzI4YTRmZlwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbisgIFx1MDAzY2VsbGlwc2UgY3g9XCIxNDMuMDc3XCIgY3k9XCIxODAuNTNcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIiBmaWxsPVwiI2ZmY2IzNVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIHN0cm9rZS13aWR0aD1cIi40OTk5OTlcIi9cdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cIjExMC45MDkwN1wiIHk9XCIxNzkuNDI2ODhcIiBmb250LXNpemU9XCIzLjE3NXB4XCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIlx1MDAzZVx1MDAzY3RzcGFuIHg9XCIxMTAuOTA5MDdcIiB5PVwiMTc5LjQyNjg4XCIgZHk9XCIwLjYwMDAwMDAyXCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcdTAwM2VBY2Nlc3NpYmxlXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjdHNwYW4geD1cIjExMC45MDkwN1wiIHk9XCIxODMuMzk1NjNcIlx1MDAzZVx1MDAzY3RzcGFuIGZvbnQtc2l6ZT1cIjMuMTc1cHhcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlx1MDAzZWZvciBTXHUwMDNjL3RzcGFuXHUwMDNlV1x1MDAzYy90c3Bhblx1MDAzZVx1MDAzYy90ZXh0XHUwMDNlXG4gICBcdTAwM2N0ZXh0IHg9XCIxNDMuNTg2OVwiIHk9XCIxNzkuNTI3OTVcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXHUwMDNlXHUwMDNjdHNwYW4geD1cIjE0My41ODY5XCIgeT1cIjE3OS41Mjc5NVwiIGR5PVwiMSAwIDAgMCAwIDBcIiBmb250LWZhbWlseT1cInNhbnMtc2VyaWZcIiBmb250LXNpemU9XCIyLjgyMjIycHhcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBzdHlsZT1cImZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsXCJcdTAwM2VJbmFjY2Vzc2libGVcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTQzLjU4NjlcIiB5PVwiMTgzLjM2Nzg2XCIgZm9udC1zaXplPVwiMy4xNzVweFwiXHUwMDNlXHUwMDNjdHNwYW4gZm9udC1zaXplPVwiMy4xNzVweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHUwMDNlZm9yIFNcdTAwM2MvdHNwYW5cdTAwM2VXXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjL3RleHRcdTAwM2VcbiAgIFx1MDAzY2cgZm9udC1zaXplPVwiMy4xNzVweFwiXHUwMDNlXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggOTkxNDYwMDUwZGE3NC4uNmI0OWEyYzgwY2Q1ZCAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTI5NTczLDcgKzI5NTczLDcgQEAgRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQveGxueCxheGktZXRoZXJuZXQueWFtbFxuIEY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQqXG4gXG4gWElMSU5YIENBTiBEUklWRVJcbi1NOlx0QXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyBcdTAwM2NhcHBhbmEuZHVyZ2EucmFvQHhpbGlueC5jb21cdTAwM2VcbitNOlx0SGFyaW5pIFQgXHUwMDNjaGFyaW5pLnRAYW1kLmNvbVx1MDAzZVxuIEw6XHRsaW51eC1jYW5Admdlci5rZXJuZWwub3JnXG4gUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuaW5kZXggZWI4NTY1NDdhZTdkZi4uMTZmODA2MDdlMTUwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uY1xuQEAgLTI0NjQsNyArMjQ2NCw3IEBAIHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqbV9jYW5fY2xhc3NfYWxsb2NhdGVfZGV2KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiBcdH1cbiBcbi1cdGlmIChkZXYtXHUwMDNlb2Zfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi1cdTAwM2VvZl9ub2RlLCBcIndha2V1cC1zb3VyY2VcIikpXG4rXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3Byb3BlcnR5X3ByZXNlbnQoZGV2LVx1MDAzZW9mX25vZGUsIFwid2FrZXVwLXNvdXJjZVwiKSlcbiBcdFx0ZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpO1xuIFxuIFx0LyogR2V0IFRYIEZJRk8gc2l6ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuaW5kZXggZWIzMWVkMWY5NjQ0OS4uZDExYTdjODhmYzMyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBpbnQgbV9jYW5fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiBcdG1jYW5fY2xhc3MtXHUwMDNlbmV0LVx1MDAzZWlycSA9IHBjaV9pcnFfdmVjdG9yKHBjaSwgMCk7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZXBtX2Nsb2NrX3N1cHBvcnQgPSAxO1xuIFx0bWNhbl9jbGFzcy1cdTAwM2VwbV93YWtlX3NvdXJjZSA9IDA7XG4tXHRtY2FuX2NsYXNzLVx1MDAzZWNhbi5jbG9jay5mcmVxID0gaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4rXHRtY2FuX2NsYXNzLVx1MDAzZWNhbi5jbG9jay5mcmVxID0gTV9DQU5fQ0xPQ0tfRlJFUV9FSEw7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZWlycV9lZGdlX3RyaWdnZXJlZCA9IHRydWU7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZW9wcyA9IFx1MDAyNm1fY2FuX3BjaV9vcHM7XG4gXG5AQCAtMTgzLDggKzE4Myw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtX2Nhbl9wY2lfcG1fb3BzLFxuIFx0XHRcdCBtX2Nhbl9wY2lfc3VzcGVuZCwgbV9jYW5fcGNpX3Jlc3VtZSk7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1fY2FuX3BjaV9pZF90YWJsZVtdID0ge1xuLVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSwgTV9DQU5fQ0xPQ0tfRlJFUV9FSEwsIH0sXG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzIpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbitcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMSkgfSxcbitcdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMikgfSxcbiBcdHsgIH1cdC8qIFRlcm1pbmF0aW5nIEVudHJ5ICovXG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbV9jYW5fcGNpX2lkX3RhYmxlKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuaW5kZXggMzFjYzlkMGFiZDQ1My4uYTViODgyOWFhNTE5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmNcbkBAIC0yMTEsOCArMjExLDMxIEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfd3JpdGVfZmlmbyhzdHJ1Y3QgbV9jYW5fY2xhc3NkZXYgKmNkZXYsXG4gXHRyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi1cdTAwM2VyZWdtYXAsIFRDQU40WDVYX01SQU1fU1RBUlQgKyBhZGRyX29mZnNldCwgdmFsLCB2YWxfY291bnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yICpyZWcsIGludCBlbmFibGUpXG4rc3RhdGljIGludCB0Y2FuNHg1eF9wb3dlcl9lbmFibGUoc3RydWN0IHRjYW40eDV4X3ByaXYgKnByaXYsIGludCBlbmFibGUpXG4ge1xuK1x0c3RydWN0IHJlZ3VsYXRvciAqcmVnID0gcHJpdi1cdTAwM2Vwb3dlcjtcbitcbitcdC8qXG4rXHQgKiBQdXQgdGhlIGRldmljZSBpbnRvIHNsZWVwIG1vZGUgaWYgdGhlIFJTVCBwaW4gaXMgYXZhaWxhYmxlLFxuK1x0ICogc2luY2UgYSB3YWtlLXVwIGV2ZW50LCBSU1QgcGluIHRvZ2dsZSwgb3IgcG93ZXIgY3ljbGUgYXJlIHRoZSBvbmx5XG4rXHQgKiB3YXlzIHRvIGV4aXQgc2xlZXAgbW9kZS5cbitcdCAqIFJlZHVuZGFudCBpZiB0aGUgcmVndWxhdG9yIGlzIGV4Y2x1c2l2ZSB0byB0aGlzIGRldmljZSwgYnV0IHRoYXRcbitcdCAqIGNhbid0IGJlIGRldGVybWluZWQgaGVyZS5cbitcdCAqXG4rXHQgKiBEYXRhc2hlZXQ6IFRDQU40NTUwLCBzZWN0aW9uIFwiOC40LjMgU2xlZXAgTW9kZVwiXG4rXHQgKiBodHRwczovL3d3dy50aS5jb20vbGl0L2dwbi90Y2FuNDU1MFxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvIFx1MDAyNlx1MDAyNiAhZW5hYmxlKSB7XG4rXHRcdGludCByZXQ7XG4rXG4rXHRcdHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfQ09ORklHLFxuK1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TRUxfTUFTSyxcbitcdFx0XHRcdFx0IFRDQU40WDVYX01PREVfU0xFRVApO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcIlNldHRpbmcgc2xlZXAgbW9kZSBmYWlsZWQgJXBlXFxuXCIsXG4rXHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuK1x0fVxuK1xuIFx0aWYgKElTX0VSUl9PUl9OVUxMKHJlZykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQ3Niw3ICs0OTksNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0XHRnb3RvIG91dF9tX2Nhbl9jbGFzc19mcmVlX2RldjtcbiBcdH1cbiBcbi1cdHJldCA9IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAxKTtcbitcdHJldCA9IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAxKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcIkVuYWJsaW5nIHJlZ3VsYXRvciBmYWlsZWQgJXBlXFxuXCIsXG4gXHRcdFx0RVJSX1BUUihyZXQpKTtcbkBAIC01MzEsNyArNTU0LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdHJldHVybiAwO1xuIFxuIG91dF9wb3dlcjpcbi1cdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LVx1MDAzZXBvd2VyLCAwKTtcbitcdHRjYW40eDV4X3Bvd2VyX2VuYWJsZShwcml2LCAwKTtcbiAgb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2OlxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYobWNhbl9jbGFzcy1cdTAwM2VuZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC01NDMsNyArNTY2LDcgQEAgc3RhdGljIHZvaWQgdGNhbjR4NXhfY2FuX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFxuIFx0bV9jYW5fY2xhc3NfdW5yZWdpc3RlcihcdTAwMjZwcml2LVx1MDAzZWNkZXYpO1xuIFxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuK1x0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApO1xuIFxuIFx0bV9jYW5fY2xhc3NfZnJlZV9kZXYocHJpdi1cdTAwM2VjZGV2Lm5ldCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5pbmRleCAyOWRlMGMwMWU0ZWRjLi4zN2MxYzIyYzQwYzlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuY1xuQEAgLTUwLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEgcmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMgPSB7XG4gXHRcdFJLQ0FORkRfUVVJUktfQ0FORkRfQlJPS0VOLFxuIH07XG4gXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODggPSB7XG4rXHQubW9kZWwgPSBSS0NBTkZEX01PREVMX1JLMzU4OCxcbitcdC5xdWlya3MgPSBSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzUgfFxuK1x0XHRSS0NBTkZEX1FVSVJLX1JLMzU2OF9FUlJBVFVNXzYsXG4rfTtcbitcbiBzdGF0aWMgY29uc3QgY2hhciAqX19ya2NhbmZkX2dldF9tb2RlbF9zdHIoZW51bSBya2NhbmZkX21vZGVsIG1vZGVsKVxuIHtcbiBcdHN3aXRjaCAobW9kZWwpIHtcbkBAIC01Nyw2ICs2Myw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpXG4gXHRcdHJldHVybiBcInJrMzU2OHYyXCI7XG4gXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTY4VjM6XG4gXHRcdHJldHVybiBcInJrMzU2OHYzXCI7XG4rXHRjYXNlIFJLQ0FORkRfTU9ERUxfUkszNTg4OlxuK1x0XHRyZXR1cm4gXCJyazM1ODhcIjtcbiBcdH1cbiBcbiBcdHJldHVybiBcIlx1MDAzY3Vua25vd25cdTAwM2VcIjtcbkBAIC0xNDgsNiArMTU2LDEyIEBAIHN0YXRpYyBpbnQgcmtjYW5mZF9zZXRfYml0dGltaW5nKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4gXG4gXHRya2NhbmZkX3dyaXRlKHByaXYsIFJLQ0FORkRfUkVHX0ZEX0RBVEFfQklUVElNSU5HLCByZWdfZGJ0KTtcbiBcbitcdC8qIFJLMzU4OCBDQU4tRkQgQlJTIHdvcmtzIHdpdGggVERDIGRpc2FibGVkLiAqL1xuK1x0aWYgKHByaXYtXHUwMDNlZGV2dHlwZV9kYXRhLm1vZGVsID09IFJLQ0FORkRfTU9ERUxfUkszNTg4KSB7XG4rXHRcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OLCAwKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHR0ZGNvID0gKHByaXYtXHUwMDNlY2FuLmNsb2NrLmZyZXEgLyBkYnQtXHUwMDNlYml0cmF0ZSkgKiAyIC8gMztcbiBcdHRkY28gPSBtaW4odGRjbywgRklFTERfTUFYKFJLQ0FORkRfUkVHX1RSQU5TTUlUX0RFTEFZX0NPTVBFTlNBVElPTl9URENfT0ZGU0VUKSk7XG4gXG5AQCAtODQ2LDYgKzg2MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrY2FuZmRfb2ZfbWF0Y2hbXSA9IHtcbiBcdH0sIHtcbiBcdFx0LmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OHYzLWNhbmZkXCIsXG4gXHRcdC5kYXRhID0gXHUwMDI2cmtjYW5mZF9kZXZ0eXBlX2RhdGFfcmszNTY4djMsXG4rXHR9LCB7XG4rXHRcdC5jb21wYXRpYmxlID0gXCJyb2NrY2hpcCxyazM1ODgtY2FuZmRcIixcbitcdFx0LmRhdGEgPSBcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1ODgsXG4gXHR9LCB7XG4gXHRcdC8qIHNlbnRpbmVsICovXG4gXHR9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcbmluZGV4IDQ3NWMwNDA5ZTIxNWEuLjI0ZTg3ZGFhMWRmMDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmNcbkBAIC0yODEsNyArMjgxLDEwIEBAIHJrY2FuZmRfcnhfZmlmb19nZXRfbGVuKGNvbnN0IHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG4ge1xuIFx0Y29uc3QgdTMyIHJlZyA9IHJrY2FuZmRfcmVhZChwcml2LCBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkwpO1xuIFxuLVx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQsIHJlZyk7XG4rXHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpXG4rXHRcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCwgcmVnKTtcbitcbitcdHJldHVybiBGSUVMRF9HRVQoUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCwgcmVnKTtcbiB9XG4gXG4gaW50IHJrY2FuZmRfaGFuZGxlX3J4X2ludChzdHJ1Y3QgcmtjYW5mZF9wcml2ICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbmluZGV4IDkzMTMxYzdkN2Y1NGQuLjk1YmVhOWJmZDhhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuKysrIGIvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmhcbkBAIC0yMTQsNyArMjE0LDggQEBcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1RYRVZFTlRfRklGT19DVFJMX1RYRV9GSUZPX0VOQUJMRSBCSVQoMClcbiBcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCAweDExOFxuLSNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UIEdFTk1BU0soNiwgNClcbisjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVF9SSzM1NjggR0VOTUFTSyg2LCA0KVxuKyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU4OCBHRU5NQVNLKDcsIDUpXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19GVUxMX1dBVEVSTUFSSyBHRU5NQVNLKDMsIDEpXG4gI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19FTkFCTEUgQklUKDApXG4gXG5AQCAtMzMxLDYgKzMzMiwxMSBAQFxuICAqIHJhcmVseSB3aXRoIHRoZSBzdGFuZGFyZCBjbG9jayBvZiAzMDAgTUh6LCBidXQgYWxtb3N0IGltbWVkaWF0ZWx5XG4gICogYXQgODAgTUh6LlxuICAqXG4rICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIGVtcHR5IEZJRk8gY29uZGl0aW9uLlxuKyAqIEluIHRoYXQgc2V0dXAgcnhfZmlmb19lbXB0eV9lcnJvcnMgaW5jcmVtZW50cyB3aGVuIHRoZSBidXNcbisgKiB0cmFuc2l0aW9ucyBmcm9tIGlkbGUgdG8gaGlnaCBDQU4tRkQgbG9hZCBhbmQgc3RvcHMgZ3Jvd2luZyBvbmNlXG4rICogdGhlIGJ1cyByZWFjaGVzIGEgc3RlYWR5IHN0YXRlLlxuKyAqXG4gICogVG8gd29ya2Fyb3VuZCB0aGlzIHByb2JsZW0sIGNoZWNrIGZvciBlbXB0eSBGSUZPIHdpdGhcbiAgKiBya2NhbmZkX2ZpZm9faGVhZGVyX2VtcHR5KCkgaW4gcmtjYW5mZF9oYW5kbGVfcnhfaW50X29uZSgpIGFuZCBleGl0XG4gICogZWFybHkuXG5AQCAtMzQ0LDYgKzM1MCw4IEBAXG4gLyogRXJyYXR1bSA2OiBUaGUgQ0FOIGNvbnRyb2xsZXIncyB0cmFuc21pc3Npb24gb2YgZXh0ZW5kZWQgZnJhbWVzIG1heVxuICAqIGludGVybWl0dGVudGx5IGNoYW5nZSBpbnRvIHN0YW5kYXJkIGZyYW1lc1xuICAqXG4rICogVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uXG4rICpcbiAgKiBXb3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGFjdGl2YXRpbmcgc2VsZiByZWNlcHRpb24gKFJYU1RYKS4gSWYgd2VcbiAgKiBoYXZlIHBlbmRpbmcgVFggQ0FOIGZyYW1lcywgY2hlY2sgYWxsIFJYJ2VkIENBTiBmcmFtZXMgaW5cbiAgKiBya2NhbmZkX3J4c3R4X2ZpbHRlcigpLlxuQEAgLTQyNCw2ICs0MzIsOSBAQFxuICAqICAgICBjYW5zZXF1ZW5jZSAtcnYgLWkgMVxuICAqXG4gICogLSBUWCBzdGFydmF0aW9uIGFmdGVyIHJlcGVhdGVkIEJ1cy1PZmZcbisgKiAgIFRlc3RzIG9uIHRoZSByazM1ODggc2hvdyB0aGUgc2FtZSBwcm9ibGVtLiBJbiBhXG4rICogICAxMC1jeWNsZSBCdXMtT2ZmIHJlY292ZXJ5IHRlc3QsIDkgY3ljbGVzIGZhaWxlZCB0byBzZW5kIGFmdGVyIHRoZVxuKyAqICAgY29udHJvbGxlciByZXN0YXJ0ZWQuXG4gICogICBUbyByZXByb2R1Y2U6XG4gICogICBob3N0OlxuICAqICAgICBzbGVlcCAzIFx1MDAyNlx1MDAyNiBjYW5nZW4gY2FuMCAtSTIgLUxpIC1EaSAtcDEwIC1nIDAuMFxuQEAgLTQzNCw2ICs0NDUsNyBAQFxuIGVudW0gcmtjYW5mZF9tb2RlbCB7XG4gXHRSS0NBTkZEX01PREVMX1JLMzU2OFYyID0gMHgzNTY4MixcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjMgPSAweDM1NjgzLFxuK1x0UktDQU5GRF9NT0RFTF9SSzM1ODggPSAweDM1ODgsXG4gfTtcbiBcbiBzdHJ1Y3QgcmtjYW5mZF9kZXZ0eXBlX2RhdGEge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5pbmRleCA4MjUwOGE4NjUwOTU5Li4zYjliMmYxMDRkODY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuY1xuQEAgLTE1NjUsNyArMTU2NSw3IEBAIHN0YXRpYyBpbnQgZ3NfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFxuIFx0aWYgKGljb3VudCBcdTAwM2UgdHlwZV9tYXgocGFyZW50LVx1MDAzZWNoYW5uZWxfY250KSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LFxuLVx0XHRcdFwiRHJpdmVyIGNhbm5vdCBoYW5kbGUgbW9yZSB0aGF0ICV1IENBTiBpbnRlcmZhY2VzXFxuXCIsXG4rXHRcdFx0XCJEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYW4gJXUgQ0FOIGludGVyZmFjZXNcXG5cIixcbiBcdFx0XHR0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuaW5kZXggZTg4MjI1MDE4MGVmNi4uOWUyZTI1ZDAyNDcxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdnhjYW4uY1xuQEAgLTMzLDYgKzMzLDcgQEAgTU9EVUxFX0FMSUFTX1JUTkxfTElOSyhEUlZfTkFNRSk7XG4gXG4gc3RydWN0IHZ4Y2FuX3ByaXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgX19yY3VcdCpwZWVyO1xuK1x0bmV0ZGV2aWNlX3RyYWNrZXIgcGVlcl90cmFja2VyO1xuIH07XG4gXG4gc3RhdGljIG5ldGRldl90eF90IHZ4Y2FuX3htaXQoc3RydWN0IHNrX2J1ZmYgKm9za2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5AQCAtMjY4LDkgKzI2OSwxMSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGNyb3NzIGxpbmsgdGhlIGRldmljZSBwYWlyICovXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihwcml2LVx1MDAzZXBlZXIsIHBlZXIpO1xuK1x0bmV0ZGV2X2hvbGQocGVlciwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXHUwMDNlcGVlciwgZGV2KTtcbitcdG5ldGRldl9ob2xkKGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjgxLDI0ICsyODQsMjUgQEAgc3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gc3RhdGljIHZvaWQgdnhjYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIHtcbitcdG5ldGRldmljZV90cmFja2VyICpwZWVyX3RyYWNrZXI7XG4gXHRzdHJ1Y3QgdnhjYW5fcHJpdiAqcHJpdjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpwZWVyO1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4tXHRwZWVyID0gcnRubF9kZXJlZmVyZW5jZShwcml2LVx1MDAzZXBlZXIpO1xuK1x0cGVlcl90cmFja2VyID0gXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXI7XG4rXHRwZWVyID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuK1x0aWYgKCFwZWVyKVxuK1x0XHRyZXR1cm47XG4gXG4tXHQvKiBOb3RlIDogZGVsbGluaygpIGlzIGNhbGxlZCBmcm9tIGRlZmF1bHRfZGV2aWNlX2V4aXRfYmF0Y2goKSxcbi1cdCAqIGJlZm9yZSBhIHJjdV9zeW5jaHJvbml6ZSgpIHBvaW50LiBUaGUgZGV2aWNlcyBhcmUgZ3VhcmFudGVlZFxuLVx0ICogbm90IGJlaW5nIGZyZWVkIGJlZm9yZSBvbmUgUkNVIGdyYWNlIHBlcmlvZC5cbi1cdCAqL1xuLVx0UkNVX0lOSVRfUE9JTlRFUihwcml2LVx1MDAzZXBlZXIsIE5VTEwpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbiBcbi1cdGlmIChwZWVyKSB7XG4tXHRcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbi1cdFx0UkNVX0lOSVRfUE9JTlRFUihwcml2LVx1MDAzZXBlZXIsIE5VTEwpO1xuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShwZWVyLCBoZWFkKTtcbi1cdH1cbitcdHByaXYgPSBuZXRkZXZfcHJpdihwZWVyKTtcbitcdGRldiA9IHVucmN1X3BvaW50ZXIoeGNoZyhcdTAwMjZwcml2LVx1MDAzZXBlZXIsIE5VTEwpKTtcbitcdGlmIChkZXYpXG4rXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlX25ldChkZXZfbmV0KGRldiksIHBlZXIsIGhlYWQpO1xuK1xuK1x0bmV0ZGV2X3B1dChwZWVyLCBwZWVyX3RyYWNrZXIpO1xuK1x0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnByaXYtXHUwMDNlcGVlcl90cmFja2VyKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4Y2FuX3BvbGljeVtWWENBTl9JTkZPX01BWCArIDFdID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MDguODA3NjgwMTI4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNzYyMDk3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb24gZm9yIEZ1enppbmcgQ2FuZGlkYXRlIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoLCBpZiBhbnksIG9mIHRoZXNlIGtlcm5lbCBjaGFuZ2VzIHdhcnJhbnQgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcGF0Y2hzZXQgbWFrZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLCBhbmQgdGhlbiBJIG5lZWQgdG8gYXNzZXNzIGhvdyBhY2Nlc3NpYmxlIHRob3NlIGNoYW5nZXMgYXJlIGZvciBmdXp6aW5nLlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIGFyZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMg4oCTIG5vdCBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgc28gdGhvc2UgYXJlIG91dC4gVGhlIGBNQUlOVEFJTkVSU2AgZmlsZSBjaGFuZ2UgaXMgaXJyZWxldmFudC5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgZHJpdmVyIGNoYW5nZXMuIEkgc2VlIGEgbWlub3IgQVBJIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNgIHdoZXJlIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGlzIHJlcGxhY2VkIHdpdGggYG9mX3Byb3BlcnR5X3ByZXNlbnRgLiBJdCdzIGEgc3VidGxlIGNoYW5nZSwgYXMgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgaW1wbGljaXRseSBjaGVja3MgaWYgdGhlIHByb3BlcnR5IGV4aXN0cywgdGhlcmVmb3JlLCBubyBmdXp6aW5nIHJlcXVpcmVkLiAgU2ltaWxhcmx5LCB0aGUgcmVmYWN0b3JpbmcgaW4gYGRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbl9wY2kuY2Agc2VlbXMgbGlrZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLlxuXG5OZXh0LCBgZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY2AgaGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHRlYXJkb3duL3N1c3BlbmQvcHJvYmUgZXJyb3IgcGF0aC4gSXQncyBwdXR0aW5nIHRoZSBkZXZpY2UgdG8gc2xlZXAuIEhtbSwgdGhpcyBpcyBhbiBTUEkgQ0FOIGNvbnRyb2xsZXIuIEknbSBnb2luZyB0byBndWVzcyB0aGlzIGlzbid0IGVhc3kgdG8gcmVhY2ggd2l0aCBzdGFuZGFyZCBRRU1VOyBnZXR0aW5nIFNQSSBkZXZpY2VzIHJpZ2h0IGluIFFFTVUgY2FuIGJlIGEgcGFpbi4gSSBzaG91bGQgbm90ZSB0aGlzIGRvd24sIGJ1dCBpdCdzIHByb2JhYmx5IGxvdyBwcmlvcml0eS5cblxuVGhlIGNoYW5nZXMgaW4gYGRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgYWRkIHN1cHBvcnQgZm9yIHRoZSBgcmszNTg4YC4gSXQncyBhIHBsYXRmb3JtIGRyaXZlciwgc28gYWdhaW4sIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIGlzIHVubGlrZWx5LCB1bmxlc3MgYSBzcGVjaWZpYyBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gaXMgc2V0dXAuXG5cbkEgdHlwbyBmaXggaW4gYGRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNgIGlz4oCmd2VsbCwgaXQncyBhIHR5cG8gZml4LlxuXG5Ob3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNgLiBXZSd2ZSBnb3QgY2hhbmdlcyB0byBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gSSBzZWUgdGhleSdyZSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgIGFuZCBgbmV0ZGV2X3B1dGAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCBjaGFuZ2UqIGluIGB2eGNhbmAsIHdoaWNoIGlzIGEgdmlydHVhbCBDQU4gdHVubmVsLiBDcnVjaWFsbHksIEkga25vdyB0aGF0IGB2eGNhbmAgaXMgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlLCBtdWNoIGxpa2UgYHZldGhgLCBhbmQgdGh1cyBlYXNpbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIChydG5ldGxpbmspIGluIFFFTVUvc3l6a2FsbGVyLiBCaW5nbyEgVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHNob3VsZCBiZSB0b3AgcHJpb3JpdHkuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlc2UgYHZ4Y2FuYCBjaGFuZ2VzIGluIHBhcnRpY3VsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MDEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MTkuODgzODkxNzQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg5NzU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhjYW5fbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMy1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVxcdFxcdFxcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyMy1cXHQuc2V0dXBcXHRcXHQ9IHZ4Y2FuX3NldHVwLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcXHQubmV3bGlua1xcdD0gdnhjYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXFx0LmRlbGxpbmtcXHQ9IHZ4Y2FuX2RlbGxpbmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjIxLjQ4Mjg3NDE3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzIyMTI4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdnhjYW4uYyBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuLmNgIGFyZSBmb2N1c2VkIG9uIHR3byBrZXkgZnVuY3Rpb25zOiBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBjcmVhdGlvbiBhbmQgZGVsZXRpb24gb2YgdmlydHVhbCBDQU4gaW50ZXJmYWNlcywgcmVzcGVjdGl2ZWx5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gRnJvbSBhbiBhcmNoaXRlY3R1cmUgcGVyc3BlY3RpdmUsIHRoZXNlIGFyZSBjcml0aWNhbCBwb2ludHMsIGFuZCBkZWZpbml0ZWx5ICpyZWFjaGFibGUqIGFuZCAqdGVzdGFibGUqLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucywgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCB0aGUgQ0FOIGNvcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbGwgc2VhcmNoIGZvciB0aGUgYHZ4Y2FuYCBvcHRpb24uIElzIHRoaXMgYSBuZXcgZmVhdHVyZSBnYXRlZCBiZWhpbmQgYSBjb25maWcgb3B0aW9uPyBJcyBpdCBpbmNsdWRlZCBieSBkZWZhdWx0PyBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhbmQsIG9mIGNvdXJzZSwgaG93IGl0IGNhbiBiZSB0ZXN0ZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgY29uZmlndXJhdGlvbnMuIEEgcXVpY2sgY2hlY2sgb2YgYEtjb25maWdgIHdpbGwgdGVsbCBtZSBpZiBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjI1LjMxNTA4OTAwOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk0ODYwMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fVlhDQU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWc9MjU9Y29uZmlnIENBTl9WQ0FOXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0zMy1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzozNDpjb25maWcgQ0FOX1ZYQ0FOXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMzUtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgQ0FOIFR1bm5lbCAodnhjYW4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzoyNi45MDk5NTMxMThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyOTI2NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ0FOX1ZYQ0FOIEtjb25maWcgRW50cnkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBzZWN0aW9uIHJlbGF0ZWQgdG8gYENBTl9WWENBTmAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHZpcnR1YWwgQ0FOIGRldmljZSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIEZpcnN0LCBJ4oCZbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIGl0IGRlcGVuZGVudCBvbiBvdGhlciBDQU4gZHJpdmVycywgb3Igc29tZSB1bmRlcmx5aW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBpdCByZXF1aXJlcywgZXZlbiBpZiBpdCdzIHZpcnR1YWw/IEl0J3MgYWxsIGFib3V0IGhvdyBgQ0FOX1ZYQ0FOYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgQ0FOIGVjb3N5c3RlbSB3aXRoaW4gdGhpcyBrZXJuZWwuIEkgd2FudCB0byBzZWUgaG93IHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXNvbHZlIHRoaXMgdG8gYSB3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCB1bmRlcnN0YW5kIHdoYXQgSSB3b3VsZCBuZWVkIHRvIGRvIHRvIGVuYWJsZSBpdC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdpbGwgZW5hYmxlIGBDQU5fVlhDQU5gLiBBcmUgdGhlcmUgb3RoZXIgc2V0dGluZ3MgdGhhdCB3aWxsIGFsc28gYmUgbmVlZGVkPyBXaGF0IGtpbmQgb2Ygc3lzdGVtIHdpbGwgaGF2ZSBhIGdvb2QgYXBwbGljYXRpb24gZm9yIHRoZSB1c2Ugb2YgYENBTl9WWENBTmA/IEknbGwgcHJvYmFibHkgbG9vayBmb3IgaXRzIGhlbHAgdGV4dCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzAuMzUyODgyMDU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcXG4gIDMyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdmNhbi5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0Y29uZmlnIENBTl9WWENBTlxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgQ0FOIFR1bm5lbCAodnhjYW4pXFxcIlxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTaW1pbGFyIHRvIHRoZSB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlciB2ZXRoLCB2eGNhbiBpbXBsZW1lbnRzIGFcXG4gIDM4OlxcdFxcdCAgbG9jYWwgQ0FOIHRyYWZmaWMgdHVubmVsIGJldHdlZW4gdHdvIHZpcnR1YWwgQ0FOIG5ldHdvcmsgZGV2aWNlcy5cXG4gIDM5OlxcdFxcdCAgV2hlbiBjcmVhdGluZyBhIHZ4Y2FuLCB0d28gdnhjYW4gZGV2aWNlcyBhcmUgY3JlYXRlZCBhcyBwYWlyLlxcbiAgNDA6XFx0XFx0ICBXaGVuIG9uZSBlbmQgcmVjZWl2ZXMgdGhlIHBhY2tldCBpdCBhcHBlYXJzIG9uIGl0cyBwYWlyIGFuZCB2aWNlXFxuICA0MTpcXHRcXHQgIHZlcnNhLiBUaGUgdnhjYW4gY2FuIGJlIHVzZWQgZm9yIGNyb3NzIG5hbWVzcGFjZSBjb21tdW5pY2F0aW9uLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIFRvIGhhdmUgYSBjbGVhbiBzdGFydCBpbiBlYWNoIG5hbWVzcGFjZSB0aGUgQ0FOIEdXIGhvcCBjb3VudGVyIGlzXFxuICA0NDpcXHRcXHQgIHNldCB0byB6ZXJvLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcXG4gIDQ3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnhjYW4uXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBDQU5fTkVUTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzozMC4zNTI5NjEzMzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM4NDU3ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWd5IGhpbmdlcyBvbiB0aGUgY29uZGl0aW9uYWwgYXZhaWxhYmlsaXR5IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbiBmb3IgdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIENBTiBkcml2ZXJzLiBUaGlzIGlzIHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbG9naWMgd2l0aGluIHRoZSBrZXJuZWwncyBDQU4gc3Vic3lzdGVtLiBTbywgbGV0J3MgaGVhZCB0byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBkaXZlIHJpZ2h0IGludG8gdGhhdCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjbGVhciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uLCBwb3NzaWJseSBhbiBgaWZgIHN0YXRlbWVudCwgZGVmaW5pbmcgdGhlIGNvbmRpdGlvbiBJJ20gbG9va2luZyBmb3IuIExldCdzIHNlZSBpZiBpdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM3OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzMuMDkxNDIwOTE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgQ0FOX0RFVlxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDQU5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXFxuICAgOTpcXHRcXHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXFxuICAxMDpcXHRcXHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcXG4gIDExOlxcdFxcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xcbiAgMTI6XFx0XFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDEzOlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE0OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIENBTigtRkQpIGRldmljZSBkcml2ZXJzIGluY2x1ZGluZyB0aGVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBvbmVzLiBJZiB5b3Ugb3duIHN1Y2ggZGV2aWNlcyBvciBwbGFuIHRvIHVzZSB0aGUgdmlydHVhbCBDQU5cXG4gIDE4OlxcdFxcdCAgaW50ZXJmYWNlcyB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucywgc2F5IFkgaGVyZS5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjMzLjA5MTQ4MzgyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjc3OTUyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYENBTl9WWENBTmAgbW9kdWxlIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IG5lZWRzIGJvdGggYENBTmAgYW5kIGBDQU5fREVWYCBlbmFibGVkLiBUaGF0J3MgcHJldHR5IHN0YW5kYXJkIGZvciB0aGVzZSB2aXJ0dWFsIENBTiBkZXZpY2VzOyB0aGV5J3JlIGJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uYWwgQ0FOIGluZnJhc3RydWN0dXJlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBpbiB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBDQU5gIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyLiBJdCdzIGFsd2F5cyBnb29kIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2Ygd2hhdCdzIHJlcXVpcmVkIGZvciBgQ0FOX1ZYQ0FOYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0NzozNS43Njk0MzgwNThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIG5ldHdvcmsgbGF5ZXIgY29yZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgQ0FOXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBhIHNsb3cgKHVwIHRvIDFNYml0L3MpIHNlcmlhbFxcbiAgMTE6XFx0XFx0ICBjb21tdW5pY2F0aW9ucyBwcm90b2NvbC4gRGV2ZWxvcG1lbnQgb2YgdGhlIENBTiBidXMgc3RhcnRlZCBpblxcbiAgMTI6XFx0XFx0ICAxOTgzIGF0IFJvYmVydCBCb3NjaCBHbWJILCBhbmQgdGhlIHByb3RvY29sIHdhcyBvZmZpY2lhbGx5XFxuICAxMzpcXHRcXHQgIHJlbGVhc2VkIGluIDE5ODYuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSxcXG4gIDE0OlxcdFxcdCAgYnV0IGlzIG5vdyB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDE1OlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE2OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIElmIHlvdSB3YW50IENBTiBzdXBwb3J0IHlvdSBzaG91bGQgc2F5IFkgaGVyZSBhbmQgYWxzbyB0byB0aGVcXG4gIDE5OlxcdFxcdCAgc3BlY2lmaWMgZHJpdmVyIGZvciB5b3VyIGNvbnRyb2xsZXIocykgdW5kZXIgdGhlIE5ldHdvcmsgZGV2aWNlXFxuICAyMDpcXHRcXHQgIHN1cHBvcnQgc2VjdGlvbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMjM6NDc6MzUuNzY5NTE5MzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDk4MTk0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIENBTiBEcml2ZXIgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQ0FOIGRyaXZlciBvcHRpb25zOiBgQ0FOYCwgYENBTl9ERVZgLCBgQ0FOX1ZYQ0FOYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHdoYXQncyBlYXNpbHkgdGVzdGFibGUuIFdoYXQgYWJvdXQgdGhlIHNwZWNpZmljcywgbGlrZSBgdGNhbjR4NXgtY29yZS5jYD8gVGhhdCdzIGFuIFNQSSBkcml2ZXIsIHRoZSBgVENBTjRYNVhgIOKAkyBwb3RlbnRpYWxseSBhIGh1cmRsZS4gVGhlbiB0aGVyZSdzIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBwcm9iYWJseSBmb3IgdGhlIGBDQU5fUk9DS0NISVBfQ0FORkRgIHBsYXRmb3JtLiBBbmQgYG1fY2FuYCBpcyBzaW1wbHkgYENBTl9NX0NBTmAuIFRoZXNlIGFyZSBhbGwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczsgdGhleSdyZSBnb2luZyB0byBiZSBhIGJpdCB0cmlja2llciB0byBnZXQgbXkgaGFuZHMgb24gZGlyZWN0bHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuXG5cbkhvd2V2ZXIsIGB2eGNhbmAsIGJlaW5nIGEgdmlydHVhbCBkcml2ZXIsIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgdGhlIG1vc3QgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBjYW5kaWRhdGUuIFRoYXQncyB0aGUga2V5LiBJIGNhbiB3b3JrIHdpdGggdGhhdC5cblxuTm93LCBteSBmb2N1cyBzaGlmdHMuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBvZiBgdnhjYW4uY2AgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLiBTbywgSSdsbCBjaGVjayBpdHMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgdnhjYW5fbmV3bGlua2AgYW5kIGB2eGNhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDQU4gbmV0d29yay4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlaXIgc2lnbmF0dXJlcywgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhleSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NTksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo0MC40NzkzNDIyMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2Njk4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhjYW5fbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0yMDI9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMy1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzoyMDQ6c3RhdGljIGludCB2eGNhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjA1LVxcdFxcdFxcdCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzIwPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyMy1cXHQuc2V0dXBcXHRcXHQ9IHZ4Y2FuX3NldHVwLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMyNDpcXHQubmV3bGlua1xcdD0gdnhjYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjUtXFx0LmRlbGxpbmtcXHQ9IHZ4Y2FuX2RlbGxpbmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjQxLjk4OTAxNzQ0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ4ODY3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgdnhjYW5fZGVsbGlua2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgdnhjYW5fZGVsbGlua2AuIEkgbmVlZCB0byBhc3Nlc3Mgd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBjb21wb25lbnQuIEknbSBwcm9iYWJseSB0aGlua2luZyBhYm91dCBhIHNwZWNpZmljIHByb2JsZW0gb3IgcGVyaGFwcyBJJ20gaW52ZXN0aWdhdGluZyBhbiBlcnJvciByZXBvcnQuIEZpcnN0LCBJIG5lZWQgdG8gc2VlIHdoYXQgSSBrbm93LCBhbmQgd2hhdCBJICpkb24ndCoga25vdywgYWJvdXQgaG93IGB2eGNhbl9kZWxsaW5rYCBpcyBiZWhhdmluZyByaWdodCBub3cuIElzIGl0IHBlcmZvcm1pbmcgYXMgZXhwZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgYW5vbWFsaWVzPyBCYXNlZCBvbiB0aGF0LCBJJ2xsIHN0YXJ0IGNoZWNraW5nIHRoZSBjb2RlIGRpcmVjdGx5LCBtYXliZSBsb29rIGZvciByZWxhdGVkIGxvZyBlbnRyaWVzLCBvciBiZWdpbiB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGV4ZWN1dGlvbiB0byBzZWUgd2hlcmUgdGhlIGJvdHRsZW5lY2sgbWlnaHQgYmUsIG9yIG1heWJlIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uIHRoYXQncyBjYXVzaW5nIHRoZSBpc3N1ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV04oCZcyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxOTMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo0NC42Mzc4ODk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2ODY0MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4Y2FuX2RlbGxpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MjA0PXN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg0LVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjI4NTpzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMyMD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMjQtXFx0Lm5ld2xpbmtcXHQ9IHZ4Y2FuX25ld2xpbmssXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzI1OlxcdC5kZWxsaW5rXFx0PSB2eGNhbl9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMyNi1cXHQucG9saWN5XFx0XFx0PSB2eGNhbl9wb2xpY3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjQ2LjA3NDc1Nzk2OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIwNjQ4NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCBzZXJpZXMsIEkndmUgemVyb2VkIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEl0IGxvb2tzIGxpa2UgdGhlIG1vc3QgaW1wYWN0ZnVsIGNoYW5nZXMsIGFuZCB0aGVyZWZvcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLCBhcmUgZGVmaW5pdGVseSBpbiBgdnhjYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgYXJlIHdoZXJlIHRoZSByZWFsIGp1aWNlIGlzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleeKAmXZlIGFkZHJlc3NlZCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgbmV0ZGV2aWNlX3RyYWNrZXJgIGFuZCB1c2luZyBgbmV0ZGV2X2hvbGRgL2BuZXRkZXZfcHV0YC4gU21hcnQgbW92ZSwgdGhhdOKAmXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGNhbiBiaXRlIHlvdSBsYXRlciBpZiB5b3UncmUgbm90IGNhcmVmdWwuXG5cbkkgdG9vayBhIGxvb2sgdGhyb3VnaCB0aGUgb3RoZXIgZmlsZXMgdG91Y2hlZCBpbiB0aGUgcGF0Y2gsIG9mIGNvdXJzZS4gVGhlIHR5cG8gaW4gYGdzX3VzYi5jYD8gTm90IHdvcnRoIHRoZSB0aW1lLCBhbmQgdGhlIGBvZl9wcm9wZXJ0eWAgY2hhbmdlIGluIGBtX2Nhbi5jYCBhbmQgdGhlIHJlZmFjdG9yaW5nIGluIGBtX2Nhbl9wY2kuY2Agc2VlbSBtb3JlIGNvc21ldGljIG9yIHJlbGF0ZWQgdG8gZGV2aWNlIGluaXRpYWxpemF0aW9uL2NvbmZpZ3VyYXRpb24sIG5vdGhpbmcgdGhhdCB3b3VsZCBiZSBhIGhpZ2ggcHJpb3JpdHkgZm9yIGZ1enppbmcuIGB0Y2FuNHg1eC1jb3JlLmNgIGFuZCBgcm9ja2NoaXBfY2FuZmQtY29yZS5jYCBhcmUgU1BJIGFuZCBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVycyByZXNwZWN0aXZlbHksIHdoaWNoIGFyZW4ndCBlYXNpbHkgcmVhY2hhYmxlIGluIG15IHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIEknbSB3cml0aW5nIHRob3NlIG9mZiBmb3Igbm93LlxuXG5TbywgaXQncyBjbGVhcjogYHZ4Y2FuLmNgIGlzIHRoZSB0YXJnZXQuIFRoZSB2aXJ0dWFsIENBTiB0dW5uZWwgZHJpdmVyLCBgdnhjYW5gLCBpcyBlYXNpbHkgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgZml4aW5nIHRoaXMga2luZCBvZiBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlIGlzIGFsc28gYSBnb29kIHJlYXNvbiB0byBmb2N1cyBvbiBpdC5cblxuVGhlcmVmb3JlLCBteSBzdW1tYXJ5IGFuZCByZWNvbW1lbmRhdGlvbnMgYXJlOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogdHJ1ZVxuKiAgICoqRm9jdXNTeW1ib2xzKio6XG4gICAgKiAgIGB2eGNhbl9uZXdsaW5rYFxuICAgICogICBgdnhjYW5fZGVsbGlua2BcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjpcbiAgICAqICAgYENBTmBcbiAgICAqICAgYENBTl9ERVZgXG4gICAgKiAgIGBDQU5fVlhDQU5gXG5cblRoZSBwYXRjaCBpcyB0b3VjaGluZyBjb3JlIHJlZiBjb3VudGluZyBsb2dpYyBvbiBhIHZpcnR1YWwgZGV2aWNlLCBzbyBpdCBpcyBoaWdoIHZhbHVlIGFuZCBlYXN5IHRvIHRyaWdnZXIuIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjYyLCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My44OTU0MDg5MzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDEzMDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOXCIsXG4gICAgXCJDQU5fREVWXCIsXG4gICAgXCJDQU5fVlhDQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGNhbl9uZXdsaW5rXCIsXG4gICAgXCJ2eGNhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4Y2FuX25ld2xpbmtgIGFuZCBgdnhjYW5fZGVsbGlua2AgaW4gdGhlIHZpcnR1YWwgQ0FOIHR1bm5lbCBkcml2ZXIgKGB2eGNhbmApIHRvIHVzZSBgbmV0ZGV2aWNlX3RyYWNrZXJgIGZvciBwZWVyIGRldmljZXMsIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnRpbmcgaXNzdWVzLiBTaW5jZSBgdnhjYW5gIGlzIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIHRoZXNlIGNoYW5nZXMgYXJlIGVhc2lseSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIE90aGVyIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBhcmUgZWl0aGVyIGRvY3VtZW50YXRpb24sIHR5cG8gZml4ZXMsIG9yIGFmZmVjdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChTUEksIFJvY2tjaGlwLCBQQ0kpIG5vdCBlYXNpbHkgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ3OjUzLjk2OTU0NTU3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzcyNDQxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My45NzAyOTQ5MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ0MzY0OTA1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBkZXZpY2UgdHJlZSBiaW5kaW5nIHVwZGF0ZXMsIGhhcmR3YXJlIGRyaXZlciBmaXhlcyAoc2xlZXAgbW9kZSBoYW5kbGluZyBpbiB0Y2FuNHg1eCwgUkszNTg4IHN1cHBvcnQgaW4gcm9ja2NoaXBfY2FuZmQsIGNsb2NrIGZyZXF1ZW5jeSBpbiBtX2Nhbl9wY2kpLCBhbmQgYSByZWZjb3VudGluZy9VQUYgZml4IGluIHZ4Y2FuLmMgdXNpbmcgbmV0ZGV2aWNlX3RyYWNrZXIuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IGV4cG9zZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludm9sdmUgY29tcGxleCB1bmluaXRpYWxpemVkIHN0YXRlLiBUaGUgdnhjYW4uYyBmaXggYWRkcmVzc2VzIGEgdXNlLWFmdGVyLWZyZWUvcmVmY291bnRpbmcgaXNzdWUgd2hpY2ggaXMgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2JmOWNlMTUwOTMwNzAzMTI5MjhhNWY2OTU2MWMxYTQ3NmQ3Mzg0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDIzOjQ3OjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcm9ja2NoaXAscmszNTY4djItY2FuZmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JvY2tjaGlwLHJrMzU2OHYyLWNhbmZkLnlhbWxcbmluZGV4IGEwNzdjMDMzMDAxMzcuLjgxZTJiNmRmZWIwMjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sXG5AQCAtMTYsNyArMTYsOSBAQCBhbGxPZjpcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgb25lT2Y6XG4tICAgICAgLSBjb25zdDogcm9ja2NoaXAscmszNTY4djItY2FuZmRcbisgICAgICAtIGVudW06XG4rICAgICAgICAgIC0gcm9ja2NoaXAscmszNTY4djItY2FuZmRcbisgICAgICAgICAgLSByb2NrY2hpcCxyazM1ODgtY2FuZmRcbiAgICAgICAtIGl0ZW1zOlxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2My1jYW5mZFxuICAgICAgICAgICAtIGNvbnN0OiByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpLGFtMzUxNy1oZWNjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzg3NGU5ZTQ5MjI0NFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vdGksYW0zNTE3LWhlY2MueWFtbFxuQEAgLTAsMCArMSw2NCBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2Nhbi90aSxhbTM1MTctaGVjYy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBUZXhhcyBJbnN0cnVtZW50cyBIaWdoIEVuZCBDQU4gQ29udHJvbGxlciAoSEVDQylcbitcbittYWludGFpbmVyczpcbisgIC0gRWR1YXJkIEJvc3RpbmEgXHUwMDNjZWdib3N0aW5hQGdtYWlsLmNvbVx1MDAzZVxuK1xuK2FsbE9mOlxuKyAgLSAkcmVmOiBjYW4tY29udHJvbGxlci55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogdGksYW0zNTE3LWhlY2NcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDNcbitcbisgIHJlZy1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogaGVjY1xuKyAgICAgIC0gY29uc3Q6IGhlY2MtcmFtXG4rICAgICAgLSBjb25zdDogbWJ4XG4rXG4rICBpbnRlcnJ1cHRzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgY2xvY2tzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgdGksdXNlLWhlY2MxaW50OlxuKyAgICB0eXBlOiBib29sZWFuXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIElmIHByb3ZpZGVkLCBjb25maWd1cmVzIEhFQ0MgdG8gcHJvZHVjZSBhbGwgaW50ZXJydXB0cyBvbiB0aGVcbisgICAgICBIRUNDMUlOVCBpbnRlcnJ1cHQgbGluZS4gQnkgZGVmYXVsdCwgdGhlIEhFQ0MwSU5UIGludGVycnVwdCBsaW5lXG4rICAgICAgd2lsbCBiZSB1c2VkLlxuKyAgICBkZWZhdWx0OiBmYWxzZVxuK1xuKyAgeGNlaXZlci1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlci5cbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWdcbisgIC0gcmVnLW5hbWVzXG4rICAtIGludGVycnVwdHNcbisgIC0gY2xvY2tzXG4rXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK2V4YW1wbGVzOlxuKyAgLSB8XG4rICAgIGNhbkA1YzA1MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJ0aSxhbTM1MTctaGVjY1wiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuKyAgICAgICAgICAgICAgXHUwMDNjMHg1YzA1MzAwMCAweDE4MFx1MDAzZSxcbisgICAgICAgICAgICAgIFx1MDAzYzB4NWMwNTIwMDAgMHgyMDBcdTAwM2U7XG4rICAgICAgICByZWctbmFtZXMgPSBcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiO1xuKyAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzI0XHUwMDNlO1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2aGVjY19ja1x1MDAzZTtcbisgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi90aV9oZWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGUwZjBhN2NmZTMyOTMuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3RpX2hlY2MudHh0XG4rKysgL2Rldi9udWxsXG5AQCAtMSwzMiArMCwwIEBAXG4tVGV4YXMgSW5zdHJ1bWVudHMgSGlnaCBFbmQgQ0FOIENvbnRyb2xsZXIgKEhFQ0MpXG4tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4tXG4tVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uLCB3aGF0IHRoZSBkZXZpY2Ugbm9kZVxuLWZvciB0aGUgaGVjYyBpbnRlcmZhY2UgY29udGFpbnMuXG4tXG4tUmVxdWlyZWQgcHJvcGVydGllczpcbi0tIGNvbXBhdGlibGU6IFwidGksYW0zNTE3LWhlY2NcIlxuLS0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ2hlY2MnLCAnaGVjYy1yYW0nXG4tICAgICAgIGFuZCAnbWJ4J1xuLS0gcmVnLW5hbWVzIDpcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiXG4tLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgdGhlIGhlY2MgaW50ZXJydXB0cyBzb3VyY2VzXG4tLSBjbG9ja3M6IGNsb2NrIHBoYW5kbGVzIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHRpLHVzZS1oZWNjMWludDogaWYgcHJvdmlkZWQgY29uZmlndXJlcyBIRUNDIHRvIHByb2R1Y2UgYWxsIGludGVycnVwdHNcbi1cdFx0ICAgb24gSEVDQzFJTlQgaW50ZXJydXB0IGxpbmUuIEJ5IGRlZmF1bHQgSEVDQzBJTlQgaW50ZXJydXB0XG4tXHRcdCAgIGxpbmUgd2lsbCBiZSB1c2VkLlxuLS0geGNlaXZlci1zdXBwbHk6IHJlZ3VsYXRvciB0aGF0IHBvd2VycyB0aGUgQ0FOIHRyYW5zY2VpdmVyXG4tXG4tRXhhbXBsZTpcbi1cbi1Gb3IgYW0zNTE3ZXZtIGJvYXJkOlxuLVx0aGVjYzogY2FuQDVjMDUwMDAwIHtcbi1cdFx0Y29tcGF0aWJsZSA9IFwidGksYW0zNTE3LWhlY2NcIjtcbi1cdFx0cmVnID0gXHUwMDNjMHg1YzA1MDAwMCAweDgwXHUwMDNlLFxuLVx0XHQgICAgICBcdTAwM2MweDVjMDUzMDAwIDB4MTgwXHUwMDNlLFxuLVx0XHQgICAgICBcdTAwM2MweDVjMDUyMDAwIDB4MjAwXHUwMDNlO1xuLVx0XHRyZWctbmFtZXMgPSBcImhlY2NcIiwgXCJoZWNjLXJhbVwiLCBcIm1ieFwiO1xuLVx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjRcdTAwM2U7XG4tXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmhlY2NfY2tcdTAwM2U7XG4tXHR9O1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuaW5kZXggNDA4MzU0OTcwNTBhNS4uMTgwMTVlNjBmZDZkNiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueCxjYW4ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4veGlsaW54LGNhbi55YW1sXG5AQCAtOCw3ICs4LDcgQEAgdGl0bGU6XG4gICBYaWxpbnggQ0FOIGFuZCBDQU5GRCBjb250cm9sbGVyXG4gXG4gbWFpbnRhaW5lcnM6XG4tICAtIEFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gXHUwMDNjYXBwYW5hLmR1cmdhLnJhb0B4aWxpbnguY29tXHUwMDNlXG4rICAtIEhhcmluaSBUIFx1MDAzY2hhcmluaS50QGFtZC5jb21cdTAwM2VcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbkBAIC01Myw2ICs1Myw5IEBAIHByb3BlcnRpZXM6XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWdcbiAgICAgZGVzY3JpcHRpb246IENBTiBUWF9PTCwgVFhfVEwgYW5kIFJYIEZJRk9zIGhhdmUgRUNDIHN1cHBvcnQoQVhJIENBTilcbiBcbisgIHBoeXM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jdHUvZnNtX3R4dF9idWZmZXJfdXNlci5zdmcgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuaW5kZXggMzgxMzIzNDIzYjRjYS4uYzhjZjBiYzQ5YjY5YSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jYW4vY3R1L2ZzbV90eHRfYnVmZmVyX3VzZXIuc3ZnXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2N0dS9mc21fdHh0X2J1ZmZlcl91c2VyLnN2Z1xuQEAgLTkzLDkgKzkzLDkgQEBcbiAgICBcdTAwM2NlbGxpcHNlIGN4PVwiMTQ0LjgyN1wiIGN5PVwiMTU5LjE0M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiL1x1MDAzZVxuICAgIFx1MDAzY2VsbGlwc2UgY3g9XCI1OS40MzY0XCIgY3k9XCIxNDIuODIzXCIgcng9XCI3LjM2NDU1XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4gICAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0NC44MjdcIiBjeT1cIjEyOS4xOTZcIiByeD1cIjEwLjg4NjZcIiByeT1cIjQuMzkzMDhcIi9cdTAwM2Vcbi0gICBcdTAwM2NlbGxpcHNlIGN4PVwiMTQzLjA3N1wiIGN5PVwiMTgwLjUzXCIgcng9XCIxMC44ODY2XCIgcnk9XCI0LjM5MzA4XCIvXHUwMDNlXG4gICBcdTAwM2MvZ1x1MDAzZVxuLSAgXHUwMDNjZWxsaXBzZSBjeD1cIjExMC4zODZcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjZmZjYjM1XCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuKyAgXHUwMDNjZWxsaXBzZSBjeD1cIjExMC4zODZcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjMjhhNGZmXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuKyAgXHUwMDNjZWxsaXBzZSBjeD1cIjE0My4wNzdcIiBjeT1cIjE4MC41M1wiIHJ4PVwiMTAuODg2NlwiIHJ5PVwiNC4zOTMwOFwiIGZpbGw9XCIjZmZjYjM1XCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS1saW5lY2FwPVwic3F1YXJlXCIgc3Ryb2tlLXdpZHRoPVwiLjQ5OTk5OVwiL1x1MDAzZVxuICAgXHUwMDNjdGV4dCB4PVwiMTEwLjkwOTA3XCIgeT1cIjE3OS40MjY4OFwiIGZvbnQtc2l6ZT1cIjMuMTc1cHhcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXHUwMDNlXHUwMDNjdHNwYW4geD1cIjExMC45MDkwN1wiIHk9XCIxNzkuNDI2ODhcIiBkeT1cIjAuNjAwMDAwMDJcIiB0ZXh0LWFsaWduPVwiY2VudGVyXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlx1MDAzZUFjY2Vzc2libGVcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTEwLjkwOTA3XCIgeT1cIjE4My4zOTU2M1wiXHUwMDNlXHUwMDNjdHNwYW4gZm9udC1zaXplPVwiMy4xNzVweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHUwMDNlZm9yIFNcdTAwM2MvdHNwYW5cdTAwM2VXXHUwMDNjL3RzcGFuXHUwMDNlXHUwMDNjL3RleHRcdTAwM2VcbiAgIFx1MDAzY3RleHQgeD1cIjE0My41ODY5XCIgeT1cIjE3OS41Mjc5NVwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCJcdTAwM2VcdTAwM2N0c3BhbiB4PVwiMTQzLjU4NjlcIiB5PVwiMTc5LjUyNzk1XCIgZHk9XCIxIDAgMCAwIDAgMFwiIGZvbnQtZmFtaWx5PVwic2Fucy1zZXJpZlwiIGZvbnQtc2l6ZT1cIjIuODIyMjJweFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHN0eWxlPVwiZm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWxcIlx1MDAzZUluYWNjZXNzaWJsZVx1MDAzYy90c3Bhblx1MDAzZVx1MDAzY3RzcGFuIHg9XCIxNDMuNTg2OVwiIHk9XCIxODMuMzY3ODZcIiBmb250LXNpemU9XCIzLjE3NXB4XCJcdTAwM2VcdTAwM2N0c3BhbiBmb250LXNpemU9XCIzLjE3NXB4XCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcdTAwM2Vmb3IgU1x1MDAzYy90c3Bhblx1MDAzZVdcdTAwM2MvdHNwYW5cdTAwM2VcdTAwM2MvdGV4dFx1MDAzZVxuICAgXHUwMDNjZyBmb250LXNpemU9XCIzLjE3NXB4XCJcdTAwM2VcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA5OTE0NjAwNTBkYTc0Li42YjQ5YTJjODBjZDVkIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjk1NzMsNyArMjk1NzMsNyBAQCBGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG4gRjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcbiBcbiBYSUxJTlggQ0FOIERSSVZFUlxuLU06XHRBcHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgcmFvIFx1MDAzY2FwcGFuYS5kdXJnYS5yYW9AeGlsaW54LmNvbVx1MDAzZVxuK006XHRIYXJpbmkgVCBcdTAwM2NoYXJpbmkudEBhbWQuY29tXHUwMDNlXG4gTDpcdGxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmdcbiBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbngsY2FuLnlhbWxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG5pbmRleCBlYjg1NjU0N2FlN2RmLi4xNmY4MDYwN2UxNTBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jXG5AQCAtMjQ2NCw3ICsyNDY0LDcgQEAgc3RydWN0IG1fY2FuX2NsYXNzZGV2ICptX2Nhbl9jbGFzc19hbGxvY2F0ZV9kZXYoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIFx0fVxuIFxuLVx0aWYgKGRldi1cdTAwM2VvZl9ub2RlIFx1MDAyNlx1MDAyNiBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LVx1MDAzZW9mX25vZGUsIFwid2FrZXVwLXNvdXJjZVwiKSlcbitcdGlmIChkZXYtXHUwMDNlb2Zfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcHJvcGVydHlfcHJlc2VudChkZXYtXHUwMDNlb2Zfbm9kZSwgXCJ3YWtldXAtc291cmNlXCIpKVxuIFx0XHRkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKGRldiwgdHJ1ZSk7XG4gXG4gXHQvKiBHZXQgVFggRklGTyBzaXplXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG5pbmRleCBlYjMxZWQxZjk2NDQ5Li5kMTFhN2M4OGZjMzJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuX3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW5fcGNpLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIGludCBtX2Nhbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIFx0bWNhbl9jbGFzcy1cdTAwM2VuZXQtXHUwMDNlaXJxID0gcGNpX2lycV92ZWN0b3IocGNpLCAwKTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlcG1fY2xvY2tfc3VwcG9ydCA9IDE7XG4gXHRtY2FuX2NsYXNzLVx1MDAzZXBtX3dha2Vfc291cmNlID0gMDtcbi1cdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbitcdG1jYW5fY2xhc3MtXHUwMDNlY2FuLmNsb2NrLmZyZXEgPSBNX0NBTl9DTE9DS19GUkVRX0VITDtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlaXJxX2VkZ2VfdHJpZ2dlcmVkID0gdHJ1ZTtcbiBcdG1jYW5fY2xhc3MtXHUwMDNlb3BzID0gXHUwMDI2bV9jYW5fcGNpX29wcztcbiBcbkBAIC0xODMsOCArMTgzLDggQEAgc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1fY2FuX3BjaV9wbV9vcHMsXG4gXHRcdFx0IG1fY2FuX3BjaV9zdXNwZW5kLCBtX2Nhbl9wY2lfcmVzdW1lKTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbV9jYW5fcGNpX2lkX3RhYmxlW10gPSB7XG4tXHR7IFBDSV9WREVWSUNFKElOVEVMLCAweDRiYzEpLCBNX0NBTl9DTE9DS19GUkVRX0VITCwgfSxcbi1cdHsgUENJX1ZERVZJQ0UoSU5URUwsIDB4NGJjMiksIE1fQ0FOX0NMT0NLX0ZSRVFfRUhMLCB9LFxuK1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMxKSB9LFxuK1x0eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg0YmMyKSB9LFxuIFx0eyAgfVx0LyogVGVybWluYXRpbmcgRW50cnkgKi9cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtX2Nhbl9wY2lfaWRfdGFibGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tX2Nhbi90Y2FuNHg1eC1jb3JlLmMgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4NXgtY29yZS5jXG5pbmRleCAzMWNjOWQwYWJkNDUzLi5hNWI4ODI5YWE1MTkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuY1xuQEAgLTIxMSw4ICsyMTEsMzEgQEAgc3RhdGljIGludCB0Y2FuNHg1eF93cml0ZV9maWZvKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldixcbiBcdHJldHVybiByZWdtYXBfYnVsa193cml0ZShwcml2LVx1MDAzZXJlZ21hcCwgVENBTjRYNVhfTVJBTV9TVEFSVCArIGFkZHJfb2Zmc2V0LCB2YWwsIHZhbF9jb3VudCk7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3IgKnJlZywgaW50IGVuYWJsZSlcbitzdGF0aWMgaW50IHRjYW40eDV4X3Bvd2VyX2VuYWJsZShzdHJ1Y3QgdGNhbjR4NXhfcHJpdiAqcHJpdiwgaW50IGVuYWJsZSlcbiB7XG4rXHRzdHJ1Y3QgcmVndWxhdG9yICpyZWcgPSBwcml2LVx1MDAzZXBvd2VyO1xuK1xuK1x0LypcbitcdCAqIFB1dCB0aGUgZGV2aWNlIGludG8gc2xlZXAgbW9kZSBpZiB0aGUgUlNUIHBpbiBpcyBhdmFpbGFibGUsXG4rXHQgKiBzaW5jZSBhIHdha2UtdXAgZXZlbnQsIFJTVCBwaW4gdG9nZ2xlLCBvciBwb3dlciBjeWNsZSBhcmUgdGhlIG9ubHlcbitcdCAqIHdheXMgdG8gZXhpdCBzbGVlcCBtb2RlLlxuK1x0ICogUmVkdW5kYW50IGlmIHRoZSByZWd1bGF0b3IgaXMgZXhjbHVzaXZlIHRvIHRoaXMgZGV2aWNlLCBidXQgdGhhdFxuK1x0ICogY2FuJ3QgYmUgZGV0ZXJtaW5lZCBoZXJlLlxuK1x0ICpcbitcdCAqIERhdGFzaGVldDogVENBTjQ1NTAsIHNlY3Rpb24gXCI4LjQuMyBTbGVlcCBNb2RlXCJcbitcdCAqIGh0dHBzOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RjYW40NTUwXG4rXHQgKi9cbitcdGlmIChwcml2LVx1MDAzZXJlc2V0X2dwaW8gXHUwMDI2XHUwMDI2ICFlbmFibGUpIHtcbitcdFx0aW50IHJldDtcbitcbitcdFx0cmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtXHUwMDNlcmVnbWFwLCBUQ0FONFg1WF9DT05GSUcsXG4rXHRcdFx0XHRcdCBUQ0FONFg1WF9NT0RFX1NFTF9NQVNLLFxuK1x0XHRcdFx0XHQgVENBTjRYNVhfTU9ERV9TTEVFUCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZXNwaS1cdTAwM2VkZXYsIFwiU2V0dGluZyBzbGVlcCBtb2RlIGZhaWxlZCAlcGVcXG5cIixcbitcdFx0XHRcdEVSUl9QVFIocmV0KSk7XG4rXHR9XG4rXG4gXHRpZiAoSVNfRVJSX09SX05VTEwocmVnKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG5AQCAtNDc2LDcgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgdGNhbjR4NXhfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRcdGdvdG8gb3V0X21fY2FuX2NsYXNzX2ZyZWVfZGV2O1xuIFx0fVxuIFxuLVx0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDEpO1xuK1x0cmV0ID0gdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDEpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwiRW5hYmxpbmcgcmVndWxhdG9yIGZhaWxlZCAlcGVcXG5cIixcbiBcdFx0XHRFUlJfUFRSKHJldCkpO1xuQEAgLTUzMSw3ICs1NTQsNyBAQCBzdGF0aWMgaW50IHRjYW40eDV4X2Nhbl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0cmV0dXJuIDA7XG4gXG4gb3V0X3Bvd2VyOlxuLVx0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtXHUwMDNlcG93ZXIsIDApO1xuK1x0dGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYsIDApO1xuICBvdXRfbV9jYW5fY2xhc3NfZnJlZV9kZXY6XG4gXHRtX2Nhbl9jbGFzc19mcmVlX2RldihtY2FuX2NsYXNzLVx1MDAzZW5ldCk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTU0Myw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXG4gXHRtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKFx1MDAyNnByaXYtXHUwMDNlY2Rldik7XG4gXG4tXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdi1cdTAwM2Vwb3dlciwgMCk7XG4rXHR0Y2FuNHg1eF9wb3dlcl9lbmFibGUocHJpdiwgMCk7XG4gXG4gXHRtX2Nhbl9jbGFzc19mcmVlX2Rldihwcml2LVx1MDAzZWNkZXYubmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmNcbmluZGV4IDI5ZGUwYzAxZTRlZGMuLjM3YzFjMjJjNDBjOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jXG5AQCAtNTAsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSBya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyA9IHtcbiBcdFx0UktDQU5GRF9RVUlSS19DQU5GRF9CUk9LRU4sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJrY2FuZmRfZGV2dHlwZV9kYXRhIHJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCA9IHtcbitcdC5tb2RlbCA9IFJLQ0FORkRfTU9ERUxfUkszNTg4LFxuK1x0LnF1aXJrcyA9IFJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNSB8XG4rXHRcdFJLQ0FORkRfUVVJUktfUkszNTY4X0VSUkFUVU1fNixcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBjaGFyICpfX3JrY2FuZmRfZ2V0X21vZGVsX3N0cihlbnVtIHJrY2FuZmRfbW9kZWwgbW9kZWwpXG4ge1xuIFx0c3dpdGNoIChtb2RlbCkge1xuQEAgLTU3LDYgKzYzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKl9fcmtjYW5mZF9nZXRfbW9kZWxfc3RyKGVudW0gcmtjYW5mZF9tb2RlbCBtb2RlbClcbiBcdFx0cmV0dXJuIFwicmszNTY4djJcIjtcbiBcdGNhc2UgUktDQU5GRF9NT0RFTF9SSzM1NjhWMzpcbiBcdFx0cmV0dXJuIFwicmszNTY4djNcIjtcbitcdGNhc2UgUktDQU5GRF9NT0RFTF9SSzM1ODg6XG4rXHRcdHJldHVybiBcInJrMzU4OFwiO1xuIFx0fVxuIFxuIFx0cmV0dXJuIFwiXHUwMDNjdW5rbm93blx1MDAzZVwiO1xuQEAgLTE0OCw2ICsxNTYsMTIgQEAgc3RhdGljIGludCBya2NhbmZkX3NldF9iaXR0aW1pbmcoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbiBcbiBcdHJrY2FuZmRfd3JpdGUocHJpdiwgUktDQU5GRF9SRUdfRkRfREFUQV9CSVRUSU1JTkcsIHJlZ19kYnQpO1xuIFxuK1x0LyogUkszNTg4IENBTi1GRCBCUlMgd29ya3Mgd2l0aCBUREMgZGlzYWJsZWQuICovXG4rXHRpZiAocHJpdi1cdTAwM2VkZXZ0eXBlX2RhdGEubW9kZWwgPT0gUktDQU5GRF9NT0RFTF9SSzM1ODgpIHtcbitcdFx0cmtjYW5mZF93cml0ZShwcml2LCBSS0NBTkZEX1JFR19UUkFOU01JVF9ERUxBWV9DT01QRU5TQVRJT04sIDApO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHRkY28gPSAocHJpdi1cdTAwM2VjYW4uY2xvY2suZnJlcSAvIGRidC1cdTAwM2ViaXRyYXRlKSAqIDIgLyAzO1xuIFx0dGRjbyA9IG1pbih0ZGNvLCBGSUVMRF9NQVgoUktDQU5GRF9SRUdfVFJBTlNNSVRfREVMQVlfQ09NUEVOU0FUSU9OX1REQ19PRkZTRVQpKTtcbiBcbkBAIC04NDYsNiArODYwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmtjYW5mZF9vZl9tYXRjaFtdID0ge1xuIFx0fSwge1xuIFx0XHQuY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4djMtY2FuZmRcIixcbiBcdFx0LmRhdGEgPSBcdTAwMjZya2NhbmZkX2RldnR5cGVfZGF0YV9yazM1Njh2MyxcbitcdH0sIHtcbitcdFx0LmNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU4OC1jYW5mZFwiLFxuK1x0XHQuZGF0YSA9IFx1MDAyNnJrY2FuZmRfZGV2dHlwZV9kYXRhX3JrMzU4OCxcbiBcdH0sIHtcbiBcdFx0Lyogc2VudGluZWwgKi9cbiBcdH0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLXJ4LmMgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuaW5kZXggNDc1YzA0MDllMjE1YS4uMjRlODdkYWExZGYwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1yeC5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtcnguY1xuQEAgLTI4MSw3ICsyODEsMTAgQEAgcmtjYW5mZF9yeF9maWZvX2dldF9sZW4oY29uc3Qgc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbiB7XG4gXHRjb25zdCB1MzIgcmVnID0gcmtjYW5mZF9yZWFkKHByaXYsIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTCk7XG4gXG4tXHRyZXR1cm4gRklFTERfR0VUKFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0NOVCwgcmVnKTtcbitcdGlmIChwcml2LVx1MDAzZWRldnR5cGVfZGF0YS5tb2RlbCA9PSBSS0NBTkZEX01PREVMX1JLMzU4OClcbitcdFx0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4LCByZWcpO1xuK1xuK1x0cmV0dXJuIEZJRUxEX0dFVChSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTY4LCByZWcpO1xuIH1cbiBcbiBpbnQgcmtjYW5mZF9oYW5kbGVfcnhfaW50KHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLmggYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuaW5kZXggOTMxMzFjN2Q3ZjU0ZC4uOTViZWE5YmZkOGEyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC5oXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQuaFxuQEAgLTIxNCw3ICsyMTQsOCBAQFxuICNkZWZpbmUgUktDQU5GRF9SRUdfVFhFVkVOVF9GSUZPX0NUUkxfVFhFX0ZJRk9fRU5BQkxFIEJJVCgwKVxuIFxuICNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMIDB4MTE4XG4tI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlQgR0VOTUFTSyg2LCA0KVxuKyNkZWZpbmUgUktDQU5GRF9SRUdfUlhfRklGT19DVFJMX1JYX0ZJRk9fQ05UX1JLMzU2OCBHRU5NQVNLKDYsIDQpXG4rI2RlZmluZSBSS0NBTkZEX1JFR19SWF9GSUZPX0NUUkxfUlhfRklGT19DTlRfUkszNTg4IEdFTk1BU0soNywgNSlcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0ZVTExfV0FURVJNQVJLIEdFTk1BU0soMywgMSlcbiAjZGVmaW5lIFJLQ0FORkRfUkVHX1JYX0ZJRk9fQ1RSTF9SWF9GSUZPX0VOQUJMRSBCSVQoMClcbiBcbkBAIC0zMzEsNiArMzMyLDExIEBAXG4gICogcmFyZWx5IHdpdGggdGhlIHN0YW5kYXJkIGNsb2NrIG9mIDMwMCBNSHosIGJ1dCBhbG1vc3QgaW1tZWRpYXRlbHlcbiAgKiBhdCA4MCBNSHouXG4gICpcbisgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgZW1wdHkgRklGTyBjb25kaXRpb24uXG4rICogSW4gdGhhdCBzZXR1cCByeF9maWZvX2VtcHR5X2Vycm9ycyBpbmNyZW1lbnRzIHdoZW4gdGhlIGJ1c1xuKyAqIHRyYW5zaXRpb25zIGZyb20gaWRsZSB0byBoaWdoIENBTi1GRCBsb2FkIGFuZCBzdG9wcyBncm93aW5nIG9uY2VcbisgKiB0aGUgYnVzIHJlYWNoZXMgYSBzdGVhZHkgc3RhdGUuXG4rICpcbiAgKiBUbyB3b3JrYXJvdW5kIHRoaXMgcHJvYmxlbSwgY2hlY2sgZm9yIGVtcHR5IEZJRk8gd2l0aFxuICAqIHJrY2FuZmRfZmlmb19oZWFkZXJfZW1wdHkoKSBpbiBya2NhbmZkX2hhbmRsZV9yeF9pbnRfb25lKCkgYW5kIGV4aXRcbiAgKiBlYXJseS5cbkBAIC0zNDQsNiArMzUwLDggQEBcbiAvKiBFcnJhdHVtIDY6IFRoZSBDQU4gY29udHJvbGxlcidzIHRyYW5zbWlzc2lvbiBvZiBleHRlbmRlZCBmcmFtZXMgbWF5XG4gICogaW50ZXJtaXR0ZW50bHkgY2hhbmdlIGludG8gc3RhbmRhcmQgZnJhbWVzXG4gICpcbisgKiBUZXN0cyBvbiB0aGUgcmszNTg4IHNob3cgdGhlIHNhbWUgcHJvYmxlbS5cbisgKlxuICAqIFdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYWN0aXZhdGluZyBzZWxmIHJlY2VwdGlvbiAoUlhTVFgpLiBJZiB3ZVxuICAqIGhhdmUgcGVuZGluZyBUWCBDQU4gZnJhbWVzLCBjaGVjayBhbGwgUlgnZWQgQ0FOIGZyYW1lcyBpblxuICAqIHJrY2FuZmRfcnhzdHhfZmlsdGVyKCkuXG5AQCAtNDI0LDYgKzQzMiw5IEBAXG4gICogICAgIGNhbnNlcXVlbmNlIC1ydiAtaSAxXG4gICpcbiAgKiAtIFRYIHN0YXJ2YXRpb24gYWZ0ZXIgcmVwZWF0ZWQgQnVzLU9mZlxuKyAqICAgVGVzdHMgb24gdGhlIHJrMzU4OCBzaG93IHRoZSBzYW1lIHByb2JsZW0uIEluIGFcbisgKiAgIDEwLWN5Y2xlIEJ1cy1PZmYgcmVjb3ZlcnkgdGVzdCwgOSBjeWNsZXMgZmFpbGVkIHRvIHNlbmQgYWZ0ZXIgdGhlXG4rICogICBjb250cm9sbGVyIHJlc3RhcnRlZC5cbiAgKiAgIFRvIHJlcHJvZHVjZTpcbiAgKiAgIGhvc3Q6XG4gICogICAgIHNsZWVwIDMgXHUwMDI2XHUwMDI2IGNhbmdlbiBjYW4wIC1JMiAtTGkgLURpIC1wMTAgLWcgMC4wXG5AQCAtNDM0LDYgKzQ0NSw3IEBAXG4gZW51bSBya2NhbmZkX21vZGVsIHtcbiBcdFJLQ0FORkRfTU9ERUxfUkszNTY4VjIgPSAweDM1NjgyLFxuIFx0UktDQU5GRF9NT0RFTF9SSzM1NjhWMyA9IDB4MzU2ODMsXG4rXHRSS0NBTkZEX01PREVMX1JLMzU4OCA9IDB4MzU4OCxcbiB9O1xuIFxuIHN0cnVjdCBya2NhbmZkX2RldnR5cGVfZGF0YSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmNcbmluZGV4IDgyNTA4YTg2NTA5NTkuLjNiOWIyZjEwNGQ4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jXG5AQCAtMTU2NSw3ICsxNTY1LDcgQEAgc3RhdGljIGludCBnc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXG4gXHRpZiAoaWNvdW50IFx1MDAzZSB0eXBlX21heChwYXJlbnQtXHUwMDNlY2hhbm5lbF9jbnQpKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2aW50Zi1cdTAwM2VkZXYsXG4tXHRcdFx0XCJEcml2ZXIgY2Fubm90IGhhbmRsZSBtb3JlIHRoYXQgJXUgQ0FOIGludGVyZmFjZXNcXG5cIixcbitcdFx0XHRcIkRyaXZlciBjYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAldSBDQU4gaW50ZXJmYWNlc1xcblwiLFxuIFx0XHRcdHR5cGVfbWF4KHBhcmVudC1cdTAwM2VjaGFubmVsX2NudCkpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdnhjYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG5pbmRleCBlODgyMjUwMTgwZWY2Li45ZTJlMjVkMDI0NzE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi92eGNhbi5jXG5AQCAtMzMsNiArMzMsNyBAQCBNT0RVTEVfQUxJQVNfUlROTF9MSU5LKERSVl9OQU1FKTtcbiBcbiBzdHJ1Y3QgdnhjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSBfX3JjdVx0KnBlZXI7XG4rXHRuZXRkZXZpY2VfdHJhY2tlciBwZWVyX3RyYWNrZXI7XG4gfTtcbiBcbiBzdGF0aWMgbmV0ZGV2X3R4X3QgdnhjYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqb3NrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC0yNjgsOSArMjY5LDExIEBAIHN0YXRpYyBpbnQgdnhjYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogY3Jvc3MgbGluayB0aGUgZGV2aWNlIHBhaXIgKi9cbiBcdHByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHByaXYtXHUwMDNlcGVlciwgcGVlcik7XG4rXHRuZXRkZXZfaG9sZChwZWVyLCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYocGVlcik7XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocHJpdi1cdTAwM2VwZWVyLCBkZXYpO1xuK1x0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yODEsMjQgKzI4NCwyNSBAQCBzdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBzdGF0aWMgdm9pZCB2eGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4ge1xuK1x0bmV0ZGV2aWNlX3RyYWNrZXIgKnBlZXJfdHJhY2tlcjtcbiBcdHN0cnVjdCB2eGNhbl9wcml2ICpwcml2O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKnBlZXI7XG4gXG4gXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHBlZXIgPSBydG5sX2RlcmVmZXJlbmNlKHByaXYtXHUwMDNlcGVlcik7XG4rXHRwZWVyX3RyYWNrZXIgPSBcdTAwMjZwcml2LVx1MDAzZXBlZXJfdHJhY2tlcjtcbitcdHBlZXIgPSB1bnJjdV9wb2ludGVyKHhjaGcoXHUwMDI2cHJpdi1cdTAwM2VwZWVyLCBOVUxMKSk7XG4rXHRpZiAoIXBlZXIpXG4rXHRcdHJldHVybjtcbiBcbi1cdC8qIE5vdGUgOiBkZWxsaW5rKCkgaXMgY2FsbGVkIGZyb20gZGVmYXVsdF9kZXZpY2VfZXhpdF9iYXRjaCgpLFxuLVx0ICogYmVmb3JlIGEgcmN1X3N5bmNocm9uaXplKCkgcG9pbnQuIFRoZSBkZXZpY2VzIGFyZSBndWFyYW50ZWVkXG4tXHQgKiBub3QgYmVpbmcgZnJlZWQgYmVmb3JlIG9uZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuLVx0ICovXG4tXHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuIFxuLVx0aWYgKHBlZXIpIHtcbi1cdFx0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuLVx0XHRSQ1VfSU5JVF9QT0lOVEVSKHByaXYtXHUwMDNlcGVlciwgTlVMTCk7XG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKHBlZXIsIGhlYWQpO1xuLVx0fVxuK1x0cHJpdiA9IG5ldGRldl9wcml2KHBlZXIpO1xuK1x0ZGV2ID0gdW5yY3VfcG9pbnRlcih4Y2hnKFx1MDAyNnByaXYtXHUwMDNlcGVlciwgTlVMTCkpO1xuK1x0aWYgKGRldilcbitcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVfbmV0KGRldl9uZXQoZGV2KSwgcGVlciwgaGVhZCk7XG4rXG4rXHRuZXRkZXZfcHV0KHBlZXIsIHBlZXJfdHJhY2tlcik7XG4rXHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VwZWVyX3RyYWNrZXIpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhjYW5fcG9saWN5W1ZYQ0FOX0lORk9fTUFYICsgMV0gPSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QyMzo0Nzo1My45NzAyOTYyNzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MzY0NjUxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIFJldmlldzogQ0FOIERyaXZlciBVcGRhdGVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHNldCBvZiB1cGRhdGVzIGFjcm9zcyB2YXJpb3VzIENBTiBkcml2ZXJzLiBOb3RoaW5nIGhlcmUgc2NyZWFtcyBcImNyaXRpY2FsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHlcIiBhdCBmaXJzdCBnbGFuY2UsIGJ1dCBsZXQncyBkaXZlIGRlZXBlciBhbmQgZW5zdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHN1YnRsZS5cblxuRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyB0byB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGByb2NrY2hpcCxyazM1Njh2Mi1jYW5mZC55YW1sYCwgYHRpLGFtMzUxNy1oZWNjLnlhbWxgLCBhbmQgYHhpbGlueCxjYW4ueWFtbGAuIFRoZXNlIGFyZSBjcml0aWNhbCBmb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgYnV0IEkgZG9uJ3QgYW50aWNpcGF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGluIHRoZXNlIG1vZGlmaWNhdGlvbnMgYWxvbmUuIFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZXMgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuIERvY3VtZW50YXRpb24gaXMgYWxzbyB1cGRhdGVkIChgZnNtX3R4dF9idWZmZXJfdXNlci5zdmdgIGFuZCBgTUFJTlRBSU5FUlNgKSwgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2VzLiBJbiBgbV9jYW4uY2AsIGl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgdXBkYXRlIHRvIGhvdyB0aGUgXCJ3YWtldXAtc291cmNlXCIgcHJvcGVydHkgaXMgcmVhZCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgd2hpY2ggc2hvdWxkbid0IGludHJvZHVjZSBhbnkgbmV3IHNlY3VyaXR5IGNvbmNlcm5zLiBTaW1pbGFybHksIHRoZSBgbV9jYW5fcGNpLmNgIGNoYW5nZSBqdXN0IGZpeGVzIHRoZSBjbG9jayBmcmVxdWVuY3ksIG1ha2luZyBzdXJlIHRoZSBkZXZpY2UgZ2V0cyB0aGUgY29ycmVjdCBjbG9jayByYXRlLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBjaGFuZ2UgaXMgaW4gYHZ4Y2FuLmNgLiBIZXJlLCB3ZSBzZWUgYSBjb3JyZWN0aW9uIHVzaW5nIGBuZXRkZXZpY2VfdHJhY2tlcmAgdG8gaGFuZGxlIHJlZmNvdW50aW5nIG9uIHRoZSBwZWVyIGRldmljZXMgaW4gdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZS4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgaXMgYSBzb2xpZCBmaXggYW5kIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgd2Ugd2FudCB0byBzZWUuIEdpdmVuIHRoZSBuYXR1cmUgb2YgYHZ4Y2FuLmNgLCBLQVNBTiBzaG91bGQgYmUgYWJsZSB0byBjYXRjaCB0aGUgcmVmY291bnQgZXJyb3JzLCB3aGljaCBzaW1wbGlmaWVzIHRoZSByZXZpZXcuXG5cblRoZSBgdGNhbjR4NXgtY29yZS5jYCB1cGRhdGUgc2VlbXMgZm9jdXNlZCBvbiBlbmFibGluZyBzbGVlcCBtb2RlIGluIHRoZSBoYXJkd2FyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGJ1Z3MgdGhhdCByZXF1aXJlIEtBU0FOIHRvIGNhdGNoLCBidXQgaXQncyB1bmxpa2VseSB0byBiZSBzZWN1cml0eS1yZWxldmFudC4gSXQncyBpbXBvcnRhbnQgZm9yIHBvd2VyIG1hbmFnZW1lbnQsIGJ1dCB0aGUgY29yZSBmdW5jdGlvbiBpcyBqdXN0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBoYXJkd2FyZSBmZWF0dXJlcy5cblxuVGhlIGByb2NrY2hpcF9jYW5mZC1jb3JlLmNgLCBgcm9ja2NoaXBfY2FuZmQtcnguY2AsIGFuZCBgcm9ja2NoaXBfY2FuZmQuaGAgY2hhbmdlcyBhZGQgc3VwcG9ydCBmb3IgdGhlIFJLMzU4OCBTT0MuIFRoaXMgdXN1YWxseSByZXF1aXJlcyB2ZXJ5IGNhcmVmdWwgcmV2aWV3LiBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2VzIHNpbXBseSBpbnZvbHZlIHNlbGVjdGluZyB0aGUgY29ycmVjdCByZWdpc3RlciBmaWVsZHMgYmFzZWQgb24gdGhlIGRldmljZSBtb2RlbC4gSXQgYXBwZWFycyB0aGF0IHRoZSB1cGRhdGUgaXMgZG9uZSBpbiBhbiBleHBsaWNpdCwgc2FmZSB3YXkuXG5cbkZpbmFsbHksIHdlIGhhdmUgYSB0eXBvIGZpeCBpbiBgZ3NfdXNiLmNgLlxuXG5CYXNlZCBvbiBteSBhbmFseXNpcywgdGhlc2UgY2hhbmdlcyBhcmUgYSBtaXggb2YgZGV2aWNlIHRyZWUgdXBkYXRlcywgaGFyZHdhcmUtc3BlY2lmaWMgZml4ZXMsIGFuZCBidWcgZml4ZXMgZm9yIHRoZSBkcml2ZXJzLiBNb3N0IGltcG9ydGFudGx5LCBub25lIG9mIHRoZXNlIGNoYW5nZXMgc2VlbSB0byBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UuIFRoZSBgdnhjYW4uY2AgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSByZWZjb3VudGluZy9VQUYsIGEgY2xhc3NpYyBwcm9ibGVtIHRoYXQncyBhbHJlYWR5IHdlbGwtdW5kZXJzdG9vZCBhbmQgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTi5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgZG9lcyAqbm90KiB3YXJyYW50IGEgYE5lZWRzS01TQU5gIGxhYmVsLiBUaGUgZm9jdXMgaXMgbW9yZSBvbiBzdGFiaWxpdHkgYW5kIGhhcmR3YXJlIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0OTgsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDIzOjQ4OjA4LjQwNjc2NTIwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGRldmljZSB0cmVlIGJpbmRpbmcgdXBkYXRlcywgaGFyZHdhcmUgZHJpdmVyIGZpeGVzIChzbGVlcCBtb2RlIGhhbmRsaW5nIGluIHRjYW40eDV4LCBSSzM1ODggc3VwcG9ydCBpbiByb2NrY2hpcF9jYW5mZCwgY2xvY2sgZnJlcXVlbmN5IGluIG1fY2FuX3BjaSksIGFuZCBhIHJlZmNvdW50aW5nL1VBRiBmaXggaW4gdnhjYW4uYyB1c2luZyBuZXRkZXZpY2VfdHJhY2tlci4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBtb2RpZnkgYm91bmRzIGNoZWNraW5nIGluIGEgd2F5IHRoYXQgZXhwb3NlcyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW52b2x2ZSBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgc3RhdGUuIFRoZSB2eGNhbi5jIGZpeCBhZGRyZXNzZXMgYSB1c2UtYWZ0ZXItZnJlZS9yZWZjb3VudGluZyBpc3N1ZSB3aGljaCBpcyBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZGV2aWNlIHRyZWUgYmluZGluZyB1cGRhdGVzLCBoYXJkd2FyZSBkcml2ZXIgZml4ZXMgKHNsZWVwIG1vZGUgaGFuZGxpbmcgaW4gdGNhbjR4NXgsIFJLMzU4OCBzdXBwb3J0IGluIHJvY2tjaGlwX2NhbmZkLCBjbG9jayBmcmVxdWVuY3kgaW4gbV9jYW5fcGNpKSwgYW5kIGEgcmVmY291bnRpbmcvVUFGIGZpeCBpbiB2eGNhbi5jIHVzaW5nIG5ldGRldmljZV90cmFja2VyLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgaW4gYSB3YXkgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvciBpbnZvbHZlIGNvbXBsZXggdW5pbml0aWFsaXplZCBzdGF0ZS4gVGhlIHZ4Y2FuLmMgZml4IGFkZHJlc3NlcyBhIHVzZS1hZnRlci1mcmVlL3JlZmNvdW50aW5nIGlzc3VlIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[1] Phase: Succeeded StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-17 23:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-17 23:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2] Phase: Succeeded StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-18 03:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-18 03:29:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-17 23:48:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 23:48:19 +0000 UTC FinishedAt: 2026-08-17 23:48:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc77jt/series-workflowc77jt-convert-artifact-2791435452/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 23:48:29 +0000 UTC FinishedAt: 2026-08-18 00:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 23:48:29 +0000 UTC FinishedAt: 2026-08-18 00:04:37 +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:*e08162b0-3985-4e2b-9a7d-b2846dc2c31b,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-workflowc77jt/series-workflowc77jt-convert-artifact-2791435452/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": "51ea5b85-1dc8-48fc-97c3-334b05c356ed", "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-workflowc77jt/series-workflowc77jt-build-action-841383402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 23:48:29 +0000 UTC FinishedAt: 2026-08-18 00:04:27 +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:*e08162b0-3985-4e2b-9a7d-b2846dc2c31b,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-workflowc77jt/series-workflowc77jt-convert-artifact-2791435452/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": "51ea5b85-1dc8-48fc-97c3-334b05c356ed", "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-workflowc77jt/series-workflowc77jt-build-action-841383402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 00:04:37 +0000 UTC FinishedAt: 2026-08-18 00:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 00:04:37 +0000 UTC FinishedAt: 2026-08-18 00:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 00:04:37 +0000 UTC FinishedAt: 2026-08-18 00:04:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 00:04:37 +0000 UTC FinishedAt: 2026-08-18 00:04:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc77jt/series-workflowc77jt-convert-artifact-1487969275/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 00:04:47 +0000 UTC FinishedAt: 2026-08-18 00:06:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 00:04:47 +0000 UTC FinishedAt: 2026-08-18 00:06:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*51ea5b85-1dc8-48fc-97c3-334b05c356ed,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-workflowc77jt/series-workflowc77jt-build-action-841383402/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-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 00:06:53 +0000 UTC FinishedAt: 2026-08-18 00:06:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 00:06:53 +0000 UTC FinishedAt: 2026-08-18 00:06:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 00:06:53 +0000 UTC FinishedAt: 2026-08-18 00:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 00:06:53 +0000 UTC FinishedAt: 2026-08-18 00:23:31 +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:*e08162b0-3985-4e2b-9a7d-b2846dc2c31b,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-workflowc77jt/series-workflowc77jt-convert-artifact-1487969275/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": "3eba97fa-33e9-4e56-8213-e22a1a9aa37e", "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-workflowc77jt/series-workflowc77jt-build-action-3270447135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 00:06:53 +0000 UTC FinishedAt: 2026-08-18 00:23:21 +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:*e08162b0-3985-4e2b-9a7d-b2846dc2c31b,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-workflowc77jt/series-workflowc77jt-convert-artifact-1487969275/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": "3eba97fa-33e9-4e56-8213-e22a1a9aa37e", "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-workflowc77jt/series-workflowc77jt-build-action-3270447135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 00:23:31 +0000 UTC FinishedAt: 2026-08-18 00:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 00:23:31 +0000 UTC FinishedAt: 2026-08-18 00:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 00:23:31 +0000 UTC FinishedAt: 2026-08-18 00:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 00:23:31 +0000 UTC FinishedAt: 2026-08-18 00:25:30 +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:*3eba97fa-33e9-4e56-8213-e22a1a9aa37e,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-workflowc77jt/series-workflowc77jt-build-action-3270447135/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-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 03:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 03:29: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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"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:*51ea5b85-1dc8-48fc-97c3-334b05c356ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3eba97fa-33e9-4e56-8213-e22a1a9aa37e,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-workflowc77jt/series-workflowc77jt-build-action-841383402/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-workflowc77jt/series-workflowc77jt-build-action-3270447135/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 00:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 00:25:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"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-workflowc77jt/series-workflowc77jt-convert-artifact-1015159028/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 00:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 00:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 00:25:40 +0000 UTC FinishedAt: 2026-08-18 00:25:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 00:25:50 +0000 UTC FinishedAt: 2026-08-18 03:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc77jt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxcan_newlink","vxcan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_VXCAN"],"series_id":"ef095d48-7bd1-4b87-aeaa-156c979669cc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 00:25:50 +0000 UTC FinishedAt: 2026-08-18 03:29:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*51ea5b85-1dc8-48fc-97c3-334b05c356ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3eba97fa-33e9-4e56-8213-e22a1a9aa37e,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-workflowc77jt/series-workflowc77jt-build-action-841383402/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-workflowc77jt/series-workflowc77jt-build-action-3270447135/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-workflowc77jt/series-workflowc77jt-convert-artifact-1015159028/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,}