Name: series-workflownl6zb Phase: Succeeded StartedAt: 2026-09-10 18:03:18 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[0] Phase: Succeeded StartedAt: 2026-09-10 18:03:18 +0000 UTC FinishedAt: 2026-09-10 18:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 18:03:18 +0000 UTC FinishedAt: 2026-09-10 18:06:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "50d05c7c76c96b90462f24debacca971d2e86713", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_BLK", "VIRTIO", "PM_SLEEP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "50d05c7c76c96b90462f24debacca971d2e86713", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_BLK", "VIRTIO", "PM_SLEEP" ], "series_id": "7eb10944-0527-4290-bd07-3b98f2452ce0" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "kvm" ], "focus_symbols": [ "virtblk_freeze_priv", "virtblk_freeze", "virtblk_reset_prepare", "virtio_device_freeze", "virtio_device_reset_prepare" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19CTEsmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDssCiAgICAmIzM0O1BNX1NMRUVQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX2ZyZWV6ZSYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWU1YWRkZjIwOTcyMmFkNGMxYTUzMWNjZDY2Zjc2OTBlOTNlYTZkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbkBAIC0xNTk1LDcgJiM0MzsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuIFxuIFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbiBcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbi1cdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbiYjNDM7XHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XG4gXG4gXHQvKiBFbnN1cmUgd2UgZG9uJiMzOTt0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19CTEsmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDssCiAgICAmIzM0O1BNX1NMRUVQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX2ZyZWV6ZSYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkgdG8gdGhlIHN5bmNocm9ub3VzIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgZHVyaW5nIHZpcnRpb19ibGsgZGV2aWNlIGZyZWV6ZSBhbmQgcmVzZXQgcHJlcGFyYXRpb24sIGVuc3VyaW5nIHRoYXQgUkNVIGdyYWNlIHBlcmlvZHMgYW5kIGluLWZsaWdodCBkaXNwYXRjaGVzIGNvbXBsZXRlIGJlZm9yZSB2aXJ0cXVldWVzIGFyZSBkZWxldGVkLiBUaGlzIHRvdWNoZXMgcmVhY2hhYmxlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlc2V0IHBhdGhzIGZvciB2aXJ0aW8gYmxvY2sgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTg6MDQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCkBAIC0xNTk1LDcgJiM0MzsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCiAJLyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi8KIAltZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7Ci0JYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpOwomIzQzOwlibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTsKIAlibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpOwogCiAJLyogRW5zdXJlIHdlIGRvbiYjMzk7dCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkluc3BlY3RpbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMg4oCTIHdoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGluIHRoZSBkaWZmLiBUaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBiZWVuIG1vZGlmaWVkIGFuZCB3aHkuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbmF2aWdhdGUgYWxsIG9mIHRoZSB1c2FnZXMgb2YgdGhpcyBmdW5jdGlvbiwgd2hpY2ggcmVxdWlyZXMgbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjay4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gdXNlIHRvb2xzIGxpa2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyB3aGVyZSBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgYHZpcnRpb19ibGsuY2AuIEkmIzM5O2xsIHdhbnQgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE1NjQ9c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU4OS1cbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE1OTA6c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5MS17XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTYzNT1zdGF0aWMgaW50IHZpcnRibGtfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzNi17XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjM3Olx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjM4LX1cbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjQ2PXN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0Ny17XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjQ4Olx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIHZpcnRpb19ibGsuYzogQSBEZWVwIERpdmUgaW50byBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGB2aXJ0aW9fYmxrLmNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyAxNTgwLTE2NzAuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyByZWdpb24gYmVjYXVzZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYmxvY2sgbGF5ZXIgYW5kIHZpcnRpbywgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgcmVxdWVzdCBwcm9jZXNzaW5nIGhhcHBlbnMuIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgaG93IHJlcXVlc3RzIGZyb20gdGhlIGhvc3QgT1MgYXJlIHRyYW5zbGF0ZWQgaW50byB2aXJ0aW8gY29tbWFuZHMgYW5kIHRoZW4gc3VibWl0dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGRldmljZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB2aXJ0cXVldWUsIGhvdyBpdCBoYW5kbGVzIGNvbW1hbmQgY29tcGxldGlvbiwgYW5kIHdoZXJlIHRoZSBlcnJvciBoYW5kbGluZyBzaXRzLiBJIGFudGljaXBhdGUgdGhhdCB0aGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggdGhlIHZpcnRpbyB0cmFuc3BvcnQgbGF5ZXIsIHBlcmhhcHMgdXNpbmcgZnVuY3Rpb25zIGxpa2UgYHZpcnRxdWV1ZV9hZGRfYnVmYCBhbmQgYHZpcnRxdWV1ZV9raWNrYC4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgdG8gdHJhY2sgcmVxdWVzdHM7IGxpa2VseSB0aGVyZSYjMzk7cyBhIHN0cnVjdCB0byBob2xkIGFsbCB0aGUgbWV0YWRhdGEgYWJvdXQgYW4gYWN0aXZlIHJlcXVlc3QsIGZyb20gdGhlIGJsb2NrIEkvTyByZXF1ZXN0IHN0cnVjdHVyZSBkb3duIHRvIHRoZSB2aXJ0aW8gZGVzY3JpcHRvci4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3JpdGljYWwgaGVyZSwgd2l0aCB2YXJpb3VzIGNoZWNrcyBmb3IgdGhpbmdzIGxpa2UgZGV2aWNlIGVycm9ycywgYnVmZmVyIG92ZXJmbG93cywgb3IgdGhlIHVzdWFsIHN1c3BlY3RzIHRoYXQgY2FuIHBsYWd1ZSBhIGRyaXZlciBvcGVyYXRpbmcgb24gcmF3IGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmc7IGlzIHRoaXMgc3luY2hyb25vdXMsIGFzeW5jaHJvbm91cywgb3IgYSBoeWJyaWQgbW9kZWw/IEdpdmVuIHRoZSBuYXR1cmUgb2YgYmxvY2sgSS9PLCBJJiMzOTtkIGd1ZXNzIHRoYXQgdGhpcyB3aWxsIGludm9sdmUgc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBjb21wbGV0aW9uIGhhbmRsaW5nIHRvIGtlZXAgdGhlIGRldmljZSByZXNwb25zaXZlLiBJJiMzOTttIGV4cGVjdGluZyBsb2NraW5nIHRvIGJlIHByZXNlbnQsIGFuZCBpdCYjMzk7bGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIHdoYXQgZ3JhbnVsYXJpdGllcyB0aGV5IHVzZS4gSSYjMzk7bSBhcm1lZCB3aXRoIG15IGtub3dsZWRnZSBvZiB2aXJ0aW8sIGJsb2NrIGRldmljZSBkcml2ZXJzLCBhbmQgeWVhcnMgb2Yga2VybmVsIGV4cGVyaWVuY2UsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGFyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYwOlx0b3V0OlxuMTU2MTpcdFx0cmV0dXJuIGVycjtcbjE1NjI6XHR9XG4xNTYzOlx0XG4xNTY0Olx0c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNTY1Olx0e1xuMTU2NjpcdFx0c3RydWN0IHZpcnRpb19ibGsgKnZibGsgPSB2ZGV2LVx1MDAzZXByaXY7XG4xNTY3Olx0XG4xNTY4Olx0XHQvKiBNYWtlIHN1cmUgbm8gd29yayBoYW5kbGVyIGlzIGFjY2Vzc2luZyB0aGUgZGV2aWNlLiAqL1xuMTU2OTpcdFx0Zmx1c2hfd29yayhcdTAwMjZ2YmxrLVx1MDAzZWNvbmZpZ193b3JrKTtcbjE1NzA6XHRcbjE1NzE6XHRcdGRlbF9nZW5kaXNrKHZibGstXHUwMDNlZGlzayk7XG4xNTcyOlx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnZibGstXHUwMDNldGFnX3NldCk7XG4xNTczOlx0XG4xNTc0Olx0XHRtdXRleF9sb2NrKFx1MDAyNnZibGstXHUwMDNldmRldl9tdXRleCk7XG4xNTc1Olx0XG4xNTc2Olx0XHQvKiBTdG9wIGFsbCB0aGUgdmlydHF1ZXVlcy4gKi9cbjE1Nzc6XHRcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XG4xNTc4Olx0XG4xNTc5Olx0XHQvKiBWaXJ0cXVldWVzIGFyZSBzdG9wcGVkLCBub3RoaW5nIGNhbiB1c2UgdmJsay1cdTAwM2V2ZGV2IGFueW1vcmUuICovXG4xNTgwOlx0XHR2YmxrLVx1MDAzZXZkZXYgPSBOVUxMO1xuMTU4MTpcdFxuMTU4MjpcdFx0dmRldi1cdTAwM2Vjb25maWctXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcbjE1ODM6XHRcdGtmcmVlKHZibGstXHUwMDNldnFzKTtcbjE1ODQ6XHRcbjE1ODU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2YmxrLVx1MDAzZXZkZXZfbXV0ZXgpO1xuMTU4NjpcdFxuMTU4NzpcdFx0cHV0X2Rpc2sodmJsay1cdTAwM2VkaXNrKTtcbjE1ODg6XHR9XG4xNTg5Olx0XG4xNTkwOlx0c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTU5MTpcdHtcbjE1OTI6XHRcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cdTAwM2Vwcml2O1xuMTU5MzpcdFx0c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSB2YmxrLVx1MDAzZWRpc2stXHUwMDNlcXVldWU7XG4xNTk0Olx0XHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4xNTk1Olx0XG4xNTk2Olx0XHQvKiBFbnN1cmUgbm8gcmVxdWVzdHMgaW4gdmlydHF1ZXVlcyBiZWZvcmUgZGVsZXRpbmcgdnFzLiAqL1xuMTU5NzpcdFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuMTU5ODpcdFx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG4xNTk5Olx0XHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuMTYwMDpcdFxuMTYwMTpcdFx0LyogRW5zdXJlIHdlIGRvbiYjMzk7dCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cbjE2MDI6XHRcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XG4xNjAzOlx0XG4xNjA0Olx0XHQvKiBNYWtlIHN1cmUgbm8gd29yayBoYW5kbGVyIGlzIGFjY2Vzc2luZyB0aGUgZGV2aWNlLiAqL1xuMTYwNTpcdFx0Zmx1c2hfd29yayhcdTAwMjZ2YmxrLVx1MDAzZWNvbmZpZ193b3JrKTtcbjE2MDY6XHRcbjE2MDc6XHRcdHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZWRlbF92cXModmRldik7XG4xNjA4Olx0XHRrZnJlZSh2YmxrLVx1MDAzZXZxcyk7XG4xNjA5Olx0XHQvKlxuMTYxMDpcdFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcbjE2MTE6XHRcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcbjE2MTI6XHRcdCAqIHBvaW50ZXJzIHNhZmVseS5cbjE2MTM6XHRcdCAqL1xuMTYxNDpcdFx0dmJsay1cdTAwM2V2cXMgPSBOVUxMO1xuMTYxNTpcdFxuMTYxNjpcdFx0cmV0dXJuIDA7XG4xNjE3Olx0fVxuMTYxODpcdFxuMTYxOTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjIwOlx0e1xuMTYyMTpcdFx0c3RydWN0IHZpcnRpb19ibGsgKnZibGsgPSB2ZGV2LVx1MDAzZXByaXY7XG4xNjIyOlx0XHRpbnQgcmV0O1xuMTYyMzpcdFxuMTYyNDpcdFx0cmV0ID0gaW5pdF92cSh2ZGV2LVx1MDAzZXByaXYpO1xuMTYyNTpcdFx0aWYgKHJldClcbjE2MjY6XHRcdFx0cmV0dXJuIHJldDtcbjE2Mjc6XHRcbjE2Mjg6XHRcdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XG4xNjI5Olx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHZibGstXHUwMDNlZGlzay1cdTAwM2VxdWV1ZSk7XG4xNjMwOlx0XG4xNjMxOlx0XHRyZXR1cm4gMDtcbjE2MzI6XHR9XG4xNjMzOlx0XG4xNjM0Olx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxuMTYzNTpcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjM2Olx0e1xuMTYzNzpcdFx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG4xNjM4Olx0fVxuMTYzOTpcdFxuMTY0MDpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY0MTpcdHtcbjE2NDI6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NDM6XHR9XG4xNjQ0Olx0I2VuZGlmXG4xNjQ1Olx0XG4xNjQ2Olx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG4xNjQ5Olx0fVxuMTY1MDpcdFxuMTY1MTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY1MjpcdHtcbjE2NTM6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NTQ6XHR9XG4xNjU1Olx0XG4xNjU2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7XG4xNjU3Olx0XHR7IFZJUlRJT19JRF9CTE9DSywgVklSVElPX0RFVl9BTllfSUQgfSxcbjE2NTg6XHRcdHsgMCB9LFxuMTY1OTpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciB3b3Jrcywgc3BlY2lmaWNhbGx5IHRoZSBhc3BlY3RzIEkgaGF2ZW4mIzM5O3QgZXhhbWluZWQgY2xvc2VseSB5ZXQuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gaG93IGl0IGhhbmRsZXMgcmVxdWVzdHMgYW5kIG1hbmFnZXMgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIHN0cnVjdHVyZXMgdGhlIHJlcXVlc3RzLCB0aGUgY29tbWFuZCBzdWJtaXNzaW9uIHByb2Nlc3MsIGFuZCBob3cgaXQgZGVhbHMgd2l0aCB0aGUgY29tcGxldGlvbiBub3RpZmljYXRpb25zIGZyb20gdGhlIFZpcnRJTyBibG9jayBkZXZpY2UuIEFyZSB0aGV5IHVzaW5nIGludGVycnVwdHMsIHBvbGxpbmcsIG9yIGEgY29tYmluYXRpb24/IEFuZCBhcmUgdGhlcmUgYW55IGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcgc3RyYXRlZ2llcyBpbXBsZW1lbnRlZD8gSSBleHBlY3QgdG8gc2VlIHRoZSBjb3JlIGxvZ2ljIGZvciB0cmFuc2xhdGluZyBibG9jayBJL08gcmVxdWVzdHMgaW50byBWaXJ0SU8gY29tbWFuZHMsIGJ1dCBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBxdWV1aW5nIG1lY2hhbmlzbXMuIEhvdyBhcmUgcmVxdWVzdHMgcHJpb3JpdGl6ZWQgb3IgbWVyZ2VkPyBJIGFsc28gd2FudCB0byBpZGVudGlmeSBhbnkgbG9ja2luZyBtZWNoYW5pc21zIHVzZWQgdG8gZW5zdXJlIHRocmVhZCBzYWZldHksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgc3BpbmxvY2sgb3IgbXV0ZXggc29tZXdoZXJlIGFyb3VuZCB0aGUgcXVldWUgaGVhZHMgYW5kIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLiBGdXJ0aGVybW9yZSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3Mgb3Igd29ya2Fyb3VuZHMuIFZpcnRJTyBpcyBzdXBwb3NlZCB0byBiZSBhIHN0YW5kYXJkaXplZCBpbnRlcmZhY2UsIGJ1dCByZWFsLXdvcmxkIGltcGxlbWVudGF0aW9ucyBvZnRlbiByZXF1aXJlIHNvbWUgbGV2ZWwgb2YgY3VzdG9taXphdGlvbi4gQW5kIGZpbmFsbHksIEkmIzM5O20gZ29pbmcgdG8gYmUgYXNzZXNzaW5nIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBtZW1vcnkgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucywgbGlrZSBETUEgYnVmZmVyIGFsbG9jYXRpb24gb3IgemVyby1jb3B5IHRlY2huaXF1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY1MDpcdFxuMTY1MTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY1MjpcdHtcbjE2NTM6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NTQ6XHR9XG4xNjU1Olx0XG4xNjU2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7XG4xNjU3Olx0XHR7IFZJUlRJT19JRF9CTE9DSywgVklSVElPX0RFVl9BTllfSUQgfSxcbjE2NTg6XHRcdHsgMCB9LFxuMTY1OTpcdH07XG4xNjYwOlx0XG4xNjYxOlx0c3RhdGljIHVuc2lnbmVkIGludCBmZWF0dXJlc19sZWdhY3lbXSA9IHtcbjE2NjI6XHRcdFZJUlRJT19CTEtfRl9TRUdfTUFYLCBWSVJUSU9fQkxLX0ZfU0laRV9NQVgsIFZJUlRJT19CTEtfRl9HRU9NRVRSWSxcbjE2NjM6XHRcdFZJUlRJT19CTEtfRl9STywgVklSVElPX0JMS19GX0JMS19TSVpFLFxuMTY2NDpcdFx0VklSVElPX0JMS19GX0ZMVVNILCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1ksIFZJUlRJT19CTEtfRl9DT05GSUdfV0NFLFxuMTY2NTpcdFx0VklSVElPX0JMS19GX01RLCBWSVJUSU9fQkxLX0ZfRElTQ0FSRCwgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyxcbjE2NjY6XHRcdFZJUlRJT19CTEtfRl9TRUNVUkVfRVJBU0UsXG4xNjY3Olx0fVxuMTY2ODpcdDtcbjE2Njk6XHRzdGF0aWMgdW5zaWduZWQgaW50IGZlYXR1cmVzW10gPSB7XG4xNjcwOlx0XHRWSVJUSU9fQkxLX0ZfU0VHX01BWCwgVklSVElPX0JMS19GX1NJWkVfTUFYLCBWSVJUSU9fQkxLX0ZfR0VPTUVUUlksXG4xNjcxOlx0XHRWSVJUSU9fQkxLX0ZfUk8sIFZJUlRJT19CTEtfRl9CTEtfU0laRSxcbjE2NzI6XHRcdFZJUlRJT19CTEtfRl9GTFVTSCwgVklSVElPX0JMS19GX1RPUE9MT0dZLCBWSVJUSU9fQkxLX0ZfQ09ORklHX1dDRSxcbjE2NzM6XHRcdFZJUlRJT19CTEtfRl9NUSwgVklSVElPX0JMS19GX0RJU0NBUkQsIFZJUlRJT19CTEtfRl9XUklURV9aRVJPRVMsXG4xNjc0Olx0XHRWSVJUSU9fQkxLX0ZfU0VDVVJFX0VSQVNFLCBWSVJUSU9fQkxLX0ZfWk9ORUQsXG4xNjc1Olx0fTtcbjE2NzY6XHRcbjE2Nzc6XHRzdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JsayA9IHtcbjE2Nzg6XHRcdC5mZWF0dXJlX3RhYmxlXHRcdFx0PSBmZWF0dXJlcyxcbjE2Nzk6XHRcdC5mZWF0dXJlX3RhYmxlX3NpemVcdFx0PSBBUlJBWV9TSVpFKGZlYXR1cmVzKSxcbjE2ODA6XHRcdC5mZWF0dXJlX3RhYmxlX2xlZ2FjeVx0XHQ9IGZlYXR1cmVzX2xlZ2FjeSxcbjE2ODE6XHRcdC5mZWF0dXJlX3RhYmxlX3NpemVfbGVnYWN5XHQ9IEFSUkFZX1NJWkUoZmVhdHVyZXNfbGVnYWN5KSxcbjE2ODI6XHRcdC5kcml2ZXIubmFtZVx0XHRcdD0gS0JVSUxEX01PRE5BTUUsXG4xNjgzOlx0XHQuaWRfdGFibGVcdFx0XHQ9IGlkX3RhYmxlLFxuMTY4NDpcdFx0LnByb2JlXHRcdFx0XHQ9IHZpcnRibGtfcHJvYmUsXG4xNjg1Olx0XHQucmVtb3ZlXHRcdFx0XHQ9IHZpcnRibGtfcmVtb3ZlLFxuMTY4NjpcdFx0LmNvbmZpZ19jaGFuZ2VkXHRcdFx0PSB2aXJ0YmxrX2NvbmZpZ19jaGFuZ2VkLFxuMTY4NzpcdCNpZmRlZiBDT05GSUdfUE1fU0xFRVBcbjE2ODg6XHRcdC5mcmVlemVcdFx0XHRcdD0gdmlydGJsa19mcmVlemUsXG4xNjg5Olx0XHQucmVzdG9yZVx0XHRcdD0gdmlydGJsa19yZXN0b3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0OTkKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGlnZ2luZyBpbnRvIHZpcnRibGsgRnJlZXplL1Jlc2V0IEJlaGF2aW9yKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGB2aXJ0YmxrYCBkcml2ZXIgaGFuZGxlcyBmcmVlemluZyBhbmQgcmVzZXR0aW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgdmlydGJsa19mcmVlemVfcHJpdmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgcG9pbnRzOiB0aGUgYHZpcnRibGtfZnJlZXplYCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIGAuZnJlZXplYCBtZXRob2QgaW4gdGhlIHZpcnRpbyBkcml2ZXIgc3RydWN0dXJlLCBhbmQgYWxzbyBmcm9tIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLiBOb3csIHRoYXQgYHJlc2V0X3ByZXBhcmVgIGlzIHRoZSBpbnRlcmVzdGluZyBwaWVjZS4uLiBJIGtub3cgdGhlIHZpcnRpbyBkcml2ZXIgbW9kZWwgaGFzIHRoZSBgLnJlc2V0X3ByZXBhcmVgIGNhbGxiYWNrIGFzIHBhcnQgb2YgdGhlIHJlc2V0IHNlcXVlbmNlLCBidXQgSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpTbywgd2hlcmUgaXMgYHJlc2V0X3ByZXBhcmVgIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGJlZm9yZSBJIG1ha2UgYW55IGp1ZGdlbWVudHMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwYCBhbmQgc2NvdXIgdGhlIGNvZGViYXNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGByZXNldF9wcmVwYXJlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgdW5jb3ZlcnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfcHJlcGFyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTUzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM9NjY4PXN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IGhsX3BjaV9lcnJfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNjc2LVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jOjY3NzpzdGF0aWMgdm9pZCBobF9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy02Nzgte1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYz03MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaGxfcGNpX2Vycl9oYW5kbGVyID0ge1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTctXHQucmVzdW1lID0gaGxfcGNpX2Vycl9yZXN1bWUsXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM6NzE4Olx0LnJlc2V0X3ByZXBhcmUgPSBobF9wY2lfcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTktXHQucmVzZXRfZG9uZSA9IGhsX3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2Rydi5jPTg5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpdnB1X2Rydl9wY2lfZXJyID0ge1xuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfZHJ2LmM6ODkzOlx0LnJlc2V0X3ByZXBhcmUgPSBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2IsXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYy04OTQtXHQucmVzZXRfZG9uZSA9IGl2cHVfcG1fcmVzZXRfZG9uZV9jYixcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5jPTM3Mj12b2lkIGl2cHVfcnBtX3B1dChzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzYtXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5jOjM3Nzp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X3BtLmMtMzc4LXtcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oPTMzPWludCBpdnB1X3BtX3J1bnRpbWVfcmVzdW1lX2NiKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oLTM0LVxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaDozNTp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oLTM2LXZvaWQgaXZwdV9wbV9yZXNldF9kb25lX2NiKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz02Mjc9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBjaV9jaGFubmVsX3N0YXRlX3QgZXJyb3IpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjMxLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NjMyOnN0YXRpYyB2b2lkIHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02MzMte1xuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBxYWljX3BjaV9lcnJfaGFuZGxlciA9IHtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTY3My1cdC5lcnJvcl9kZXRlY3RlZCA9IHFhaWNfcGNpX2Vycm9yX2RldGVjdGVkLFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Njc0Olx0LnJlc2V0X3ByZXBhcmUgPSBxYWljX3BjaV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjc1LVx0LnJlc2V0X2RvbmUgPSBxYWljX3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTcyMT1zdGF0aWMgaW50IHFhaWNfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzM0LVx0cWFpY19tcXRzX2NoX3N0b3BfdGltZXIocWRldi1cdTAwM2VtcXRzX2NoKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjczNTpcdHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUocWRldi1cdTAwM2VwZGV2KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTczNi1cdHBjaV9zYXZlX3N0YXRlKHFkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTY0MD1zdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ1LVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY0NjpzdGF0aWMgaW50IHZpcnRibGtfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2NDcte1xuLS1cbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE2Nzc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19ibGsgPSB7XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY5MC0jZW5kaWZcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE2OTE6XHQucmVzZXRfcHJlcGFyZVx0XHRcdD0gdmlydGJsa19yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY5Mi1cdC5yZXNldF9kb25lXHRcdFx0PSB2aXJ0YmxrX3Jlc2V0X2RvbmUsXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNTA5PXN0YXRpYyB2b2lkIG1oaV9wY2lfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE0LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNTE1OnN0YXRpYyB2b2lkIG1oaV9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTUxNi17XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIG1oaV9wY2lfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjE5LVx0LnJlc3VtZSA9IG1oaV9wY2lfaW9fcmVzdW1lLFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNjIwOlx0LnJlc2V0X3ByZXBhcmUgPSBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE2MjEtXHQucmVzZXRfZG9uZSA9IG1oaV9wY2lfcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSBpcyBiZWluZyByZXNldCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTA1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjEwNjpcdFx0Y2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9ocHJlL2hwcmVfbWFpbi5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaHByZV9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkwLVx0LnNsb3RfcmVzZXRcdFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL2hwcmUvaHByZV9tYWluLmM6MTY5MTpcdC5yZXNldF9wcmVwYXJlXHRcdD0gaGlzaV9xbV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL2hwcmUvaHByZV9tYWluLmMtMTY5Mi1cdC5yZXNldF9kb25lXHRcdD0gaGlzaV9xbV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTU5Nz1zdGF0aWMgdm9pZCBxbV9kZXZfZGJfY3RybChzdHJ1Y3QgaGlzaV9xbSAqcW0sIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTYwNy1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjYwODpzdGF0aWMgaW50IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkoc3RydWN0IGhpc2lfcW0gKnFtKVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNjA5LXtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz0xMTk2PXN0YXRpYyB2b2lkIHFtX3Jlc2V0X2Z1bmN0aW9uKHN0cnVjdCBoaXNpX3FtICpxbSlcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy0xMjAzLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6MTIwNDpcdHJldCA9IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkocW0pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtMTIwNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NTI1PXN0YXRpYyB2b2lkIHFtX2Rldl9lY2NfbWJpdF9oYW5kbGUoc3RydWN0IGhpc2lfcW0gKnFtKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1NDYtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NTQ3OnN0YXRpYyBpbnQgcW1fdmZfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0sXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NTQ4LVx0XHRcdCAgICAgICBlbnVtIHFtX3N0b3BfcmVhc29uIHN0b3BfcmVhc29uKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ1Nzc9c3RhdGljIGludCBxbV90cnlfc3RvcF92ZnMoc3RydWN0IGhpc2lfcW0gKnFtLCBlbnVtIHFtX2lmY19jbWQgY21kLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTEtXHR9IGVsc2Uge1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDU5MjpcdFx0cmV0ID0gcW1fdmZfcmVzZXRfcHJlcGFyZShxbSwgc3RvcF9yZWFzb24pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU5My1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NTk5LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYwMDpzdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0pXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjAxLXtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjEwLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYxMTpcdHJldCA9IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkocW0pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYxMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NjQ5PXN0YXRpYyBpbnQgcW1fbWFzdGVyX29vb19jaGVjayhzdHJ1Y3QgaGlzaV9xbSAqcW0pXG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDY2NC1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2NjU6c3RhdGljIGludCBxbV9zb2Z0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtKVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDY2Ni17XG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDczMj1zdGF0aWMgaW50IHFtX3NvZnRfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ3MzUtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NzM2Olx0cmV0ID0gcW1fc29mdF9yZXNldF9wcmVwYXJlKHFtKTtcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ3MzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ5NTI9c3RhdGljIGludCBxbV9jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBoaXNpX3FtICpxbSlcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00OTU4LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDk1OTpcdHJldCA9IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00OTYwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTUwMTY9RVhQT1JUX1NZTUJPTF9HUEwoaGlzaV9xbV9kZXZfc2xvdF9yZXNldCk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDE3LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAxODp2b2lkIGhpc2lfcW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMTkte1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMzQtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo1MDM1Olx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDM2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwNzMtfVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTA3NDpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3FtX3Jlc2V0X3ByZXBhcmUpO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNTA3NS1cbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01MjM2PXN0YXRpYyB2b2lkIHFtX3BmX3Jlc2V0X3ZmX3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUyNDItXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo1MjQzOlx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MjQ0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM9MTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBzZWNfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYy0xNTA4LVx0LnNsb3RfcmVzZXRcdD0gaGlzaV9xbV9kZXZfc2xvdF9yZXNldCxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM6MTUwOTpcdC5yZXNldF9wcmVwYXJlXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmMtMTUxMC1cdC5yZXNldF9kb25lXHQ9IGhpc2lfcW1fcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM9MTYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBoaXNpX3ppcF9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmMtMTYxNy1cdC5zbG90X3Jlc2V0XHQ9IGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQsXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM6MTYxODpcdC5yZXNldF9wcmVwYXJlXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYy0xNjE5LVx0LnJlc2V0X2RvbmVcdD0gaGlzaV9xbV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz0xOD1zdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmRldmljZV9zcmlvdl93cTtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0xOS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyMDpzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCByZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTIxLXtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9NzI9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgYWRmX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy05MC1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzo5MTpcdHJldHVybiByZXNldF9wcmVwYXJlKHBkZXYpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTkyLX1cbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9MjQ5PXN0YXRpYyB2b2lkIGFkZl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1NC1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTU6c3RhdGljIHZvaWQgYWRmX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjU2LXtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTc6XHRyZXNldF9wcmVwYXJlKHBkZXYpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1OC19XG4tLVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jPTI2NT1jb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGFkZl9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjY4LVx0LnJlc3VtZSA9IGFkZl9yZXN1bWUsXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM6MjY5Olx0LnJlc2V0X3ByZXBhcmUgPSBhZGZfcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNzAtXHQucmVzZXRfZG9uZSA9IGFkZl9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jPTk0Mj1zdGF0aWMgdm9pZCBpZHhkX2RldmljZV9jb25maWdfcmVzdG9yZShzdHJ1Y3QgaWR4ZF9kZXZpY2UgKmlkeGQsXG4tLVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTAyMC1cbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jOjEwMjE6c3RhdGljIHZvaWQgaWR4ZF9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTAyMi17XG4tLVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM9MTEyNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpZHhkX2Vycm9yX2hhbmRsZXIgPSB7XG5kcml2ZXJzL2RtYS9pZHhkL2luaXQuYzoxMTI3Olx0LnJlc2V0X3ByZXBhcmVcdD0gaWR4ZF9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTEyOC1cdC5yZXNldF9kb25lXHQ9IGlkeGRfcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM9NTAyOD1pbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTA4Ni1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzo1MDg3Olx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01MDg4LVx0LyogSWYgcmVzZXQgaGFuZGxlciBub3QgaW1wbGVtZW50ZWQsIGNvbnRpbnVlOyBvdGhlcndpc2UgcmV0dXJuICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM9MTQ4PWludCBhbWRncHVfcmVzZXRfZG9feGdtaV9yZXNldF9vbl9pbml0KFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2MC1cdFx0XHRcdHJlc2V0X2xpc3QpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM6MTYxOlx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2Mi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jPTIwND1pbnQgYW1kZ3B1X3Jlc2V0X2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmMtMjI3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM6MjI4OmludCBhbWRncHVfcmVzZXRfcHJlcGFyZV9od2NvbnRleHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYy0yMjktXHRcdFx0XHQgICBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2NvbnRleHQgKnJlc2V0X2NvbnRleHQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg9MTQ2PWludCBhbWRncHVfcmVzZXRfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNDctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaDoxNDg6aW50IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE0OS1cdFx0XHRcdCAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg9MTUxPWludCBhbWRncHVfcmVzZXRfcGVyZm9ybV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNTMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaDoxNTQ6aW50IGFtZGdwdV9yZXNldF9wcmVwYXJlX2VudihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE1NS1cdFx0XHQgICAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmM9MjY9Ym9vbCBpbnRlbF9kaXNwbGF5X3Jlc2V0X3Rlc3Qoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmMtMzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuYzozMjp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMzLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaD0xND1ib29sIGludGVsX2Rpc3BsYXlfcmVzZXRfdGVzdChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaDoxNTp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaC0xNi12b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LCBib29sIHRlc3Rfb25seSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yOTUyPXN0YXRpYyBpbnQgZXhlY2xpc3RzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yOTY0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyOTY1OnN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjk2Ni17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0zNDM3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzozNDM4Olx0ZW5naW5lLVx1MDAzZXJlc2V0LnByZXBhcmUgPSBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQzOS1cdGVuZ2luZS1cdTAwM2VyZXNldC5yZXdpbmQgPSBleGVjbGlzdHNfcmVzZXRfcmV3aW5kO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9MTY5PXN0YXRpYyB2b2lkIGd0X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTItXHQvKiBGb3IgR3VDIG1vZGUsIGVuc3VyZSBzdWJtaXNzaW9uIGlzIGRpc2FibGVkIGJlZm9yZSBzdG9wcGluZyByaW5nICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jOjE5MzpcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXHUwMDI2Z3QtXHUwMDNldWMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz01MjE9c3RhdGljIGludCBfX2dlbjExX3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2MS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6NTYyOnN0YXRpYyBpbnQgZ2VuOF9lbmdpbmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2My17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz02MTA9c3RhdGljIGludCBnZW44X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTYyMi1cdGZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBndCwgZW5naW5lX21hc2ssIHRtcCkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo2MjM6XHRcdHJldCA9IGdlbjhfZW5naW5lX3Jlc2V0X3ByZXBhcmUoZW5naW5lKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtNjI0LVx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhcmVzZXRfbm9uX3JlYWR5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9ODEzPWludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTgyOS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODMwOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODMxLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTg0ND1zdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg3NC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODc1OnN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d0ICpndClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODc2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4NS1cdCAqIEZvciBHdUMgbW9kZSB3aXRoIHN1Ym1pc3Npb24gZGlzYWJsZWQsIGVuc3VyZSB0aGF0IEd1QyBpcyBub3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODg2Olx0ICogc2FuaXRpemVkLCBkbyB0aGF0IGFmdGVyIGVuZ2luZSByZXNldC4gcmVzZXRfcHJlcGFyZSgpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4Ny1cdCAqIGlzIGZvbGxvd2VkIGJ5IGVuZ2luZSByZXNldCB3aGljaCBpbiB0aGlzIG1vZGUgcmVxdWlyZXMgR3VDIHRvXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTAtXHRpZiAoaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbihcdTAwMjZndC1cdTAwM2V1YykpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjg5MTpcdFx0aW50ZWxfdWNfcmVzZXRfcHJlcGFyZShcdTAwMjZndC1cdTAwM2V1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5NS1cdFx0XHRhd2FrZSB8PSBlbmdpbmUtXHUwMDNlbWFzaztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODk2Olx0XHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTctXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz05Njk9c3RhdGljIHZvaWQgX19pbnRlbF9ndF9zZXRfd2VkZ2VkKHN0cnVjdCBpbnRlbF9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy05ODUtXHQgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6OTg2Olx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtOTg3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTIwNT12b2lkIGludGVsX2d0X3Jlc2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjM0Olx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTIzNS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTEyNTgtXHRpZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oXHUwMDI2Z3QtXHUwMDNldWMpKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjU5Olx0XHRpbnRlbF91Y19yZXNldF9wcmVwYXJlKFx1MDAyNmd0LVx1MDAzZXVjKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTI2MC1cdC8qXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz0xMzMxPWludCBfX2ludGVsX2VuZ2luZV9yZXNldF9iaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTEzNDQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjEzNDU6XHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMzQ2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTQwND1zdGF0aWMgdm9pZCBpbnRlbF9ndF9yZXNldF9nbG9iYWwoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTE0NDItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjE0NDM6XHRcdFx0aW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNDQ0LVx0XHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM9MzE0PXN0YXRpYyB2b2lkIHhjc19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM6MzQxOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYz0xMTU0PXN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMTE2NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jOjExNjY6XHRlbmdpbmUtXHUwMDNlcmVzZXQucHJlcGFyZSA9IHJlc2V0X3ByZXBhcmU7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYy0xMTY3LVx0ZW5naW5lLVx1MDAzZXJlc2V0LnJld2luZCA9IHJlc2V0X3Jld2luZDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jPTI2Mj1zdGF0aWMgdm9pZCBtb2NrX3JlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTI4My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmM6Mjg0OnN0YXRpYyB2b2lkIG1vY2tfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTI4NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYz0zNDE9c3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYy0zNzItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jOjM3MzpcdGVuZ2luZS1cdTAwM2ViYXNlLnJlc2V0LnByZXBhcmUgPSBtb2NrX3Jlc2V0X3ByZXBhcmU7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3NC1cdGVuZ2luZS1cdTAwM2ViYXNlLnJlc2V0LnJld2luZCA9IG1vY2tfcmVzZXRfcmV3aW5kO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmM9MjYwPXN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldCh2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0yODAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jOjI4MTpcdFx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmMtMjgyLVx0XHRwLVx1MDAzZWNyaXRpY2FsX3NlY3Rpb25fYmVnaW4oKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaD01MzM9dm9pZCBpbnRlbF9ndWNfY29udGV4dF9iYW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaDo1MzU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzYtdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGludGVsX2VuZ2luZV9tYXNrX3Qgc3RhbGxlZCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xMDc3PXN0YXRpYyB2b2lkIHNjcnViX2d1Y19kZXNjX2Zvcl9vdXRzdGFuZGluZ19nMmgoc3RydWN0IGludGVsX2d1YyAqZ3VjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTEwNC1cdFx0ICogdG8gYmUgdmlzaWJsZSB0byBhbGwgY2FsbGVycyB3aG8gc2V0IHRoZSBiZWxvdyBmbGFncyAoc2VlIGFib3ZlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjExMDU6XHRcdCAqIGZsdXNoIGFuZCBmbHVzaGVzIGluIHJlc2V0X3ByZXBhcmUpLiBJZiBzdWJtaXNzaW9uX2Rpc2FibGVkKClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTEwNi1cdFx0ICogaXMgc2V0LCB0aGUgY2FsbGVyIHNob3VsZG4mIzM5O3Qgc2V0IHRoZXNlIGZsYWdzLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM9MTM5MT1zdGF0aWMgdm9pZCBndWNfY2FuY2VsX2J1c3luZXNzX3dvcmtlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI1LVx0ICogQW5kIG5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhIHJlc2V0IG9jY3VycmluZyBkdXJpbmcgZHJpdmVyIHVubG9hZFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYzoxNDI2Olx0ICogKHdlZGdlZF9vbl9maW5pKSwgc2tpcHBpbmcgdGhlIGNhbmNlbCBpbiByZXNldF9wcmVwYXJlL3Jlc2V0X2ZpbmkgKHdoZW4gdGhlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE0MjctXHQgKiByZXNldCBmbGFnL211dGV4IGFyZSBzZXQpIGlzIGZpbmUgYmVjYXVzZSB0aGVyZSBpcyBhbm90aGVyIGV4cGxpY2l0IGNhbmNlbCBpblxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM9MTcyMz1zdGF0aWMgdm9pZCBndWNfZmx1c2hfZGVzdHJveWVkX2NvbnRleHRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE3MjQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE3MjU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTcyNi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xNzc3PXN0YXRpYyB2b2lkIGd1Y19yZXNldF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBoZWFkLCBib29sIHNjcnViKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTgwMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM6MTgwMTpzdGF0aWMgdm9pZCBndWNfZW5naW5lX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xODAyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTQ1MzY9c3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTQ1NDgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjQ1NDk6XHRlbmdpbmUtXHUwMDNlcmVzZXQucHJlcGFyZSA9IGd1Y19lbmdpbmVfcmVzZXRfcHJlcGFyZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU1MC1cdGVuZ2luZS1cdTAwM2VyZXNldC5yZXdpbmQgPSBndWNfcmV3aW5kX25vcDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jPTU2OT1zdGF0aWMgdm9pZCBfX3VjX2ZpbmlfaHcoc3RydWN0IGludGVsX3VjICp1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4Mi0vKipcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NTgzOiAqIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUgLSBQcmVwYXJlIGZvciByZXNldFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy01ODQtICogQHVjOiB0aGUgaW50ZWxfdWMgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy01ODctICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjU4ODp2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTYwMi1cdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NjAzOlx0XHRpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTYwNC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oPTQ3PXZvaWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaDo0ODp2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oLTQ5LXZvaWQgaW50ZWxfdWNfcmVzZXQoc3RydWN0IGludGVsX3VjICp1YywgaW50ZWxfZW5naW5lX21hc2tfdCBzdGFsbGVkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYz05ODI9dm9pZCB4ZV9ndF9yZXNldF9hc3luYyhzdHJ1Y3QgeGVfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk4OS1cdC8qIERvbiYjMzk7dCBkbyBhIHJlc2V0IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmM6OTkwOlx0aWYgKCF4ZV9mYXVsdF9ndF9yZXNldCgpIFx1MDAyNlx1MDAyNiB4ZV91Y19yZXNldF9wcmVwYXJlKFx1MDAyNmd0LVx1MDAzZXVjKSlcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk5MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYz0xNzAzPXZvaWQgeGVfZ3VjX3Nhbml0aXplKHN0cnVjdCB4ZV9ndWMgKmd1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcwOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYzoxNzEwOmludCB4ZV9ndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcxMS17XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM6MTcxMjpcdHJldHVybiB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xNzEzLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM9MTgyMD12b2lkIHhlX2d1Y19kZWNsYXJlX3dlZGdlZChzdHJ1Y3QgeGVfZ3VjICpndWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE4MjMtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM6MTgyNDpcdHhlX2d1Y19yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTgyNS1cdHhlX2d1Y19jdF9zdG9wKFx1MDAyNmd1Yy1cdTAwM2VjdCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oPTU3PWludCB4ZV9ndWNfcHJpbnRfaW5mbyhzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmg6NTg6aW50IHhlX2d1Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmgtNTktdm9pZCB4ZV9ndWNfcmVzZXRfd2FpdChzdHJ1Y3QgeGVfZ3VjICpndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtNTEtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjUyOnN0YXRpYyBpbnQgZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MjQ0PXN0YXRpYyB2b2lkIGd1Y19zdWJtaXRfZmluaSh2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjItXHR4ZV9ndWNfY3Rfc3RvcChcdTAwMjZndWMtXHUwMDNlY3QpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjM6XHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjY0LVx0eGVfZ3VjX3NvZnRyZXNldChndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MTMyMT12b2lkIHhlX2d1Y19zdWJtaXRfd2VkZ2Uoc3RydWN0IHhlX2d1YyAqZ3VjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMTM0My1cdFx0LyogRm9yY2VmdWxseSBraWxsIGFueSByZW1haW5pbmcgZXhlYyBxdWV1ZXMsIHNpZ25hbCBmZW5jZXMgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MTM0NDpcdFx0Z3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTEzNDUtXHRcdHhlX2d1Y19zdWJtaXRfc3RvcChndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MjU2MT1zdGF0aWMgdm9pZCBndWNfZXhlY19xdWV1ZV9zdG9wKHN0cnVjdCB4ZV9ndWMgKmd1Yywgc3RydWN0IHhlX2V4ZWNfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjEyLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjEzOnN0YXRpYyBpbnQgZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1YylcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYxNC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMwLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjMxOmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2MzgtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2Mzk6XHRyZXR1cm4gZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2NDAtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0Lmg9MTc9dm9pZCB4ZV9ndWNfc3VibWl0X2Rpc2FibGUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmgtMTgtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oOjE5OmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmgtMjAtdm9pZCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3dhaXQoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0xODI9aW50IHhlX3VjX2xvYWRfaHcoc3RydWN0IHhlX3VjICp1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yMzUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYzoyMzY6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1YylcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTIzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjQxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmM6MjQyOlx0cmV0dXJuIHhlX2d1Y19yZXNldF9wcmVwYXJlKFx1MDAyNnVjLVx1MDAzZWd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNDMtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jPTI2OT1zdGF0aWMgdm9pZCB1Y19yZXNldF93YWl0KHN0cnVjdCB4ZV91YyAqdWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjc1LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmM6Mjc2Olx0cmV0ID0geGVfdWNfcmVzZXRfcHJlcGFyZSh1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oPTE0PWludCB4ZV91Y19sb2FkX2h3KHN0cnVjdCB4ZV91YyAqdWMpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmg6MTU6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuaC0xNi12b2lkIHhlX3VjX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV91YyAqdWMpO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jPTY5OT1zdGF0aWMgdm9pZCBpcHU2X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtNzIxLVxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmM6NzIyOnN0YXRpYyB2b2lkIGlwdTZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYy03MjMte1xuLS1cbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jPTgxNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBwY2lfZXJyX2hhbmRsZXJzID0ge1xuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmM6ODE3Olx0LnJlc2V0X3ByZXBhcmUgPSBpcHU2X3BjaV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtODE4LVx0LnJlc2V0X2RvbmUgPSBpcHU2X3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9wZHNfY29yZS9jb3JlLmM9NjM3PXN0YXRpYyB2b2lkIHBkc2NfY2hlY2tfcGNpX2hlYWx0aChzdHJ1Y3QgcGRzYyAqcGRzYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9wZHNfY29yZS9jb3JlLmM6NjUxOlx0LyogcHJldmVudCBkZWFkbG9jayBiZXR3ZWVuIHBkc2NfcmVzZXRfcHJlcGFyZSBhbmQgcGRzY19oZWFsdGhfdGhyZWFkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1Mi1cdHF1ZXVlX3dvcmsocGRzYy1cdTAwM2V3cSwgXHUwMDI2cGRzYy1cdTAwM2VwY2lfcmVzZXRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYz00ODU9c3RhdGljIHZvaWQgcGRzY19yZXN0YXJ0X2hlYWx0aF90aHJlYWQoc3RydWN0IHBkc2MgKnBkc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jOjQ5ODpzdGF0aWMgdm9pZCBwZHNjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jLTQ5OS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5ODIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoZSB2aXJ0aW8gc3Vic3lzdGVtOgoKKipJbnZlc3RpZ2F0aW5nIHZpcnRpbyBSZXNldCBQcmVwYXJhdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSB2aXJ0aW8gZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8ganVzdCBqdW1wIGludG8gdGhlIGBkcml2ZXJzL3ZpcnRpby9gIGRpcmVjdG9yeSDigJMgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29yZSBkcml2ZXIgY29kZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBgIGhlcmUsIGVmZmljaWVudGx5LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGEgZmV3IHZhcmlhdGlvbnMgdG8gY292ZXIgbXkgYmFzZXMuIEZpcnN0LCBJJiMzOTtsbCBzZWFyY2ggZm9yIGRpcmVjdCBpbnZvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzbyBqdXN0IHBsYWluIGByZXNldF9wcmVwYXJlYC4gVGhlbiwgSSYjMzk7bGwgY2hlY2sgZm9yIHJlZmVyZW5jZXMgdGhyb3VnaCB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgdGFyZ2V0aW5nIGAtJmd0O3Jlc2V0X3ByZXBhcmVgLiBBbmQgZmluYWxseSwganVzdCBpbiBjYXNlLCBJJiMzOTtsbCBhbHNvIHRyeSBgZHJ2LSZndDtyZXNldF9wcmVwYXJlYCwgdG8gYmUgZXh0cmEgc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLCBjb25zaWRlcmluZyBwb3RlbnRpYWwgY29kaW5nIHN0eWxlcyBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlcnMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBwaWN0dXJlIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gZ2V0IGdyZXBwaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNldF9wcmVwYXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvLmM9Njk1PUVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfcmVzdG9yZSk7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk3LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6Njk4OmludCB2aXJ0aW9fZGV2aWNlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY5OS17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzAyLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzAzOlx0aWYgKCFkcnYgfHwgIWRydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA0LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA5LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzEwOlx0cmV0ID0gZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTcxMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTctfVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTktXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz03NzE9c3RhdGljIGludCB2aXJ0aW9fcGNpX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgaW50IG51bV92ZnMpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy03OTctXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjc5ODpzdGF0aWMgdm9pZCB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTc5OS17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MDItXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgwMzpcdHJldCA9IHZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZShcdTAwMjZ2cF9kZXYtXHUwMDNldmRldik7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgwNC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTgzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2aXJ0aW9fcGNpX2Vycl9oYW5kbGVyID0ge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo4MzQ6XHQucmVzZXRfcHJlcGFyZSAgPSB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgzNS1cdC5yZXNldF9kb25lICAgICA9IHZpcnRpb19wY2lfcmVzZXRfZG9uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MzAKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBOYW1pbmcgQ29udmVudGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBmcmVlemluZy91bmZyZWV6aW5nIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGNvZGUuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gYHZpcnRibGtfZnJlZXplX3ByaXZgIGFuZCBpdHMgcG90ZW50aWFsIGNvdW50ZXJwYXJ0cywgYnV0IEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBjYXB0dXJpbmcgYWxsIHZhcmlhdGlvbnMuIFRoZXJlZm9yZSwgSSB3YW50IHRvIGV4cGxvcmUgb3RoZXIgbmFtaW5nIGNvbnZlbnRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSYjMzk7bGwgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaC4gTGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGNvdWxkIGl0IGJlIGNhbGxlZC4uLgoKT2theSwgSSYjMzk7bSB0aGlua2luZyBvZiBvdGhlciBwb3RlbnRpYWwgY29udmVudGlvbnMgc3VjaCBhcyBgdmlydGJsa19mcmVlemVgIG9yIGB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZWAgYXMgcG9zc2libGUgbmFtaW5nIGFsdGVybmF0aXZlcyBmb3Igc2ltaWxhciBmdW5jdGlvbnMuIFRpbWUgdG8gZ2V0IHRoZSBncmVwIGNvbW1hbmQgcnVubmluZyB0byBzd2VlcCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYHZpcnRpb19kZXZpY2VfZnJlZXplYCBhbmQgYHZpcnRibGtfZnJlZXplYC4gSSBuZWVkIHRvIGNvdmVyIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBhY3Jvc3MgdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWV6ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpby5jPTYxMz1zdGF0aWMgaW50IHZpcnRpb19kZXZpY2VfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYsIGJvb2wgcmVzdG9yZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02MjQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo2MjU6XHQvKiBNYXliZSBkcml2ZXIgZmFpbGVkIGJlZm9yZSBmcmVlemUuXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02MjYtXHQgKiBSZXN0b3JlIHRoZSBmYWlsZWQgc3RhdHVzLCBmb3IgZGVidWdnaW5nLiAqL1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY2OS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo2NzA6aW50IHZpcnRpb19kZXZpY2VfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NzEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY3OC1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3OTpcdGlmIChkcnYgXHUwMDI2XHUwMDI2IGRydi1cdTAwM2VmcmVlemUpIHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY4MDpcdFx0cmV0ID0gZHJ2LVx1MDAzZWZyZWV6ZShkZXYpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjgxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjg4LX1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY4OTpFWFBPUlRfU1lNQk9MX0dQTCh2aXJ0aW9fZGV2aWNlX2ZyZWV6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02OTAtXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYz0xMTQzPXN0YXRpYyB2b2lkIHZpcnRiYWxsb29uX3NodXRkb3duKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMtMTE0OS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jOjExNTA6c3RhdGljIGludCB2aXJ0YmFsbG9vbl9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNTEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM9MTIxMT1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JhbGxvb25fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMtMTIyMS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jOjEyMjI6XHQuZnJlZXplXHQ9XHR2aXJ0YmFsbG9vbl9mcmVlemUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjMtXHQucmVzdG9yZSA9XHR2aXJ0YmFsbG9vbl9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jPTM0Nz1zdGF0aWMgdm9pZCB2aXJ0aW5wdXRfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jLTM2Ni0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYzozNjc6c3RhdGljIGludCB2aXJ0aW5wdXRfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtMzY4LXtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYz00MDg9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19pbnB1dF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jOjQxNjpcdC5mcmVlemVcdCAgICAgICAgICAgICA9IHZpcnRpbnB1dF9mcmVlemUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYy00MTctXHQucmVzdG9yZSAgICAgICAgICAgICA9IHZpcnRpbnB1dF9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0zMDc2PXN0YXRpYyB2b2lkIHZpcnRpb19tZW1fY29uZmlnX2NoYW5nZWQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODctI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjMwODg6c3RhdGljIGludCB2aXJ0aW9fbWVtX2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0zMDg5LXtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MzE0MD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX21lbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNDgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjMxNDk6XHQuZnJlZXplXHQ9XHR2aXJ0aW9fbWVtX2ZyZWV6ZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0zMTUwLVx0LnJlc3RvcmUgPVx0dmlydGlvX21lbV9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX21taW9fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU1NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU1NjpzdGF0aWMgaW50IHZpcnRpb19tbWlvX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU1Ny17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU2MDpcdHJldHVybiB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZShcdTAwMjZ2bV9kZXYtXHUwMDNldmRldik7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU2MS19XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYz01NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHZpcnRpb19tbWlvX3BtX29wcyA9IHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM6NTc0Olx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFModmlydGlvX21taW9fZnJlZXplLCB2aXJ0aW9fbW1pb19yZXN0b3JlKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NzUtfTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU4NT1jb25zdCBzdHJ1Y3QgY3B1bWFzayAqdnBfZ2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01OTgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1OTk6c3RhdGljIGludCB2aXJ0aW9fcGNpX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTYwMC17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjYwNTpcdHJldCA9IHZpcnRpb19kZXZpY2VfZnJlZXplKFx1MDAyNnZwX2Rldi1cdTAwM2V2ZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjA2LVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NjQzPXN0YXRpYyBpbnQgdmlydGlvX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjQ0LXtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjQ1Olx0cmV0dXJuIHZwX3N1cHBvcnRzX3BtX25vX3Jlc2V0KGRldikgPyAwIDogdmlydGlvX3BjaV9mcmVlemUoZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjQ2LX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTY1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgdmlydGlvX3BjaV9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTUtXHQucmVzdW1lID0gdmlydGlvX3BjaV9yZXN1bWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1NjpcdC5mcmVlemUgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjU3LVx0LnRoYXcgPSB2aXJ0aW9fcGNpX3Jlc3RvcmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1ODpcdC5wb3dlcm9mZiA9IHZpcnRpb19wY2lfZnJlZXplLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTktXHQucmVzdG9yZSA9IHZpcnRpb19wY2lfcmVzdG9yZSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jPTEzMzc9c3RhdGljIHZvaWQgdmlvcnRjX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDMtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjEzNDQ6c3RhdGljIGludCB2aW9ydGNfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDUte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM9MTQwND1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3J0Y19kcnYgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xNDEwLVx0LnJlbW92ZSA9IHZpb3J0Y19yZW1vdmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjE0MTE6XHQuZnJlZXplID0gcG1fc2xlZXBfcHRyKHZpb3J0Y19mcmVlemUpLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xNDEyLVx0LnJlc3RvcmUgPSBwbV9zbGVlcF9wdHIodmlvcnRjX3Jlc3RvcmUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIgRnJlZXplIE9wZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdmlydGlvX2Jsa2AgY29kZSwgd2hpY2gsIGFzIHdlIGtub3csIGlzIHRoZSB3b3JraG9yc2UgZHJpdmVyIGZvciBibG9jayBkZXZpY2VzIGluIHZpcnRpbyBlbnZpcm9ubWVudHMuIEl0JiMzOTtzIG9mdGVuIHRoZSByb290IGRpc2sgb3IgaGFuZGxlcyB0aG9zZSBzZWNvbmRhcnkgYmxvY2sgZGV2aWNlcyBpbiBRRU1VL0tWTSBzZXR1cHMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBjaGFuZ2UgaW4gYHZpcnRibGtfZnJlZXplX3ByaXZgIGFuZCBpdCYjMzk7cyBtYWtpbmcgbWUgdGhpbmsuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgZm9yIGBibGtfbXFfcXVpZXNjZV9xdWV1ZWAuIEludGVyZXN0aW5nLiBJIGtub3cgdGhlIGdlbmVyYWwgaWRlYSBoZXJlIGlzIHRvIGVuc3VyZSBubyBJL08gaXMgYWN0aXZlIGJlZm9yZSBkZWxldGluZyB0aGUgdmlydHF1ZXVlcyBkdXJpbmcgdGhlIGZyZWV6ZSBvcGVyYXRpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXkgZnJlZXplIHRoZSBxdWV1ZSwgcXVpZXNjZSBpdCwgYW5kIHRoZW4gdW5mcmVlemUgaXQuIFNlZW1zIHN0YW5kYXJkLgoKQnV0IHRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscy4gV2hhdCYjMzk7cyB0aGUgZnVuZGFtZW50YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3F1aWVzY2VfcXVldWVgPyBJcyB0aGlzIGEgc3VidGxlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgYSBidWcgZml4PyBUaGUgYG5vd2FpdGAgdmVyc2lvbiBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIG5vdCBibG9jaywgYnV0IHdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhhdCBoYXZlIGhlcmU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGdldCB0byB0aGUgc291cmNlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xuLS1cbmJsb2NrL2Jsay1tcS5jLTI2MC0gKi9cbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XG4tLVxuYmxvY2svYmxrLW1xLmM9Mjg4PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSk7XG4tLVxuYmxvY2svYmxrLW1xLmMtMjk4LSAqL1xuYmxvY2svYmxrLW1xLmM6Mjk5OnZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG5ibG9jay9ibGstbXEuYy0zMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCB0aGUgYXVkaWVuY2UgaXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBibGstbXEuYzogVGhlIEhlYXJ0IG9mIElPIFF1ZXVpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciBsaW5lcyAyNjAgdG8gMzEwIG9mIGBibG9jay9ibGstbXEuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb3JlIG9mIHRoaXMgbXVsdGktcXVldWUgYmxvY2sgbGF5ZXIgaXMgd29ya2luZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbWVjaGFuaWNzIG9mIGhvdyByZXF1ZXN0cyBhcmUgaGFuZGxlZCB3aXRoaW4gYSBxdWV1ZSBjb250ZXh0LiBJJiMzOTttIGxvb2tpbmcgZm9yIHdoZXJlIHJlcXVlc3RzIGFyZSBlbnF1ZXVlZCwgd2hlcmUgdGhleSYjMzk7cmUgZGVxdWV1ZWQsIGhvdyB0aGVpciBsaWZlY3ljbGUgaXMgbWFuYWdlZC4gSeKAmW0gdGhpbmtpbmcgdGhpcyBzZWN0aW9uIHdpbGwgY292ZXIgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBsb2dpYyBiZWhpbmQgcmVxdWVzdCBzdWJtaXNzaW9uIGFuZCBjb21wbGV0aW9uLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIGlsbHVtaW5hdGUgYW55IHN1YnRsZXRpZXMgaW4gaG93IGJsay1tcSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5kaXZpZHVhbCBoYXJkd2FyZSBxdWV1ZXMuIFVsdGltYXRlbHksIEkmIzM5O20gYWltaW5nIHRvIGJ1aWxkIGEgZGVlcGVyIG1lbnRhbCBtb2RlbCBvZiBob3cgZGF0YSBtb3ZlcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGRvd24gdG8gdGhlIHN0b3JhZ2UgZGV2aWNlIHdpdGggYmxrLW1xLiBJJiMzOTtsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGUgY29kZSBoYW5kbGVzIGRpZmZlcmVudCByZXF1ZXN0IHByaW9yaXRpZXMgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgcXVldWVzIHRvIGVuc3VyZSBvcHRpbWFsIHBhcmFsbGVsaXNtIGFuZCBtaW5pbWFsIGxhdGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdCAqL1xuIDI2MTpcdHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxuIDI2MjpcdHtcbiAyNjM6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMjY0Olx0XG4gMjY1Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbiAyNjY6XHRcdGlmICghcS1cdTAwM2VxdWllc2NlX2RlcHRoJiM0MzsmIzQzOylcbiAyNjc6XHRcdFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xuIDI2ODpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbiAyNjk6XHR9XG4gMjcwOlx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcbiAyNzE6XHRcbiAyNzI6XHQvKipcbiAyNzM6XHQgKiBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAtIHdhaXQgdW50aWwgaW4tcHJvZ3Jlc3MgcXVpZXNjZSBpcyBkb25lXG4gMjc0Olx0ICogQHNldDogdGFnX3NldCB0byB3YWl0IG9uXG4gMjc1Olx0ICpcbiAyNzY6XHQgKiBOb3RlOiBpdCBpcyBkcml2ZXImIzM5O3MgcmVzcG9uc2liaWxpdHkgZm9yIG1ha2luZyBzdXJlIHRoYXQgcXVpZXNjZSBoYXNcbiAyNzc6XHQgKiBiZWVuIHN0YXJ0ZWQgb24gb3IgbW9yZSBvZiB0aGUgcmVxdWVzdF9xdWV1ZXMgb2YgdGhlIHRhZ19zZXQuICBUaGlzXG4gMjc4Olx0ICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcbiAyNzk6XHQgKiB0aGUgcXVpZXNjZSBmbGFnIHNldCB1c2luZyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQuXG4gMjgwOlx0ICovXG4gMjgxOlx0dm9pZCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG4gMjgyOlx0e1xuIDI4MzpcdFx0aWYgKHNldC1cdTAwM2VmbGFncyBcdTAwMjYgQkxLX01RX0ZfQkxPQ0tJTkcpXG4gMjg0Olx0XHRcdHN5bmNocm9uaXplX3NyY3Uoc2V0LVx1MDAzZXNyY3UpO1xuIDI4NTpcdFx0ZWxzZVxuIDI4NjpcdFx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiAyODc6XHR9XG4gMjg4Olx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKTtcbiAyODk6XHRcbiAyOTA6XHQvKipcbiAyOTE6XHQgKiBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIC0gd2FpdCB1bnRpbCBhbGwgb25nb2luZyBkaXNwYXRjaGVzIGhhdmUgZmluaXNoZWRcbiAyOTI6XHQgKiBAcTogcmVxdWVzdCBxdWV1ZS5cbiAyOTM6XHQgKlxuIDI5NDpcdCAqIE5vdGU6IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcHJldmVudCB0aGF0IHRoZSBzdHJ1Y3QgcmVxdWVzdCBlbmRfaW8oKVxuIDI5NTpcdCAqIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGludm9rZWQuIE9uY2UgdGhpcyBmdW5jdGlvbiBpcyByZXR1cm5lZCwgd2UgbWFrZVxuIDI5NjpcdCAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcbiAyOTc6XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkuXG4gMjk4Olx0ICovXG4gMjk5Olx0dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiAzMDA6XHR7XG4gMzAxOlx0XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XG4gMzAyOlx0XHQvKiBub3RoaW5nIHRvIHdhaXQgZm9yIG5vbi1tcSBxdWV1ZXMgKi9cbiAzMDM6XHRcdGlmIChxdWV1ZV9pc19tcShxKSlcbiAzMDQ6XHRcdFx0YmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKHEtXHUwMDNldGFnX3NldCk7XG4gMzA1Olx0fVxuIDMwNjpcdEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlKTtcbiAzMDc6XHRcbiAzMDg6XHQvKlxuIDMwOTpcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSAtIGNvdW50ZXJwYXJ0IG9mIGJsa19tcV9xdWllc2NlX3F1ZXVlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXg6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIGJ1ZyByZWxhdGVkIHRvIHRoZSBkZWxldGlvbiBvZiB2aXJ0cXVldWVzIGluIHRoZSBgdmlydGJsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHN1c3BlbmQsIGhpYmVybmF0ZSwgb3IgZGV2aWNlIHJlc2V0LiBUaGUga2V5IGlzIGluIGhvdyBgYmxrX21xX3F1aWVzY2VfcXVldWVgIGludGVyYWN0cyB3aXRoIHRoZSBSQ1UgbWVjaGFuaXNtLiBCZWZvcmUsIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIHdhcyB1c2VkLCB3aGljaCBkaWRuJiMzOTt0IHdhaXQgZm9yIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHZpYSBgc3luY2hyb25pemVfcmN1YCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvbmdvaW5nIGRpc3BhdGNoZXMgYWNjZXNzaW5nIGRlbGV0ZWQgdmlydHF1ZXVlcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gc2NlbmFyaW8sIHF1aXRlIG5hc3R5LiBUaGlzIGNvZGUgd2FzIGNoYW5nZWQgdG8gYWRkcmVzcyB0aGF0LCBhbmQgbm93IGNhbGxzIGBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmVgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYC4KCk15IG1pbmQgaXMgbm93IHJhY2luZyB0b3dhcmRzIHJlYWNoYWJpbGl0eSBhbmQgZnV6emFiaWxpdHkuIExldCYjMzk7cyBzZWUuLi4gYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLiBJdCB1c2VzIGBibGtfbXFfZnJlZXplX3F1ZXVlYCwgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCwgYW5kIGBibGtfbXFfdW5mcmVlemVfcXVldWVgLiBPa2F5LCB3aGVuIGlzIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBjYWxsZWQ/IFRoZXJlIGFyZSB0d28ga2V5IGVudHJ5IHBvaW50czogYHZpcnRibGtfZnJlZXplYCBhbmQgYHZpcnRibGtfcmVzZXRfcHJlcGFyZWAuIE5vdywgYHZpcnRibGtfZnJlZXplYCBnZXRzIGNhbGxlZCBkdXJpbmcgUE0gb3BlcmF0aW9ucyBsaWtlIHNsZWVwLCBoaWJlcm5hdGUsIHN1c3BlbmQsIHRyaWdnZXJlZCB2aWEgYC9zeXMvcG93ZXIvc3RhdGVgLiBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBpcyByZWxhdGVkIHRvIHZpcnRpbyByZXNldHMgb3Igb3RoZXIgcmVzZXQgc2NlbmFyaW9zLCBsaWtlIFBDSSBvciBTUi1JT1YuCgpUaGUgYmlnIHF1ZXN0aW9uIG5vdzogY2FuIHRoZXNlIHRyaWdnZXJzIGJlIHJlYWNoZWQgaW4gYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXI/IEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGRvZXMgZXhlY3V0ZSBwb3dlciBtYW5hZ2VtZW50LXJlbGF0ZWQgc3lzY2FsbHMgYW5kIHN5c2ZzIHdyaXRlcy4gSXQgZG9lcyB0aGluZ3MgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgd3JpdGUgdG8gYC9zeXMvcG93ZXIvc3RhdGVgLCBhbmQgY2FuIGRvIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcywgaW9jdGxzLCB2aXJ0aW8gcmVzZXRzLiBUaGF0JiMzOTtzIGdvb2QhCgpOZXh0LCBpcyBgdmlydGlvX2Jsa2AgcmVhY2hhYmxlPyBZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHZpcnRpbyBibG9jayBkcml2ZXIgKGBDT05GSUdfVklSVElPX0JMS2ApLiBUaGF0IHNob3VsZCBiZSBwcmVzZW50IGluIG1vc3Qgc3lzdGVtcyBhbmQgdGVzdCBjb25maWd1cmF0aW9ucy4gRmluYWxseSwgSSBzaG91bGQgY2hlY2sgdGhhdCBgQ09ORklHX1BNX1NMRUVQYCBpcyBlbmFibGVkLCB3aGljaCBpdCBzZWVtcyB0byBiZSBpbiBtb3N0IGtlcm5lbHMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgVklSVElPX0JMS2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLiBJIG5lZWQgdG8ga25vdyBhbGwgdGhlIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZC4gSXQgc2VlbXMgbGlrZSBpdCBpcyBhIHZlcnkgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUSU9fQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjg2PWNvbmZpZyBYRU5fQkxLREVWX0JBQ0tFTkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzA2LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMwNzpjb25maWcgVklSVElPX0JMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwOC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBCbG9jayBEcml2ZXIgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIGFnYWluLiBJIHJlY2FsbCBzb21ldGhpbmcgc3BlY2lmaWMsIGFyb3VuZCBsaW5lIDMwNy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBibG9jayBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgd2hhdGV2ZXImIzM5O3MgYmVpbmcgc2V0IHVwIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGJsb2NrIHN1YnN5c3RlbS4gSSB3YW50IHRvIHNlZSBpZiBhbnkgZmxhZ3Mgb3Igc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkIHRoYXQgY291bGQgYWZmZWN0IHJlY2VudCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgaXNzdWVzIEnigJl2ZSBiZWVuIGxvb2tpbmcgYXQuIFRoaXMgc3BlY2lmaWMgbG9jYXRpb24gKnNob3VsZCogaGF2ZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgSSYjMzk7bSBhZnRlciwgYW5kIGhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgYW5zd2VycyBJIG5lZWQgdG8gbW92ZSBmb3J3YXJkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwNTpcdFxuIDMwNjpcdFxuIDMwNzpcdGNvbmZpZyBWSVJUSU9fQkxLXG4gMzA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG4gMzA5Olx0XHRkZXBlbmRzIG9uIFZJUlRJT1xuIDMxMDpcdFx0c2VsZWN0IFNHX1BPT0xcbiAzMTE6XHRcdGhlbHBcbiAzMTI6XHRcdCAgVGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcbiAzMTM6XHQgICAgICAgICAgUUVNVSBiYXNlZCBWTU1zIChsaWtlIEtWTSBvciBYZW4pLiAgU2F5IFkgb3IgTS5cbiAzMTQ6XHRcbiAzMTU6XHRjb25maWcgQkxLX0RFVl9SQkRcbiAzMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JhZG9zIGJsb2NrIGRldmljZSAoUkJEKVwmIzM0O1xuIDMxNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuIDMxODpcdFx0c2VsZWN0IENFUEhfTElCXG4gMzE5Olx0XHRoZWxwXG4gMzIwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgaW5jbHVkZSB0aGUgUmFkb3MgYmxvY2sgZGV2aWNlLCB3aGljaCBzdHJpcGVzXG4gMzIxOlx0XHQgIGEgYmxvY2sgZGV2aWNlIG92ZXIgb2JqZWN0cyBzdG9yZWQgaW4gdGhlIENlcGggZGlzdHJpYnV0ZWQgb2JqZWN0XG4gMzIyOlx0XHQgIHN0b3JlLlxuIDMyMzpcdFxuIDMyNDpcdFx0ICBNb3JlIGluZm9ybWF0aW9uIGF0IGh0dHA6Ly9jZXBoLm5ld2RyZWFtLm5ldC8uXG4gMzI1Olx0XG4gMzI2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMzI3Olx0XG4gMzI4Olx0Y29uZmlnIEJMS19ERVZfVUJMS1xuIDMyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTkyMwoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAxMDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFBhdGNoIEFwcGxpY2FiaWxpdHkgdG8gRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjaGVja2luZyBTZWN0aW9uIDIgYW5kIFNlY3Rpb24gMyBvZiB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi4gIFNlY3Rpb24gMiBsYXlzIG91dCAqbmVnYXRpdmUqIGNyaXRlcmlhIOKAkyBzY2VuYXJpb3Mgd2hlcmUgZnV6emluZyBpc24mIzM5O3Qgd29ydGh3aGlsZS4gIEl0IGhpZ2hsaWdodHMgdGhpbmdzIGxpa2Ugbm9uLWtlcm5lbCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgaW5hY2Nlc3NpYmxlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGtleSBoZXJlIGlzIHRvIHZlcmlmeSB3aGV0aGVyIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBmYWxscyBpbnRvIGFueSBvZiB0aG9zZSAmIzM0O3VucmVhY2hhYmxlJiMzNDsgY2F0ZWdvcmllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXTigJlzIGRlZmluaXRlbHkgKm5vdCogY2FsbGVkIGJ5IGB2aXJ0YmxrX3JlbW92ZWAsIHNvIEkgY2FuIGlnbm9yZSBpdHMgb3duIGxvZ2ljLiBJbnN0ZWFkLCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkIGJ5IGB2aXJ0YmxrX2ZyZWV6ZWAgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLgoKQWxyaWdodCwgYSBkZWVwZXIgZGl2ZTogYHZpcnRibGtfZnJlZXplYCBpcyByZWxhdGVkIHRvIHBvd2VyIG1hbmFnZW1lbnQgLSB0aGluayBQTSBzbGVlcCwgaGliZXJuYXRpb24sIGFuZCBzdXNwZW5kLiBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBpcyByZWxhdGVkIHRvIGRldmljZSByZXNldCwgdHJpZ2dlcmVkIGluIGRpZmZlcmVudCB3YXlzLCBpbmNsdWRpbmcgY2FsbHMgdmlhIGB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmVgLiBDcnVjaWFsbHksIHRoZXNlIHNsZWVwL2ZyZWV6ZSBzdGF0ZXMgY2FuIGJlICppbml0aWF0ZWQgZnJvbSB1c2Vyc3BhY2UqIHZpYSBzeXNmcyBlbnRyaWVzIGxpa2UgYC9zeXMvcG93ZXIvc3RhdGVgLiBHaXZlbiB0aGF0IGB2aXJ0aW9fYmxrYCBpcyBhIHZpcnR1YWxpemVkIGRyaXZlciBjb21tb24gaW4gS1ZNL1FFTVUgZW52aXJvbm1lbnRzLCBhbmQgdGhpcyBpcyB3aGVyZSBzeXprYWxsZXIgaXMgbm9ybWFsbHkgb3BlcmF0aW5nLCB0aGlzIHNob3VsZCBiZSByZWFjaGFibGUuCgpTZWN0aW9uIDMgZnVydGhlciBzdXBwb3J0cyB0aGlzIC0gSSBtdXN0IGFsc28gY2hlY2sgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzL2Fzc2VydGlvbnMgb3IgcmVhY2hhYmxlIGNvZGUuICBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcXVldWUgcXVpZXNjaW5nIGJlaGF2aW9yIC0gZnJvbSBhIG5vbi1ibG9ja2luZyBvcGVyYXRpb24gKGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgKSB0byBhIGJsb2NraW5nIG9uZSAoYGJsa19tcV9xdWllc2NlX3F1ZXVlYCkuICBUaGF0IGltcGxpZXMgYSBjaGFuZ2UgaW4gbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIHNlbWFudGljcyBkdXJpbmcgZnJlZXplL3Jlc2V0IGZvciB2aXJ0aW9fYmxrIGRldmljZXMuCgpOb3csIGxldCYjMzk7cyBsaXN0IHRoZSBrZXkgc3ltYm9scyBhZmZlY3RlZC4gVGhpcyBwYXRjaCBhbHRlcnM6IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCwgYHZpcnRibGtfZnJlZXplYCwgYHZpcnRibGtfcmVzZXRfcHJlcGFyZWAsIGB2aXJ0YmxrX3Jlc3RvcmVfcHJpdmAsIGB2aXJ0YmxrX3Jlc3RvcmVgLCBhbmQgYHZpcnRibGtfcmVzZXRfZG9uZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYy4KCkNoZWNraW5nIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AsIEkgY2FuIHNlZSB0aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCwgYHZpcnRibGtfZnJlZXplYCwgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGFyZSBhbGwgKnN0YXRpYyouICBIb3dldmVyLCB3aGlsZSB0aGV5IGFyZSBgc3RhdGljYCwgdGhleSYjMzk7cmUgc3RpbGwgc3ltYm9scyB3aXRoaW4gYHZpcnRpb19ibGsub2AuICBJIGFsc28ga25vdyB0aGF0ICBgdmlydGlvX2RldmljZV9mcmVlemVgIGFuZCBgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlYCBhcmUgaW4gYGRyaXZlcnMvdmlydGlvL3ZpcnRpby5jYCwgYW5kIHNvIHRob3NlIHdpbGwgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50czogYFZJUlRJT19CTEtgLCBgVklSVElPYCwgYW5kIGBQTV9TTEVFUGAgYXJlIGVzc2VudGlhbC4KCkZpbmFsbHksIEkgY2FuIGNvbmZpZGVudGx5IHZlcmlmeSB0aGUgcmVxdWlyZW1lbnRzOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlIChiZWNhdXNlIHdlJiMzOTt2ZSBlc3RhYmxpc2hlZCByZWFjaGFiaWxpdHkpLgoyLiAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDt2aXJ0YmxrX2ZyZWV6ZV9wcml2JiMzNDssICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywgJiMzNDt2aXJ0aW9fZGV2aWNlX2ZyZWV6ZSYjMzQ7LCAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7XWAgKHN5bWJvbHMgcmVsZXZhbnQgdG8gZnJlZXplL3Jlc2V0KS4KMy4gIGBFbmFibGVDb25maWdzYDogYFsmIzM0O1ZJUlRJT19CTEsmIzM0OywgJiMzNDtWSVJUSU8mIzM0OywgJiMzNDtQTV9TTEVFUCYjMzQ7XWAgKG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucykuCjQuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIHZpcnRpby1ibGsgcXVldWUgcXVpZXNjaW5nIGR1cmluZyBmcmVlemUvcmVzZXQsIG1ha2luZyB0aGUgcXVpZXNjaW5nIHN5bmNocm9ub3VzIGluc3RlYWQgb2YgYXN5bmNocm9ub3VzLCB3aGljaCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGR1cmluZyBQTSBhbmQgZGV2aWNlIHJlc2V0LgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fQkxLJiMzNDssCiAgICAmIzM0O1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtQTV9TTEVFUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRibGtfZnJlZXplX3ByaXYmIzM0OywKICAgICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGJsa19yZXNldF9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfZnJlZXplJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fQkxLJiMzNDssCiAgICAmIzM0O1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtQTV9TTEVFUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRibGtfZnJlZXplX3ByaXYmIzM0OywKICAgICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGJsa19yZXNldF9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfZnJlZXplJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWU1YWRkZjIwOTcyMmFkNGMxYTUzMWNjZDY2Zjc2OTBlOTNlYTZkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwppbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwpAQCAtMTU5NSw3ICYjNDM7MTU5NSw3IEBAIHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKIAogCS8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovCiAJbWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpOwotCWJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTsKJiM0MzsJYmxrX21xX3F1aWVzY2VfcXVldWUocSk7CiAJYmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTsKIAogCS8qIEVuc3VyZSB3ZSBkb24mIzM5O3QgcmVjZWl2ZSBhbnkgbW9yZSBpbnRlcnJ1cHRzICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIHZzLiBLQVNBTiBGdXp6aW5nIERlY2lzaW9uIGZvciBgdmlydGlvX2Jsay5jYCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgdXNlciB3YW50cyBtZSB0byBkZWNpZGUgaWYgd2UgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jYCBvciBpZiBLQVNBTiBpcyBzdWZmaWNpZW50LiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKTXkgaW5pdGlhbCByaXNrIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBsb29rcyBsaWtlIGEgdGVzdGluZy9RQSByZWxhdGVkIHBhdGNoLCBhbmQgdGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgYmVuaWduLiBUaGUgdXNlciBpcyBlc3NlbnRpYWxseSBhc2tpbmcgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuIEkgdGhpbmsgdGhpcyBpcyBhIHNhZmUgcmVxdWVzdCB0byBmdWxmaWxsLgoKQWxyaWdodCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgYSBzaW1wbGUgY2hhbmdlLCByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLiBJIHJlbWVtYmVyIHNvbWUgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgbHVya2luZyBhcm91bmQgdGhlc2UgZnVuY3Rpb25zLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYW55IHN1YnRsZSBjaGFuZ2UgaW4gc2VtYW50aWNzLgoKSSYjMzk7bGwgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYHZpcnRpb19ibGsuY2AgYXJvdW5kIGxpbmUgMTU5NSB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoIGByZWFkLWZpbGVgLiBUaGlzIHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGxpa2VseSBpbXBhY3Qgb2YgdGhlIGNoYW5nZS4gT25jZSBJIGhhdmUgdGhlIGNvbnRleHQsIEkgY2FuIG1ha2UgYSBqdWRnZW1lbnQgb24gd2hldGhlciB0aGUgY2hhbmdlcyBtaWdodCBpbnRlcmFjdCB3aXRoIG1lbW9yeSBpbiBhIHdheSB0aGF0IEtNU0FOIHdvdWxkIGJlIHNwZWNpZmljYWxseSB2YWx1YWJsZSBmb3IuIElmIHRoaXMgaXMgYSBzaW1wbGUgc3luY2hyb25pemF0aW9uIHR3ZWFrLCBLQVNBTiBpcyBsaWtlbHkgc3VmZmljaWVudC4gSWYgaXQgaW52b2x2ZXMgc3VidGxlIGNoYW5nZXMgdG8gbWVtb3J5IGxheW91dCwgbWF5YmUgS01TQU4gd291bGQgYmUgbW9yZSB0YXJnZXRlZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IG1vcmUgYmVmb3JlIEkgY2FuIGRlY2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU4MDpcdFx0dmJsay1cdTAwM2V2ZGV2ID0gTlVMTDtcbjE1ODE6XHRcbjE1ODI6XHRcdHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZWRlbF92cXModmRldik7XG4xNTgzOlx0XHRrZnJlZSh2YmxrLVx1MDAzZXZxcyk7XG4xNTg0Olx0XG4xNTg1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2dmJsay1cdTAwM2V2ZGV2X211dGV4KTtcbjE1ODY6XHRcbjE1ODc6XHRcdHB1dF9kaXNrKHZibGstXHUwMDNlZGlzayk7XG4xNTg4Olx0fVxuMTU4OTpcdFxuMTU5MDpcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbjE1OTE6XHR7XG4xNTkyOlx0XHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXHUwMDNlcHJpdjtcbjE1OTM6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cdTAwM2VkaXNrLVx1MDAzZXF1ZXVlO1xuMTU5NDpcdFx0dW5zaWduZWQgaW50IG1lbWZsYWdzO1xuMTU5NTpcdFxuMTU5NjpcdFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbjE1OTc6XHRcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbjE1OTg6XHRcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xuMTU5OTpcdFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcbjE2MDA6XHRcbjE2MDE6XHRcdC8qIEVuc3VyZSB3ZSBkb24mIzM5O3QgcmVjZWl2ZSBhbnkgbW9yZSBpbnRlcnJ1cHRzICovXG4xNjAyOlx0XHR2aXJ0aW9fcmVzZXRfZGV2aWNlKHZkZXYpO1xuMTYwMzpcdFxuMTYwNDpcdFx0LyogTWFrZSBzdXJlIG5vIHdvcmsgaGFuZGxlciBpcyBhY2Nlc3NpbmcgdGhlIGRldmljZS4gKi9cbjE2MDU6XHRcdGZsdXNoX3dvcmsoXHUwMDI2dmJsay1cdTAwM2Vjb25maWdfd29yayk7XG4xNjA2Olx0XG4xNjA3Olx0XHR2ZGV2LVx1MDAzZWNvbmZpZy1cdTAwM2VkZWxfdnFzKHZkZXYpO1xuMTYwODpcdFx0a2ZyZWUodmJsay1cdTAwM2V2cXMpO1xuMTYwOTpcdFx0LypcbjE2MTA6XHRcdCAqIFNldCB0byBOVUxMIHRvIHByZXZlbnQgZnJlZWluZyB2cXMgYWdhaW4gYWZ0ZXIgYSBmYWlsZWQgdnFzXG4xNjExOlx0XHQgKiBhbGxvY2F0aW9uIGR1cmluZyByZXN1bWUuIE5vdGUgdGhhdCBrZnJlZSgpIGFscmVhZHkgaGFuZGxlcyBOVUxMXG4xNjEyOlx0XHQgKiBwb2ludGVycyBzYWZlbHkuXG4xNjEzOlx0XHQgKi9cbjE2MTQ6XHRcdHZibGstXHUwMDNldnFzID0gTlVMTDtcbjE2MTU6XHRcbjE2MTY6XHRcdHJldHVybiAwO1xuMTYxNzpcdH1cbjE2MTg6XHRcbjE2MTk6XHRzdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM1CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDYwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBob3cgd2UgaGFuZGxlIHF1ZXVlIHF1aWVzY2luZyBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKWAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWUocSlgLiBUaGUgY3JpdGljYWwgZGlmZmVyZW5jZSBpcyB0aGUgd2FpdGluZyBiZWhhdmlvcjogYG5vd2FpdGAgaXMgKmFzeW5jaHJvbm91cyosIHdoaWxlIHRoZSB1cGRhdGVkIHZlcnNpb24gaXMgKnN5bmNocm9ub3VzKi4gVGhpcyBlbnN1cmVzIHdlIHdhaXQgZm9yIGFsbCBpbi1mbGlnaHQgcmVxdWVzdHMgYW5kIHF1ZXVlIGhhbmRsZXJzIHRvIGNvbXBsZXRlIGJlZm9yZSB0ZWFyaW5nIGRvd24gdGhlIHZpcnRxdWV1ZXMgKGBkZWxfdnFzYCBhbmQgYGtmcmVlYCkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbiBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciBvdGhlciBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSBpZiB3ZSBkZWxldGVkIHRoZSB2aXJ0cXVldWVzIHdoaWxlIHJlcXVlc3RzIHdlcmUgc3RpbGwgYWN0aXZlLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCB0aHJvdWdoIHRoZSBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGNoZWNrcy4gQW0gSSBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyAKCjEuICBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOb3BlLCBub3QgaGVyZS4KMi4gIENvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBEb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQuCjMuICBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vIGNoYW5nZXMgdGhlcmUuCjQuICBBbnl0aGluZyB3aXRoIGJvdW5kcyBjaGVja3MsIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IERvZXNuJiMzOTt0IGFwcGx5IGhlcmUuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZS4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgZGV2aWNlIGZyZWV6ZSBvciBwb3dlciBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHF1ZXVlIHF1aWVzY2luZy4gVGhlIGJ1ZyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGZpeCBpcyBhIGNvbmN1cnJlbmN5IGlzc3VlIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24uIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzIGFyZSBkZXNpZ25lZCB0byBjYXRjaCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIGFuZCBjb25jdXJyZW5jeSBidWdzLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrLCBvciBhbiBpbmZvIGxlYWsgaW50cm9kdWNlZC4KClNvLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIGNoZWNrIGxpc3QsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuCgpOb3csIGxldCYjMzk7cyBwcmVwYXJlIHRoZSByZWFzb25pbmcgZm9yIGBzZXQtcmVzdWx0c2A6CgoqICAgVGhlIHBhdGNoIG1ha2VzIGEgZGlyZWN0IGNoYW5nZSBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYCBpbiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLCB3aGVyZSBpdCByZXBsYWNlcyBhbiBhc3luY2hyb25vdXMgcXVpZXNjZSBvcGVyYXRpb24gd2l0aCBhIHN5bmNocm9ub3VzIG9uZS4KKiAgIFRoaXMgc3luY2hyb25vdXMgb3BlcmF0aW9uIGVuc3VyZXMgdGhhdCBhbGwgb3V0c3RhbmRpbmcgcXVldWUgYWN0aXZpdHkgaXMgY29tcGxldGUgYmVmb3JlIHByb2NlZWRpbmcgdG8gZGV2aWNlIHJlc2V0IGFuZCB2aXJ0cXVldWUgZGVsZXRpb24uCiogICBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgZGV2aWNlIGZyZWV6aW5nLgoqICAgVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24gY2hhbmdlcywgb3IgbmV3IHBhdGhzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgY29waWVkIHRvIHVzZXJzcGFjZS4KKiAgIFRoZSBjb2RlIGlzIGFscmVhZHkgc3VzY2VwdGlibGUgdG8gS0FTQU4gaXNzdWVzIGluIHRoZSBjb250ZXh0IG9mIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4KClRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjMxLjcxNjYyMTY3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTUyMjI0MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzEuNzE2NjI4NTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTUzODU0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcXG5pbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXFxuKysrIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcXG5AQCAtMTU5NSw3ICsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbiBcXG4gXFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cXG4gXFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xcbi1cXHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XFxuK1xcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xcbiBcXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xcbiBcXG4gXFx0LyogRW5zdXJlIHdlIGRvbid0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDozMi4yMzI2NTY1NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5NTg0NTk5NjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTg6MDQ6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXG5pbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXG5AQCAtMTU5NSw3ICsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuIFxuIFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbiBcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbi1cdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbitcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xuIFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcbiBcbiBcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjMyLjIzMjY1Nzg3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyMDQwNzgxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipJbnNwZWN0aW5nIHRoZSBWaXJ0aW8gQmxvY2sgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMg4oCTIHdoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGRpZmYuIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdpdGhpbiB0aGF0IHNwZWNpZmljIGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgYmVlbiBtb2RpZmllZCBhbmQgd2h5LlxuXG5OZXh0LCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBpcyB1c2VkIGZvciBpbiB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG5hdmlnYXRlIGFsbCBvZiB0aGUgdXNhZ2VzIG9mIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHJlcXVpcmVzIGxvb2tpbmcgYXQgdGhlIGNhbGwgc3RhY2suIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHVzZSB0b29scyBsaWtlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgYHZpcnRpb19ibGsuY2AuIEknbGwgd2FudCB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzYuNDM2NzM5MDM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzcyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRibGtfZnJlZXplX3ByaXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTU2ND1zdGF0aWMgdm9pZCB2aXJ0YmxrX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE1ODktXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5MDpzdGF0aWMgaW50IHZpcnRibGtfZnJlZXplX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjM1PXN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzNi17XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTYzNzpcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjM4LX1cXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE2NDY9c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0Ny17XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY0ODpcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzYuNDgzNTE3ODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA4MTEzOTk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgdmlydGlvX2Jsay5jOiBBIERlZXAgRGl2ZSBpbnRvIFJlcXVlc3QgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgdmlydGlvX2Jsay5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTU4MC0xNjcwLiBJJ20gZm9jdXNpbmcgb24gdGhpcyByZWdpb24gYmVjYXVzZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYmxvY2sgbGF5ZXIgYW5kIHZpcnRpbywgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgcmVxdWVzdCBwcm9jZXNzaW5nIGhhcHBlbnMuIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgaG93IHJlcXVlc3RzIGZyb20gdGhlIGhvc3QgT1MgYXJlIHRyYW5zbGF0ZWQgaW50byB2aXJ0aW8gY29tbWFuZHMgYW5kIHRoZW4gc3VibWl0dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGRldmljZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnRxdWV1ZSwgaG93IGl0IGhhbmRsZXMgY29tbWFuZCBjb21wbGV0aW9uLCBhbmQgd2hlcmUgdGhlIGVycm9yIGhhbmRsaW5nIHNpdHMuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciwgcGVyaGFwcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgdmlydHF1ZXVlX2FkZF9idWZgIGFuZCBgdmlydHF1ZXVlX2tpY2tgLiBJJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHRyYWNrIHJlcXVlc3RzOyBsaWtlbHkgdGhlcmUncyBhIHN0cnVjdCB0byBob2xkIGFsbCB0aGUgbWV0YWRhdGEgYWJvdXQgYW4gYWN0aXZlIHJlcXVlc3QsIGZyb20gdGhlIGJsb2NrIEkvTyByZXF1ZXN0IHN0cnVjdHVyZSBkb3duIHRvIHRoZSB2aXJ0aW8gZGVzY3JpcHRvci4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgZXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcml0aWNhbCBoZXJlLCB3aXRoIHZhcmlvdXMgY2hlY2tzIGZvciB0aGluZ3MgbGlrZSBkZXZpY2UgZXJyb3JzLCBidWZmZXIgb3ZlcmZsb3dzLCBvciB0aGUgdXN1YWwgc3VzcGVjdHMgdGhhdCBjYW4gcGxhZ3VlIGEgZHJpdmVyIG9wZXJhdGluZyBvbiByYXcgaGFyZHdhcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nOyBpcyB0aGlzIHN5bmNocm9ub3VzLCBhc3luY2hyb25vdXMsIG9yIGEgaHlicmlkIG1vZGVsPyBHaXZlbiB0aGUgbmF0dXJlIG9mIGJsb2NrIEkvTywgSSdkIGd1ZXNzIHRoYXQgdGhpcyB3aWxsIGludm9sdmUgc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBjb21wbGV0aW9uIGhhbmRsaW5nIHRvIGtlZXAgdGhlIGRldmljZSByZXNwb25zaXZlLiBJJ20gZXhwZWN0aW5nIGxvY2tpbmcgdG8gYmUgcHJlc2VudCwgYW5kIGl0J2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXRpZXMgdGhleSB1c2UuIEknbSBhcm1lZCB3aXRoIG15IGtub3dsZWRnZSBvZiB2aXJ0aW8sIGJsb2NrIGRldmljZSBkcml2ZXJzLCBhbmQgeWVhcnMgb2Yga2VybmVsIGV4cGVyaWVuY2UsIHNvIGxldCdzIHNlZSB3aGF0IHNlY3JldHMgYXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDozOS41NjQ2NjA1MDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjA6XFx0b3V0OlxcbjE1NjE6XFx0XFx0cmV0dXJuIGVycjtcXG4xNTYyOlxcdH1cXG4xNTYzOlxcdFxcbjE1NjQ6XFx0c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTU2NTpcXHR7XFxuMTU2NjpcXHRcXHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXFx1MDAzZXByaXY7XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTU2OTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTU3MDpcXHRcXG4xNTcxOlxcdFxcdGRlbF9nZW5kaXNrKHZibGstXFx1MDAzZWRpc2spO1xcbjE1NzI6XFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dmJsay1cXHUwMDNldGFnX3NldCk7XFxuMTU3MzpcXHRcXG4xNTc0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZibGstXFx1MDAzZXZkZXZfbXV0ZXgpO1xcbjE1NzU6XFx0XFxuMTU3NjpcXHRcXHQvKiBTdG9wIGFsbCB0aGUgdmlydHF1ZXVlcy4gKi9cXG4xNTc3OlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTU3ODpcXHRcXG4xNTc5OlxcdFxcdC8qIFZpcnRxdWV1ZXMgYXJlIHN0b3BwZWQsIG5vdGhpbmcgY2FuIHVzZSB2YmxrLVxcdTAwM2V2ZGV2IGFueW1vcmUuICovXFxuMTU4MDpcXHRcXHR2YmxrLVxcdTAwM2V2ZGV2ID0gTlVMTDtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0dmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VkZWxfdnFzKHZkZXYpO1xcbjE1ODM6XFx0XFx0a2ZyZWUodmJsay1cXHUwMDNldnFzKTtcXG4xNTg0OlxcdFxcbjE1ODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2YmxrLVxcdTAwM2V2ZGV2X211dGV4KTtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0cHV0X2Rpc2sodmJsay1cXHUwMDNlZGlzayk7XFxuMTU4ODpcXHR9XFxuMTU4OTpcXHRcXG4xNTkwOlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4xNTkxOlxcdHtcXG4xNTkyOlxcdFxcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cXHUwMDNlcHJpdjtcXG4xNTkzOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWU7XFxuMTU5NDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTU5NTpcXHRcXG4xNTk2OlxcdFxcdC8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovXFxuMTU5NzpcXHRcXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuMTU5ODpcXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcXG4xNTk5OlxcdFxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdFxcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cXG4xNjAyOlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTYwMzpcXHRcXG4xNjA0OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTYwNTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcXG4xNjA4OlxcdFxcdGtmcmVlKHZibGstXFx1MDAzZXZxcyk7XFxuMTYwOTpcXHRcXHQvKlxcbjE2MTA6XFx0XFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcXG4xNjExOlxcdFxcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcXG4xNjEyOlxcdFxcdCAqIHBvaW50ZXJzIHNhZmVseS5cXG4xNjEzOlxcdFxcdCAqL1xcbjE2MTQ6XFx0XFx0dmJsay1cXHUwMDNldnFzID0gTlVMTDtcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0cmV0dXJuIDA7XFxuMTYxNzpcXHR9XFxuMTYxODpcXHRcXG4xNjE5OlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTYyMDpcXHR7XFxuMTYyMTpcXHRcXHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXFx1MDAzZXByaXY7XFxuMTYyMjpcXHRcXHRpbnQgcmV0O1xcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRyZXQgPSBpbml0X3ZxKHZkZXYtXFx1MDAzZXByaXYpO1xcbjE2MjU6XFx0XFx0aWYgKHJldClcXG4xNjI2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTYyNzpcXHRcXG4xNjI4OlxcdFxcdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XFxuMTYyOTpcXHRcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHZibGstXFx1MDAzZWRpc2stXFx1MDAzZXF1ZXVlKTtcXG4xNjMwOlxcdFxcbjE2MzE6XFx0XFx0cmV0dXJuIDA7XFxuMTYzMjpcXHR9XFxuMTYzMzpcXHRcXG4xNjM0OlxcdCNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG4xNjM1OlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTYzNjpcXHR7XFxuMTYzNzpcXHRcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG4xNjM4OlxcdH1cXG4xNjM5OlxcdFxcbjE2NDA6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc3RvcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY0MTpcXHR7XFxuMTY0MjpcXHRcXHRyZXR1cm4gdmlydGJsa19yZXN0b3JlX3ByaXYodmRldik7XFxuMTY0MzpcXHR9XFxuMTY0NDpcXHQjZW5kaWZcXG4xNjQ1OlxcdFxcbjE2NDY6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY0NzpcXHR7XFxuMTY0ODpcXHRcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG4xNjQ5OlxcdH1cXG4xNjUwOlxcdFxcbjE2NTE6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X2RvbmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY1MjpcXHR7XFxuMTY1MzpcXHRcXHRyZXR1cm4gdmlydGJsa19yZXN0b3JlX3ByaXYodmRldik7XFxuMTY1NDpcXHR9XFxuMTY1NTpcXHRcXG4xNjU2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbjE2NTc6XFx0XFx0eyBWSVJUSU9fSURfQkxPQ0ssIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuMTY1ODpcXHRcXHR7IDAgfSxcXG4xNjU5OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjM5LjU2NDgxMzYzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1MDAzNTYyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgcmVzdCBvZiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBkcml2ZXIgd29ya3MsIHNwZWNpZmljYWxseSB0aGUgYXNwZWN0cyBJIGhhdmVuJ3QgZXhhbWluZWQgY2xvc2VseSB5ZXQuIEknbSBnb2luZyB0byBmb2N1cyBvbiBob3cgaXQgaGFuZGxlcyByZXF1ZXN0cyBhbmQgbWFuYWdlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgc3RydWN0dXJlcyB0aGUgcmVxdWVzdHMsIHRoZSBjb21tYW5kIHN1Ym1pc3Npb24gcHJvY2VzcywgYW5kIGhvdyBpdCBkZWFscyB3aXRoIHRoZSBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgVmlydElPIGJsb2NrIGRldmljZS4gQXJlIHRoZXkgdXNpbmcgaW50ZXJydXB0cywgcG9sbGluZywgb3IgYSBjb21iaW5hdGlvbj8gQW5kIGFyZSB0aGVyZSBhbnkgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBlcnJvciBoYW5kbGluZyBzdHJhdGVnaWVzIGltcGxlbWVudGVkPyBJIGV4cGVjdCB0byBzZWUgdGhlIGNvcmUgbG9naWMgZm9yIHRyYW5zbGF0aW5nIGJsb2NrIEkvTyByZXF1ZXN0cyBpbnRvIFZpcnRJTyBjb21tYW5kcywgYnV0IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGUgcXVldWluZyBtZWNoYW5pc21zLiBIb3cgYXJlIHJlcXVlc3RzIHByaW9yaXRpemVkIG9yIG1lcmdlZD8gSSBhbHNvIHdhbnQgdG8gaWRlbnRpZnkgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyB1c2VkIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5LCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLiBUaGVyZSdzIHByb2JhYmx5IGEgc3BpbmxvY2sgb3IgbXV0ZXggc29tZXdoZXJlIGFyb3VuZCB0aGUgcXVldWUgaGVhZHMgYW5kIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLiBGdXJ0aGVybW9yZSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcy4gVmlydElPIGlzIHN1cHBvc2VkIHRvIGJlIGEgc3RhbmRhcmRpemVkIGludGVyZmFjZSwgYnV0IHJlYWwtd29ybGQgaW1wbGVtZW50YXRpb25zIG9mdGVuIHJlcXVpcmUgc29tZSBsZXZlbCBvZiBjdXN0b21pemF0aW9uLiBBbmQgZmluYWxseSwgSSdtIGdvaW5nIHRvIGJlIGFzc2Vzc2luZyB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgbWVtb3J5IG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGxpa2UgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIG9yIHplcm8tY29weSB0ZWNobmlxdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzU0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0My4wNjUxODQ4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTY1MDpcXHRcXG4xNjUxOlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbjE2NTI6XFx0e1xcbjE2NTM6XFx0XFx0cmV0dXJuIHZpcnRibGtfcmVzdG9yZV9wcml2KHZkZXYpO1xcbjE2NTQ6XFx0fVxcbjE2NTU6XFx0XFxuMTY1NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG4xNjU3OlxcdFxcdHsgVklSVElPX0lEX0JMT0NLLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbjE2NTg6XFx0XFx0eyAwIH0sXFxuMTY1OTpcXHR9O1xcbjE2NjA6XFx0XFxuMTY2MTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZlYXR1cmVzX2xlZ2FjeVtdID0ge1xcbjE2NjI6XFx0XFx0VklSVElPX0JMS19GX1NFR19NQVgsIFZJUlRJT19CTEtfRl9TSVpFX01BWCwgVklSVElPX0JMS19GX0dFT01FVFJZLFxcbjE2NjM6XFx0XFx0VklSVElPX0JMS19GX1JPLCBWSVJUSU9fQkxLX0ZfQkxLX1NJWkUsXFxuMTY2NDpcXHRcXHRWSVJUSU9fQkxLX0ZfRkxVU0gsIFZJUlRJT19CTEtfRl9UT1BPTE9HWSwgVklSVElPX0JMS19GX0NPTkZJR19XQ0UsXFxuMTY2NTpcXHRcXHRWSVJUSU9fQkxLX0ZfTVEsIFZJUlRJT19CTEtfRl9ESVNDQVJELCBWSVJUSU9fQkxLX0ZfV1JJVEVfWkVST0VTLFxcbjE2NjY6XFx0XFx0VklSVElPX0JMS19GX1NFQ1VSRV9FUkFTRSxcXG4xNjY3OlxcdH1cXG4xNjY4OlxcdDtcXG4xNjY5OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZmVhdHVyZXNbXSA9IHtcXG4xNjcwOlxcdFxcdFZJUlRJT19CTEtfRl9TRUdfTUFYLCBWSVJUSU9fQkxLX0ZfU0laRV9NQVgsIFZJUlRJT19CTEtfRl9HRU9NRVRSWSxcXG4xNjcxOlxcdFxcdFZJUlRJT19CTEtfRl9STywgVklSVElPX0JMS19GX0JMS19TSVpFLFxcbjE2NzI6XFx0XFx0VklSVElPX0JMS19GX0ZMVVNILCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1ksIFZJUlRJT19CTEtfRl9DT05GSUdfV0NFLFxcbjE2NzM6XFx0XFx0VklSVElPX0JMS19GX01RLCBWSVJUSU9fQkxLX0ZfRElTQ0FSRCwgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyxcXG4xNjc0OlxcdFxcdFZJUlRJT19CTEtfRl9TRUNVUkVfRVJBU0UsIFZJUlRJT19CTEtfRl9aT05FRCxcXG4xNjc1OlxcdH07XFxuMTY3NjpcXHRcXG4xNjc3OlxcdHN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fYmxrID0ge1xcbjE2Nzg6XFx0XFx0LmZlYXR1cmVfdGFibGVcXHRcXHRcXHQ9IGZlYXR1cmVzLFxcbjE2Nzk6XFx0XFx0LmZlYXR1cmVfdGFibGVfc2l6ZVxcdFxcdD0gQVJSQVlfU0laRShmZWF0dXJlcyksXFxuMTY4MDpcXHRcXHQuZmVhdHVyZV90YWJsZV9sZWdhY3lcXHRcXHQ9IGZlYXR1cmVzX2xlZ2FjeSxcXG4xNjgxOlxcdFxcdC5mZWF0dXJlX3RhYmxlX3NpemVfbGVnYWN5XFx0PSBBUlJBWV9TSVpFKGZlYXR1cmVzX2xlZ2FjeSksXFxuMTY4MjpcXHRcXHQuZHJpdmVyLm5hbWVcXHRcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbjE2ODM6XFx0XFx0LmlkX3RhYmxlXFx0XFx0XFx0PSBpZF90YWJsZSxcXG4xNjg0OlxcdFxcdC5wcm9iZVxcdFxcdFxcdFxcdD0gdmlydGJsa19wcm9iZSxcXG4xNjg1OlxcdFxcdC5yZW1vdmVcXHRcXHRcXHRcXHQ9IHZpcnRibGtfcmVtb3ZlLFxcbjE2ODY6XFx0XFx0LmNvbmZpZ19jaGFuZ2VkXFx0XFx0XFx0PSB2aXJ0YmxrX2NvbmZpZ19jaGFuZ2VkLFxcbjE2ODc6XFx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbjE2ODg6XFx0XFx0LmZyZWV6ZVxcdFxcdFxcdFxcdD0gdmlydGJsa19mcmVlemUsXFxuMTY4OTpcXHRcXHQucmVzdG9yZVxcdFxcdFxcdD0gdmlydGJsa19yZXN0b3JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0My4wNjUyOTU0NTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjExNjI1ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRGlnZ2luZyBpbnRvIHZpcnRibGsgRnJlZXplL1Jlc2V0IEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgdmlydGJsa2AgZHJpdmVyIGhhbmRsZXMgZnJlZXppbmcgYW5kIHJlc2V0dGluZywgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IHBvaW50czogdGhlIGB2aXJ0YmxrX2ZyZWV6ZWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBgLmZyZWV6ZWAgbWV0aG9kIGluIHRoZSB2aXJ0aW8gZHJpdmVyIHN0cnVjdHVyZSwgYW5kIGFsc28gZnJvbSBgdmlydGJsa19yZXNldF9wcmVwYXJlYC4gTm93LCB0aGF0IGByZXNldF9wcmVwYXJlYCBpcyB0aGUgaW50ZXJlc3RpbmcgcGllY2UuLi4gSSBrbm93IHRoZSB2aXJ0aW8gZHJpdmVyIG1vZGVsIGhhcyB0aGUgYC5yZXNldF9wcmVwYXJlYCBjYWxsYmFjayBhcyBwYXJ0IG9mIHRoZSByZXNldCBzZXF1ZW5jZSwgYnV0IEkgd2FudCB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5Tbywgd2hlcmUgaXMgYHJlc2V0X3ByZXBhcmVgIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGJlZm9yZSBJIG1ha2UgYW55IGp1ZGdlbWVudHMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwYCBhbmQgc2NvdXIgdGhlIGNvZGViYXNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGByZXNldF9wcmVwYXJlYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCB1bmNvdmVycy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDk5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0NS42NzY5MjU0ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzIyMTEzMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVzZXRfcHJlcGFyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk1MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jPTY2OD1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBobF9wY2lfZXJyX3Nsb3RfcmVzZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNjc2LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYzo2Nzc6c3RhdGljIHZvaWQgaGxfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jLTY3OC17XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM9NzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhsX3BjaV9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTctXFx0LnJlc3VtZSA9IGhsX3BjaV9lcnJfcmVzdW1lLFxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYzo3MTg6XFx0LnJlc2V0X3ByZXBhcmUgPSBobF9wY2lfcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNzE5LVxcdC5yZXNldF9kb25lID0gaGxfcGNpX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYz04OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaXZwdV9kcnZfcGNpX2VyciA9IHtcXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYzo4OTM6XFx0LnJlc2V0X3ByZXBhcmUgPSBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2IsXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfZHJ2LmMtODk0LVxcdC5yZXNldF9kb25lID0gaXZwdV9wbV9yZXNldF9kb25lX2NiLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYz0zNzI9dm9pZCBpdnB1X3JwbV9wdXQoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzYtXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYzozNzc6dm9pZCBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2Ioc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzgte1xcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaD0zMz1pbnQgaXZwdV9wbV9ydW50aW1lX3Jlc3VtZV9jYihzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X3BtLmgtMzQtXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaDozNTp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaC0zNi12b2lkIGl2cHVfcG1fcmVzZXRfZG9uZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz02Mjc9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBjaV9jaGFubmVsX3N0YXRlX3QgZXJyb3IpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02MzEtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NjMyOnN0YXRpYyB2b2lkIHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjMzLXtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBxYWljX3BjaV9lcnJfaGFuZGxlciA9IHtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02NzMtXFx0LmVycm9yX2RldGVjdGVkID0gcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQsXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Njc0OlxcdC5yZXNldF9wcmVwYXJlID0gcWFpY19wY2lfcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02NzUtXFx0LnJlc2V0X2RvbmUgPSBxYWljX3BjaV9yZXNldF9kb25lLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM9NzIxPXN0YXRpYyBpbnQgcWFpY19wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTczNC1cXHRxYWljX21xdHNfY2hfc3RvcF90aW1lcihxZGV2LVxcdTAwM2VtcXRzX2NoKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYzo3MzU6XFx0cWFpY19wY2lfcmVzZXRfcHJlcGFyZShxZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy03MzYtXFx0cGNpX3NhdmVfc3RhdGUocWRldi1cXHUwMDNlcGRldik7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjQwPXN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0NS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjQ2OnN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2NDcte1xcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTY3Nz1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JsayA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2OTAtI2VuZGlmXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY5MTpcXHQucmVzZXRfcHJlcGFyZVxcdFxcdFxcdD0gdmlydGJsa19yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2OTItXFx0LnJlc2V0X2RvbmVcXHRcXHRcXHQ9IHZpcnRibGtfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9MTUwOT1zdGF0aWMgdm9pZCBtaGlfcGNpX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE0LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTUxNTpzdGF0aWMgdm9pZCBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE2LXtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9MTYxNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtaGlfcGNpX2Vycl9oYW5kbGVyID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjE5LVxcdC5yZXN1bWUgPSBtaGlfcGNpX2lvX3Jlc3VtZSxcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjE2MjA6XFx0LnJlc2V0X3ByZXBhcmUgPSBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjIxLVxcdC5yZXNldF9kb25lID0gbWhpX3BjaV9yZXNldF9kb25lLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9OTU9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYz0xNjg4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhwcmVfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkwLVxcdC5zbG90X3Jlc2V0XFx0XFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9ocHJlL2hwcmVfbWFpbi5jOjE2OTE6XFx0LnJlc2V0X3ByZXBhcmVcXHRcXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkyLVxcdC5yZXNldF9kb25lXFx0XFx0PSBoaXNpX3FtX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01OTc9c3RhdGljIHZvaWQgcW1fZGV2X2RiX2N0cmwoc3RydWN0IGhpc2lfcW0gKnFtLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTYwNy1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo2MDg6c3RhdGljIGludCBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHN0cnVjdCBoaXNpX3FtICpxbSlcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy02MDkte1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9MTE5Nj1zdGF0aWMgdm9pZCBxbV9yZXNldF9mdW5jdGlvbihzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy0xMjAzLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjEyMDQ6XFx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtMTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NTI1PXN0YXRpYyB2b2lkIHFtX2Rldl9lY2NfbWJpdF9oYW5kbGUoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU0Ni1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NTQ3OnN0YXRpYyBpbnQgcW1fdmZfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0sXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU0OC1cXHRcXHRcXHQgICAgICAgZW51bSBxbV9zdG9wX3JlYXNvbiBzdG9wX3JlYXNvbilcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ1Nzc9c3RhdGljIGludCBxbV90cnlfc3RvcF92ZnMoc3RydWN0IGhpc2lfcW0gKnFtLCBlbnVtIHFtX2lmY19jbWQgY21kLFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU5MS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ1OTI6XFx0XFx0cmV0ID0gcW1fdmZfcmVzZXRfcHJlcGFyZShxbSwgc3RvcF9yZWFzb24pO1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTktXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYwMDpzdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYwMS17XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjEwLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2MTE6XFx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYxMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NjQ5PXN0YXRpYyBpbnQgcW1fbWFzdGVyX29vb19jaGVjayhzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjY0LVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2NjU6c3RhdGljIGludCBxbV9zb2Z0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtKVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ2NjYte1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDczMj1zdGF0aWMgaW50IHFtX3NvZnRfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDczNS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NzM2OlxcdHJldCA9IHFtX3NvZnRfcmVzZXRfcHJlcGFyZShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDczNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDk1Mj1zdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDk1OC1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0OTU5OlxcdHJldCA9IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDk2MC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01MDE2PUVYUE9SVF9TWU1CT0xfR1BMKGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQpO1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMTctXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAxODp2b2lkIGhpc2lfcW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDE5LXtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMzQtXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAzNTpcXHRyZXQgPSBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHFtKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDM2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwNzMtfVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjUwNzQ6RVhQT1JUX1NZTUJPTF9HUEwoaGlzaV9xbV9yZXNldF9wcmVwYXJlKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDc1LVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NTIzNj1zdGF0aWMgdm9pZCBxbV9wZl9yZXNldF92Zl9wcmVwYXJlKHN0cnVjdCBoaXNpX3FtICpxbSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUyNDItXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTI0MzpcXHRyZXQgPSBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHFtKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MjQ0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM9MTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBzZWNfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vc2VjMi9zZWNfbWFpbi5jLTE1MDgtXFx0LnNsb3RfcmVzZXRcXHQ9IGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYzoxNTA5OlxcdC5yZXNldF9wcmVwYXJlXFx0PSBoaXNpX3FtX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYy0xNTEwLVxcdC5yZXNldF9kb25lXFx0PSBoaXNpX3FtX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM9MTYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBoaXNpX3ppcF9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYy0xNjE3LVxcdC5zbG90X3Jlc2V0XFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYzoxNjE4OlxcdC5yZXNldF9wcmVwYXJlXFx0PSBoaXNpX3FtX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3ppcC96aXBfbWFpbi5jLTE2MTktXFx0LnJlc2V0X2RvbmVcXHQ9IGhpc2lfcW1fcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz0xOD1zdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmRldmljZV9zcmlvdl93cTtcXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMTktXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjIwOnN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IHJlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz03Mj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBhZGZfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtOTAtXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjkxOlxcdHJldHVybiByZXNldF9wcmVwYXJlKHBkZXYpO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy05Mi19XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9MjQ5PXN0YXRpYyB2b2lkIGFkZl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjU0LVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTU6c3RhdGljIHZvaWQgYWRmX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1Ni17XFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjI1NzpcXHRyZXNldF9wcmVwYXJlKHBkZXYpO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNTgtfVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jPTI2NT1jb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGFkZl9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNjgtXFx0LnJlc3VtZSA9IGFkZl9yZXN1bWUsXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjI2OTpcXHQucmVzZXRfcHJlcGFyZSA9IGFkZl9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNzAtXFx0LnJlc2V0X2RvbmUgPSBhZGZfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jPTk0Mj1zdGF0aWMgdm9pZCBpZHhkX2RldmljZV9jb25maWdfcmVzdG9yZShzdHJ1Y3QgaWR4ZF9kZXZpY2UgKmlkeGQsXFxuLS1cXG5kcml2ZXJzL2RtYS9pZHhkL2luaXQuYy0xMDIwLVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jOjEwMjE6c3RhdGljIHZvaWQgaWR4ZF9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM9MTEyNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpZHhkX2Vycm9yX2hhbmRsZXIgPSB7XFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM6MTEyNzpcXHQucmVzZXRfcHJlcGFyZVxcdD0gaWR4ZF9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jLTExMjgtXFx0LnJlc2V0X2RvbmVcXHQ9IGlkeGRfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYz01MDI4PWludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTUwODYtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjUwODc6XFx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTA4OC1cXHQvKiBJZiByZXNldCBoYW5kbGVyIG5vdCBpbXBsZW1lbnRlZCwgY29udGludWU7IG90aGVyd2lzZSByZXR1cm4gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jPTE0OD1pbnQgYW1kZ3B1X3Jlc2V0X2RvX3hnbWlfcmVzZXRfb25faW5pdChcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2MC1cXHRcXHRcXHRcXHRyZXNldF9saXN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYzoxNjE6XFx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYy0xNjItXFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYz0yMDQ9aW50IGFtZGdwdV9yZXNldF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmMtMjI3LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jOjIyODppbnQgYW1kZ3B1X3Jlc2V0X3ByZXBhcmVfaHdjb250ZXh0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTIyOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2NvbnRleHQgKnJlc2V0X2NvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaD0xNDY9aW50IGFtZGdwdV9yZXNldF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNDctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg6MTQ4OmludCBhbWRncHVfcmVzZXRfcHJlcGFyZV9od2NvbnRleHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmgtMTQ5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaD0xNTE9aW50IGFtZGdwdV9yZXNldF9wZXJmb3JtX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmgtMTUzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oOjE1NDppbnQgYW1kZ3B1X3Jlc2V0X3ByZXBhcmVfZW52KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuYz0yNj1ib29sIGludGVsX2Rpc3BsYXlfcmVzZXRfdGVzdChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMxLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jOjMyOnZvaWQgaW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMzLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5oPTE0PWJvb2wgaW50ZWxfZGlzcGxheV9yZXNldF90ZXN0KHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaDoxNTp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmgtMTYtdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSwgYm9vbCB0ZXN0X29ubHkpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yOTUyPXN0YXRpYyBpbnQgZXhlY2xpc3RzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI5NjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyOTY1OnN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI5NjYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTM0MzctXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzozNDM4OlxcdGVuZ2luZS1cXHUwMDNlcmVzZXQucHJlcGFyZSA9IGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQzOS1cXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnJld2luZCA9IGV4ZWNsaXN0c19yZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jPTE2OT1zdGF0aWMgdm9pZCBndF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTItXFx0LyogRm9yIEd1QyBtb2RlLCBlbnN1cmUgc3VibWlzc2lvbiBpcyBkaXNhYmxlZCBiZWZvcmUgc3RvcHBpbmcgcmluZyAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6MTkzOlxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTUyMT1zdGF0aWMgaW50IF9fZ2VuMTFfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy01NjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo1NjI6c3RhdGljIGludCBnZW44X2VuZ2luZV9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2My17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTYxMD1zdGF0aWMgaW50IGdlbjhfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy02MjItXFx0Zm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGd0LCBlbmdpbmVfbWFzaywgdG1wKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo2MjM6XFx0XFx0cmV0ID0gZ2VuOF9lbmdpbmVfcmVzZXRfcHJlcGFyZShlbmdpbmUpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtNjI0LVxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgIXJlc2V0X25vbl9yZWFkeSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9ODEzPWludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODI5LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODMwOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTg0ND1zdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODc0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODc1OnN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d0ICpndClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg3Ni17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4NS1cXHQgKiBGb3IgR3VDIG1vZGUgd2l0aCBzdWJtaXNzaW9uIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBHdUMgaXMgbm90XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo4ODY6XFx0ICogc2FuaXRpemVkLCBkbyB0aGF0IGFmdGVyIGVuZ2luZSByZXNldC4gcmVzZXRfcHJlcGFyZSgpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04ODctXFx0ICogaXMgZm9sbG93ZWQgYnkgZW5naW5lIHJlc2V0IHdoaWNoIGluIHRoaXMgbW9kZSByZXF1aXJlcyBHdUMgdG9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODkwLVxcdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKFxcdTAwMjZndC1cXHUwMDNldWMpKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODkxOlxcdFxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5NS1cXHRcXHRcXHRhd2FrZSB8PSBlbmdpbmUtXFx1MDAzZW1hc2s7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo4OTY6XFx0XFx0cmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTk2OT1zdGF0aWMgdm9pZCBfX2ludGVsX2d0X3NldF93ZWRnZWQoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtOTg1LVxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6OTg2OlxcdGF3YWtlID0gcmVzZXRfcHJlcGFyZShndCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy05ODctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTEyMDU9dm9pZCBpbnRlbF9ndF9yZXNldChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjMzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTIzNDpcXHRhd2FrZSA9IHJlc2V0X3ByZXBhcmUoZ3QpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTIzNS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTI1OC1cXHRpZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oXFx1MDAyNmd0LVxcdTAwM2V1YykpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjU5OlxcdFxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjYwLVxcdC8qXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTEzMzE9aW50IF9faW50ZWxfZW5naW5lX3Jlc2V0X2JoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMzQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTM0NTpcXHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTM0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTQwND1zdGF0aWMgdm9pZCBpbnRlbF9ndF9yZXNldF9nbG9iYWwoc3RydWN0IGludGVsX2d0ICpndCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTQ0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjE0NDM6XFx0XFx0XFx0aW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTQ0NC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYz0zMTQ9c3RhdGljIHZvaWQgeGNzX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTM0MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYzozNDE6c3RhdGljIHZvaWQgcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jPTExNTQ9c3RhdGljIHZvaWQgc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTExNjUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM6MTE2NjpcXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnByZXBhcmUgPSByZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTExNjctXFx0ZW5naW5lLVxcdTAwM2VyZXNldC5yZXdpbmQgPSByZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jPTI2Mj1zdGF0aWMgdm9pZCBtb2NrX3JlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMtMjgzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmM6Mjg0OnN0YXRpYyB2b2lkIG1vY2tfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYy0yODUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYz0zNDE9c3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jOjM3MzpcXHRlbmdpbmUtXFx1MDAzZWJhc2UucmVzZXQucHJlcGFyZSA9IG1vY2tfcmVzZXRfcHJlcGFyZTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3NC1cXHRlbmdpbmUtXFx1MDAzZWJhc2UucmVzZXQucmV3aW5kID0gbW9ja19yZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jPTI2MD1zdGF0aWMgaW50IGlndF9hdG9taWNfcmVzZXQodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0yODAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYzoyODE6XFx0XFx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTI4Mi1cXHRcXHRwLVxcdTAwM2Vjcml0aWNhbF9zZWN0aW9uX2JlZ2luKCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaD01MzM9dm9pZCBpbnRlbF9ndWNfY29udGV4dF9iYW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgtNTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oOjUzNTp2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzYtdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGludGVsX2VuZ2luZV9tYXNrX3Qgc3RhbGxlZCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTEwNzc9c3RhdGljIHZvaWQgc2NydWJfZ3VjX2Rlc2NfZm9yX291dHN0YW5kaW5nX2cyaChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTExMDQtXFx0XFx0ICogdG8gYmUgdmlzaWJsZSB0byBhbGwgY2FsbGVycyB3aG8gc2V0IHRoZSBiZWxvdyBmbGFncyAoc2VlIGFib3ZlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYzoxMTA1OlxcdFxcdCAqIGZsdXNoIGFuZCBmbHVzaGVzIGluIHJlc2V0X3ByZXBhcmUpLiBJZiBzdWJtaXNzaW9uX2Rpc2FibGVkKClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTExMDYtXFx0XFx0ICogaXMgc2V0LCB0aGUgY2FsbGVyIHNob3VsZG4ndCBzZXQgdGhlc2UgZmxhZ3MuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTEzOTE9c3RhdGljIHZvaWQgZ3VjX2NhbmNlbF9idXN5bmVzc193b3JrZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI1LVxcdCAqIEFuZCBub3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYSByZXNldCBvY2N1cnJpbmcgZHVyaW5nIGRyaXZlciB1bmxvYWRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE0MjY6XFx0ICogKHdlZGdlZF9vbl9maW5pKSwgc2tpcHBpbmcgdGhlIGNhbmNlbCBpbiByZXNldF9wcmVwYXJlL3Jlc2V0X2ZpbmkgKHdoZW4gdGhlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI3LVxcdCAqIHJlc2V0IGZsYWcvbXV0ZXggYXJlIHNldCkgaXMgZmluZSBiZWNhdXNlIHRoZXJlIGlzIGFub3RoZXIgZXhwbGljaXQgY2FuY2VsIGluXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTE3MjM9c3RhdGljIHZvaWQgZ3VjX2ZsdXNoX2Rlc3Ryb3llZF9jb250ZXh0cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTcyNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE3MjU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE3MjYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xNzc3PXN0YXRpYyB2b2lkIGd1Y19yZXNldF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBoZWFkLCBib29sIHNjcnViKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xODAwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM6MTgwMTpzdGF0aWMgdm9pZCBndWNfZW5naW5lX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTgwMi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTQ1MzY9c3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU0OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjQ1NDk6XFx0ZW5naW5lLVxcdTAwM2VyZXNldC5wcmVwYXJlID0gZ3VjX2VuZ2luZV9yZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU1MC1cXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnJld2luZCA9IGd1Y19yZXdpbmRfbm9wO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYz01Njk9c3RhdGljIHZvaWQgX191Y19maW5pX2h3KHN0cnVjdCBpbnRlbF91YyAqdWMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4Mi0vKipcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjU4MzogKiBpbnRlbF91Y19yZXNldF9wcmVwYXJlIC0gUHJlcGFyZSBmb3IgcmVzZXRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4NC0gKiBAdWM6IHRoZSBpbnRlbF91YyBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NTg4OnZvaWQgaW50ZWxfdWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg5LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNjAyLVxcdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjYwMzpcXHRcXHRpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKGd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy02MDQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oPTQ3PXZvaWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmg6NDg6dm9pZCBpbnRlbF91Y19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgtNDktdm9pZCBpbnRlbF91Y19yZXNldChzdHJ1Y3QgaW50ZWxfdWMgKnVjLCBpbnRlbF9lbmdpbmVfbWFza190IHN0YWxsZWQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmM9OTgyPXZvaWQgeGVfZ3RfcmVzZXRfYXN5bmMoc3RydWN0IHhlX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk4OS1cXHQvKiBEb24ndCBkbyBhIHJlc2V0IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jOjk5MDpcXHRpZiAoIXhlX2ZhdWx0X2d0X3Jlc2V0KCkgXFx1MDAyNlxcdTAwMjYgeGVfdWNfcmVzZXRfcHJlcGFyZShcXHUwMDI2Z3QtXFx1MDAzZXVjKSlcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYy05OTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jPTE3MDM9dm9pZCB4ZV9ndWNfc2FuaXRpemUoc3RydWN0IHhlX2d1YyAqZ3VjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE3MDktXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jOjE3MTA6aW50IHhlX2d1Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcxMS17XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jOjE3MTI6XFx0cmV0dXJuIHhlX2d1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xNzEzLX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYz0xODIwPXZvaWQgeGVfZ3VjX2RlY2xhcmVfd2VkZ2VkKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xODIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYzoxODI0OlxcdHhlX2d1Y19yZXNldF9wcmVwYXJlKGd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE4MjUtXFx0eGVfZ3VjX2N0X3N0b3AoXFx1MDAyNmd1Yy1cXHUwMDNlY3QpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oPTU3PWludCB4ZV9ndWNfcHJpbnRfaW5mbyhzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oOjU4OmludCB4ZV9ndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuaC01OS12b2lkIHhlX2d1Y19yZXNldF93YWl0KHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6NTI6c3RhdGljIGludCBndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYz0yNDQ9c3RhdGljIHZvaWQgZ3VjX3N1Ym1pdF9maW5pKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYyLVxcdHhlX2d1Y19jdF9zdG9wKFxcdTAwMjZndWMtXFx1MDAzZWN0KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2MzpcXHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2NC1cXHR4ZV9ndWNfc29mdHJlc2V0KGd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jPTEzMjE9dm9pZCB4ZV9ndWNfc3VibWl0X3dlZGdlKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMTM0My1cXHRcXHQvKiBGb3JjZWZ1bGx5IGtpbGwgYW55IHJlbWFpbmluZyBleGVjIHF1ZXVlcywgc2lnbmFsIGZlbmNlcyAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MTM0NDpcXHRcXHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTEzNDUtXFx0XFx0eGVfZ3VjX3N1Ym1pdF9zdG9wKGd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jPTI1NjE9c3RhdGljIHZvaWQgZ3VjX2V4ZWNfcXVldWVfc3RvcChzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCB4ZV9leGVjX3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjEyLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MjYxMzpzdGF0aWMgaW50IGd1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjE0LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYzMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2MzE6aW50IHhlX2d1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYzOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2Mzk6XFx0cmV0dXJuIGd1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjY0MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oPTE3PXZvaWQgeGVfZ3VjX3N1Ym1pdF9kaXNhYmxlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuaC0xOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oOjE5OmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oLTIwLXZvaWQgeGVfZ3VjX3N1Ym1pdF9yZXNldF93YWl0KHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0xODI9aW50IHhlX3VjX2xvYWRfaHcoc3RydWN0IHhlX3VjICp1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTIzNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYzoyMzY6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1YylcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjQxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jOjI0MjpcXHRyZXR1cm4geGVfZ3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNnVjLVxcdTAwM2VndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTI0My19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0yNjk9c3RhdGljIHZvaWQgdWNfcmVzZXRfd2FpdChzdHJ1Y3QgeGVfdWMgKnVjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjc1LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jOjI3NjpcXHRyZXQgPSB4ZV91Y19yZXNldF9wcmVwYXJlKHVjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oPTE0PWludCB4ZV91Y19sb2FkX2h3KHN0cnVjdCB4ZV91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oOjE1OmludCB4ZV91Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oLTE2LXZvaWQgeGVfdWNfcnVudGltZV9yZXN1bWUoc3RydWN0IHhlX3VjICp1Yyk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYz02OTk9c3RhdGljIHZvaWQgaXB1Nl9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtNzIxLVxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jOjcyMjpzdGF0aWMgdm9pZCBpcHU2X3BjaV9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jLTcyMy17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYz04MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgcGNpX2Vycl9oYW5kbGVycyA9IHtcXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYzo4MTc6XFx0LnJlc2V0X3ByZXBhcmUgPSBpcHU2X3BjaV9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jLTgxOC1cXHQucmVzZXRfZG9uZSA9IGlwdTZfcGNpX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jPTYzNz1zdGF0aWMgdm9pZCBwZHNjX2NoZWNrX3BjaV9oZWFsdGgoc3RydWN0IHBkc2MgKnBkc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jOjY1MTpcXHQvKiBwcmV2ZW50IGRlYWRsb2NrIGJldHdlZW4gcGRzY19yZXNldF9wcmVwYXJlIGFuZCBwZHNjX2hlYWx0aF90aHJlYWQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1Mi1cXHRxdWV1ZV93b3JrKHBkc2MtXFx1MDAzZXdxLCBcXHUwMDI2cGRzYy1cXHUwMDNlcGNpX3Jlc2V0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYz00ODU9c3RhdGljIHZvaWQgcGRzY19yZXN0YXJ0X2hlYWx0aF90aHJlYWQoc3RydWN0IHBkc2MgKnBkc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jOjQ5ODpzdGF0aWMgdm9pZCBwZHNjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYy00OTkte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0Ny43NDkxNDI5MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk3MTM1MDQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhlIHZpcnRpbyBzdWJzeXN0ZW06XG5cbioqSW52ZXN0aWdhdGluZyB2aXJ0aW8gUmVzZXQgUHJlcGFyYXRpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSB2aXJ0aW8gZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8ganVzdCBqdW1wIGludG8gdGhlIGBkcml2ZXJzL3ZpcnRpby9gIGRpcmVjdG9yeSDigJMgdGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBhbGwgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEknbGwgbmVlZCB0byB1c2UgYGdyZXBgIGhlcmUsIGVmZmljaWVudGx5LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYSBmZXcgdmFyaWF0aW9ucyB0byBjb3ZlciBteSBiYXNlcy4gRmlyc3QsIEknbGwgc2VhcmNoIGZvciBkaXJlY3QgaW52b2NhdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgc28ganVzdCBwbGFpbiBgcmVzZXRfcHJlcGFyZWAuIFRoZW4sIEknbGwgY2hlY2sgZm9yIHJlZmVyZW5jZXMgdGhyb3VnaCB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgdGFyZ2V0aW5nIGAtXHUwMDNlcmVzZXRfcHJlcGFyZWAuIEFuZCBmaW5hbGx5LCBqdXN0IGluIGNhc2UsIEknbGwgYWxzbyB0cnkgYGRydi1cdTAwM2VyZXNldF9wcmVwYXJlYCwgdG8gYmUgZXh0cmEgc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcsIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBjb2Rpbmcgc3R5bGVzIGFjcm9zcyBkaWZmZXJlbnQgZHJpdmVycy4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIHByZXR0eSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2Ygd2hlcmUgYHJlc2V0X3ByZXBhcmVgIGNvbWVzIGludG8gcGxheS4gVGltZSB0byBnZXQgZ3JlcHBpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTgyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6NTAuNzIwNDk1NzU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwNDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldF9wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpby5jPTY5NT1FWFBPUlRfU1lNQk9MX0dQTCh2aXJ0aW9fZGV2aWNlX3Jlc3RvcmUpO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk3LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY5ODppbnQgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk5LXtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTcwMi1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo3MDM6XFx0aWYgKCFkcnYgfHwgIWRydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MDQtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjcxMDpcXHRyZXQgPSBkcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoZGV2KTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzE3LX1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo3MTg6RVhQT1JUX1NZTUJPTF9HUEwodmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTktXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTc3MT1zdGF0aWMgaW50IHZpcnRpb19wY2lfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBpbnQgbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNzk3LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6Nzk4OnN0YXRpYyB2b2lkIHZpcnRpb19wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTc5OS17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgwMi1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgwMzpcXHRyZXQgPSB2aXJ0aW9fZGV2aWNlX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNnZwX2Rldi1cXHUwMDNldmRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MDQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz04MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmlydGlvX3BjaV9lcnJfaGFuZGxlciA9IHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgzNDpcXHQucmVzZXRfcHJlcGFyZSAgPSB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MzUtXFx0LnJlc2V0X2RvbmUgICAgID0gdmlydGlvX3BjaV9yZXNldF9kb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo1MC43Njc4MDU4NDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzY0Njk4MjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTmFtaW5nIENvbnZlbnRpb25zKipcblxuUmlnaHQsIHNvIEknbSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGZyZWV6aW5nL3VuZnJlZXppbmcgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgdmlydGJsa19mcmVlemVfcHJpdmAgYW5kIGl0cyBwb3RlbnRpYWwgY291bnRlcnBhcnRzLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBJJ20gY2FwdHVyaW5nIGFsbCB2YXJpYXRpb25zLiBUaGVyZWZvcmUsIEkgd2FudCB0byBleHBsb3JlIG90aGVyIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEknbGwgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaC4gTGV0J3Mgc2VlLCB3aGF0IGVsc2UgY291bGQgaXQgYmUgY2FsbGVkLi4uXG5cbk9rYXksIEknbSB0aGlua2luZyBvZiBvdGhlciBwb3RlbnRpYWwgY29udmVudGlvbnMgc3VjaCBhcyBgdmlydGJsa19mcmVlemVgIG9yIGB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZWAgYXMgcG9zc2libGUgbmFtaW5nIGFsdGVybmF0aXZlcyBmb3Igc2ltaWxhciBmdW5jdGlvbnMuIFRpbWUgdG8gZ2V0IHRoZSBncmVwIGNvbW1hbmQgcnVubmluZyB0byBzd2VlcCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYHZpcnRpb19kZXZpY2VfZnJlZXplYCBhbmQgYHZpcnRibGtfZnJlZXplYC4gSSBuZWVkIHRvIGNvdmVyIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBhY3Jvc3MgdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTMwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6NTguNDE0NzkwMjI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjIxNDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvLmM9NjEzPXN0YXRpYyBpbnQgdmlydGlvX2RldmljZV9yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldiwgYm9vbCByZXN0b3JlKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjI0LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjYyNTpcXHQvKiBNYXliZSBkcml2ZXIgZmFpbGVkIGJlZm9yZSBmcmVlemUuXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjI2LVxcdCAqIFJlc3RvcmUgdGhlIGZhaWxlZCBzdGF0dXMsIGZvciBkZWJ1Z2dpbmcuICovXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NjktI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3MDppbnQgdmlydGlvX2RldmljZV9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NzEte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjc4LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3OTpcXHRpZiAoZHJ2IFxcdTAwMjZcXHUwMDI2IGRydi1cXHUwMDNlZnJlZXplKSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NjgwOlxcdFxcdHJldCA9IGRydi1cXHUwMDNlZnJlZXplKGRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjgxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY4OC19XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6Njg5OkVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfZnJlZXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02OTAtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jPTExNDM9c3RhdGljIHZvaWQgdmlydGJhbGxvb25fc2h1dGRvd24oc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNDktI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM6MTE1MDpzdGF0aWMgaW50IHZpcnRiYWxsb29uX2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNTEte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYz0xMjExPXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fYmFsbG9vbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjEtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM6MTIyMjpcXHQuZnJlZXplXFx0PVxcdHZpcnRiYWxsb29uX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjMtXFx0LnJlc3RvcmUgPVxcdHZpcnRiYWxsb29uX3Jlc3RvcmUsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYz0zNDc9c3RhdGljIHZvaWQgdmlydGlucHV0X3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jLTM2Ni0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmM6MzY3OnN0YXRpYyBpbnQgdmlydGlucHV0X2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYy0zNjgte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmM9NDA4PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9faW5wdXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYzo0MTY6XFx0LmZyZWV6ZVxcdCAgICAgICAgICAgICA9IHZpcnRpbnB1dF9mcmVlemUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE3LVxcdC5yZXN0b3JlICAgICAgICAgICAgID0gdmlydGlucHV0X3Jlc3RvcmUsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MzA3Nj1zdGF0aWMgdm9pZCB2aXJ0aW9fbWVtX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODctI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzozMDg4OnN0YXRpYyBpbnQgdmlydGlvX21lbV9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODkte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTMxNDA9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19tZW1fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNDgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzozMTQ5OlxcdC5mcmVlemVcXHQ9XFx0dmlydGlvX21lbV9mcmVlemUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNTAtXFx0LnJlc3RvcmUgPVxcdHZpcnRpb19tZW1fcmVzdG9yZSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX21taW9fY29uZmlnX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTU1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU1NjpzdGF0aWMgaW50IHZpcnRpb19tbWlvX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTcte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTktXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYzo1NjA6XFx0cmV0dXJuIHZpcnRpb19kZXZpY2VfZnJlZXplKFxcdTAwMjZ2bV9kZXYtXFx1MDAzZXZkZXYpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTYxLX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2aXJ0aW9fbW1pb19wbV9vcHMgPSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYzo1NzQ6XFx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFModmlydGlvX21taW9fZnJlZXplLCB2aXJ0aW9fbW1pb19yZXN0b3JlKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTc1LX07XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU4NT1jb25zdCBzdHJ1Y3QgY3B1bWFzayAqdnBfZ2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU5OC0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1OTk6c3RhdGljIGludCB2aXJ0aW9fcGNpX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDAte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDQtXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo2MDU6XFx0cmV0ID0gdmlydGlvX2RldmljZV9mcmVlemUoXFx1MDAyNnZwX2Rldi1cXHUwMDNldmRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDYtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTY0Mz1zdGF0aWMgaW50IHZpcnRpb19wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NDQte1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjQ1OlxcdHJldHVybiB2cF9zdXBwb3J0c19wbV9ub19yZXNldChkZXYpID8gMCA6IHZpcnRpb19wY2lfZnJlZXplKGRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NDYtfVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz02NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHZpcnRpb19wY2lfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTUtXFx0LnJlc3VtZSA9IHZpcnRpb19wY2lfcmVzdW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjU2OlxcdC5mcmVlemUgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTY1Ny1cXHQudGhhdyA9IHZpcnRpb19wY2lfcmVzdG9yZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1ODpcXHQucG93ZXJvZmYgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTY1OS1cXHQucmVzdG9yZSA9IHZpcnRpb19wY2lfcmVzdG9yZSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM9MTMzNz1zdGF0aWMgdm9pZCB2aW9ydGNfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xMzQzLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM6MTM0NDpzdGF0aWMgaW50IHZpb3J0Y19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDUte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYz0xNDA0PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fcnRjX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmMtMTQxMC1cXHQucmVtb3ZlID0gdmlvcnRjX3JlbW92ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjE0MTE6XFx0LmZyZWV6ZSA9IHBtX3NsZWVwX3B0cih2aW9ydGNfZnJlZXplKSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTE0MTItXFx0LnJlc3RvcmUgPSBwbV9zbGVlcF9wdHIodmlvcnRjX3Jlc3RvcmUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo1OC40NjEwMTIwMDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ5MjI0ODU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIgRnJlZXplIE9wZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZpcnRpb19ibGtgIGNvZGUsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyB0aGUgd29ya2hvcnNlIGRyaXZlciBmb3IgYmxvY2sgZGV2aWNlcyBpbiB2aXJ0aW8gZW52aXJvbm1lbnRzLiBJdCdzIG9mdGVuIHRoZSByb290IGRpc2sgb3IgaGFuZGxlcyB0aG9zZSBzZWNvbmRhcnkgYmxvY2sgZGV2aWNlcyBpbiBRRU1VL0tWTSBzZXR1cHMuIEknbSBmb2N1c2luZyBvbiB0aGlzIGNoYW5nZSBpbiBgdmlydGJsa19mcmVlemVfcHJpdmAgYW5kIGl0J3MgbWFraW5nIG1lIHRoaW5rLlxuXG5TcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSd2ZSBzd2FwcGVkIG91dCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBmb3IgYGJsa19tcV9xdWllc2NlX3F1ZXVlYC4gSW50ZXJlc3RpbmcuIEkga25vdyB0aGUgZ2VuZXJhbCBpZGVhIGhlcmUgaXMgdG8gZW5zdXJlIG5vIEkvTyBpcyBhY3RpdmUgYmVmb3JlIGRlbGV0aW5nIHRoZSB2aXJ0cXVldWVzIGR1cmluZyB0aGUgZnJlZXplIG9wZXJhdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhleSBmcmVlemUgdGhlIHF1ZXVlLCBxdWllc2NlIGl0LCBhbmQgdGhlbiB1bmZyZWV6ZSBpdC4gU2VlbXMgc3RhbmRhcmQuXG5cbkJ1dCB0aGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMuIFdoYXQncyB0aGUgZnVuZGFtZW50YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3F1aWVzY2VfcXVldWVgPyBJcyB0aGlzIGEgc3VidGxlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgYSBidWcgZml4PyBUaGUgYG5vd2FpdGAgdmVyc2lvbiBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIG5vdCBibG9jaywgYnV0IHdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhhdCBoYXZlIGhlcmU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gTGV0J3MgZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MDEuOTUzMjYzMTY0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ5MjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstbXEuYz0yNTU9RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7XFxuLS1cXG5ibG9jay9ibGstbXEuYy0yNjAtICovXFxuYmxvY2svYmxrLW1xLmM6MjYxOnZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yODg9RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKTtcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTI5OC0gKi9cXG5ibG9jay9ibGstbXEuYzoyOTk6dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG5ibG9jay9ibGstbXEuYy0zMDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowMi4wMDA3NjMwMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQyNTI3NDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCB0aGUgYXVkaWVuY2UgaXMgYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIGJsay1tcS5jOiBUaGUgSGVhcnQgb2YgSU8gUXVldWluZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGxpbmVzIDI2MCB0byAzMTAgb2YgYGJsb2NrL2Jsay1tcS5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvcmUgb2YgdGhpcyBtdWx0aS1xdWV1ZSBibG9jayBsYXllciBpcyB3b3JraW5nLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgcmVxdWVzdHMgYXJlIGhhbmRsZWQgd2l0aGluIGEgcXVldWUgY29udGV4dC4gSSdtIGxvb2tpbmcgZm9yIHdoZXJlIHJlcXVlc3RzIGFyZSBlbnF1ZXVlZCwgd2hlcmUgdGhleSdyZSBkZXF1ZXVlZCwgaG93IHRoZWlyIGxpZmVjeWNsZSBpcyBtYW5hZ2VkLiBJ4oCZbSB0aGlua2luZyB0aGlzIHNlY3Rpb24gd2lsbCBjb3ZlciB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGxvZ2ljIGJlaGluZCByZXF1ZXN0IHN1Ym1pc3Npb24gYW5kIGNvbXBsZXRpb24uIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgaWxsdW1pbmF0ZSBhbnkgc3VidGxldGllcyBpbiBob3cgYmxrLW1xIGludGVyYWN0cyB3aXRoIHRoZSBpbmRpdmlkdWFsIGhhcmR3YXJlIHF1ZXVlcy4gVWx0aW1hdGVseSwgSSdtIGFpbWluZyB0byBidWlsZCBhIGRlZXBlciBtZW50YWwgbW9kZWwgb2YgaG93IGRhdGEgbW92ZXMgZnJvbSB0aGUgZmlsZXN5c3RlbSBkb3duIHRvIHRoZSBzdG9yYWdlIGRldmljZSB3aXRoIGJsay1tcS4gSSdsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGUgY29kZSBoYW5kbGVzIGRpZmZlcmVudCByZXF1ZXN0IHByaW9yaXRpZXMgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBxdWV1ZXMgdG8gZW5zdXJlIG9wdGltYWwgcGFyYWxsZWxpc20gYW5kIG1pbmltYWwgbGF0ZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowNC40MjYwNDA2NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImJsb2NrL2Jsay1tcS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2MDpcXHQgKi9cXG4gMjYxOlxcdHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbiAyNjI6XFx0e1xcbiAyNjM6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4gMjY2OlxcdFxcdGlmICghcS1cXHUwMDNlcXVpZXNjZV9kZXB0aCsrKVxcbiAyNjc6XFx0XFx0XFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xcbiAyNjg6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cS1cXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xcbiAyNjk6XFx0fVxcbiAyNzA6XFx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0LyoqXFxuIDI3MzpcXHQgKiBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAtIHdhaXQgdW50aWwgaW4tcHJvZ3Jlc3MgcXVpZXNjZSBpcyBkb25lXFxuIDI3NDpcXHQgKiBAc2V0OiB0YWdfc2V0IHRvIHdhaXQgb25cXG4gMjc1OlxcdCAqXFxuIDI3NjpcXHQgKiBOb3RlOiBpdCBpcyBkcml2ZXIncyByZXNwb25zaWJpbGl0eSBmb3IgbWFraW5nIHN1cmUgdGhhdCBxdWllc2NlIGhhc1xcbiAyNzc6XFx0ICogYmVlbiBzdGFydGVkIG9uIG9yIG1vcmUgb2YgdGhlIHJlcXVlc3RfcXVldWVzIG9mIHRoZSB0YWdfc2V0LiAgVGhpc1xcbiAyNzg6XFx0ICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcXG4gMjc5OlxcdCAqIHRoZSBxdWllc2NlIGZsYWcgc2V0IHVzaW5nIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdC5cXG4gMjgwOlxcdCAqL1xcbiAyODE6XFx0dm9pZCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuIDI4MjpcXHR7XFxuIDI4MzpcXHRcXHRpZiAoc2V0LVxcdTAwM2VmbGFncyBcXHUwMDI2IEJMS19NUV9GX0JMT0NLSU5HKVxcbiAyODQ6XFx0XFx0XFx0c3luY2hyb25pemVfc3JjdShzZXQtXFx1MDAzZXNyY3UpO1xcbiAyODU6XFx0XFx0ZWxzZVxcbiAyODY6XFx0XFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuIDI4NzpcXHR9XFxuIDI4ODpcXHRFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUpO1xcbiAyODk6XFx0XFxuIDI5MDpcXHQvKipcXG4gMjkxOlxcdCAqIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgLSB3YWl0IHVudGlsIGFsbCBvbmdvaW5nIGRpc3BhdGNoZXMgaGF2ZSBmaW5pc2hlZFxcbiAyOTI6XFx0ICogQHE6IHJlcXVlc3QgcXVldWUuXFxuIDI5MzpcXHQgKlxcbiAyOTQ6XFx0ICogTm90ZTogdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcmV2ZW50IHRoYXQgdGhlIHN0cnVjdCByZXF1ZXN0IGVuZF9pbygpXFxuIDI5NTpcXHQgKiBjYWxsYmFjayBmdW5jdGlvbiBpcyBpbnZva2VkLiBPbmNlIHRoaXMgZnVuY3Rpb24gaXMgcmV0dXJuZWQsIHdlIG1ha2VcXG4gMjk2OlxcdCAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcXG4gMjk3OlxcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKS5cXG4gMjk4OlxcdCAqL1xcbiAyOTk6XFx0dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG4gMzAwOlxcdHtcXG4gMzAxOlxcdFxcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcXG4gMzAyOlxcdFxcdC8qIG5vdGhpbmcgdG8gd2FpdCBmb3Igbm9uLW1xIHF1ZXVlcyAqL1xcbiAzMDM6XFx0XFx0aWYgKHF1ZXVlX2lzX21xKHEpKVxcbiAzMDQ6XFx0XFx0XFx0YmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKHEtXFx1MDAzZXRhZ19zZXQpO1xcbiAzMDU6XFx0fVxcbiAzMDY6XFx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xcbiAzMDc6XFx0XFxuIDMwODpcXHQvKlxcbiAzMDk6XFx0ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIC0gY291bnRlcnBhcnQgb2YgYmxrX21xX3F1aWVzY2VfcXVldWUoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowNC40MjYyOTEwMzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM2OTExMjEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQnVnIEZpeDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIGJ1ZyByZWxhdGVkIHRvIHRoZSBkZWxldGlvbiBvZiB2aXJ0cXVldWVzIGluIHRoZSBgdmlydGJsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHN1c3BlbmQsIGhpYmVybmF0ZSwgb3IgZGV2aWNlIHJlc2V0LiBUaGUga2V5IGlzIGluIGhvdyBgYmxrX21xX3F1aWVzY2VfcXVldWVgIGludGVyYWN0cyB3aXRoIHRoZSBSQ1UgbWVjaGFuaXNtLiBCZWZvcmUsIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIHdhcyB1c2VkLCB3aGljaCBkaWRuJ3Qgd2FpdCBmb3IgdGhlIFJDVSBncmFjZSBwZXJpb2QgdmlhIGBzeW5jaHJvbml6ZV9yY3VgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG9uZ29pbmcgZGlzcGF0Y2hlcyBhY2Nlc3NpbmcgZGVsZXRlZCB2aXJ0cXVldWVzLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLCBxdWl0ZSBuYXN0eS4gVGhpcyBjb2RlIHdhcyBjaGFuZ2VkIHRvIGFkZHJlc3MgdGhhdCwgYW5kIG5vdyBjYWxscyBgYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAuXG5cbk15IG1pbmQgaXMgbm93IHJhY2luZyB0b3dhcmRzIHJlYWNoYWJpbGl0eSBhbmQgZnV6emFiaWxpdHkuIExldCdzIHNlZS4uLiBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0IHVzZXMgYGJsa19tcV9mcmVlemVfcXVldWVgLCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV91bmZyZWV6ZV9xdWV1ZWAuIE9rYXksIHdoZW4gaXMgYHZpcnRibGtfZnJlZXplX3ByaXZgIGNhbGxlZD8gVGhlcmUgYXJlIHR3byBrZXkgZW50cnkgcG9pbnRzOiBgdmlydGJsa19mcmVlemVgIGFuZCBgdmlydGJsa19yZXNldF9wcmVwYXJlYC4gTm93LCBgdmlydGJsa19mcmVlemVgIGdldHMgY2FsbGVkIGR1cmluZyBQTSBvcGVyYXRpb25zIGxpa2Ugc2xlZXAsIGhpYmVybmF0ZSwgc3VzcGVuZCwgdHJpZ2dlcmVkIHZpYSBgL3N5cy9wb3dlci9zdGF0ZWAuIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGlzIHJlbGF0ZWQgdG8gdmlydGlvIHJlc2V0cyBvciBvdGhlciByZXNldCBzY2VuYXJpb3MsIGxpa2UgUENJIG9yIFNSLUlPVi5cblxuVGhlIGJpZyBxdWVzdGlvbiBub3c6IGNhbiB0aGVzZSB0cmlnZ2VycyBiZSByZWFjaGVkIGluIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyPyBJdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2VzIGV4ZWN1dGUgcG93ZXIgbWFuYWdlbWVudC1yZWxhdGVkIHN5c2NhbGxzIGFuZCBzeXNmcyB3cml0ZXMuIEl0IGRvZXMgdGhpbmdzIGxpa2UgYHN5el9tb3VudF9pbWFnZWAsIHdyaXRlIHRvIGAvc3lzL3Bvd2VyL3N0YXRlYCwgYW5kIGNhbiBkbyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMsIGlvY3RscywgdmlydGlvIHJlc2V0cy4gVGhhdCdzIGdvb2QhXG5cbk5leHQsIGlzIGB2aXJ0aW9fYmxrYCByZWFjaGFibGU/IFllcywgdGhhdCdzIHRoZSBzdGFuZGFyZCB2aXJ0aW8gYmxvY2sgZHJpdmVyIChgQ09ORklHX1ZJUlRJT19CTEtgKS4gVGhhdCBzaG91bGQgYmUgcHJlc2VudCBpbiBtb3N0IHN5c3RlbXMgYW5kIHRlc3QgY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoYXQgYENPTkZJR19QTV9TTEVFUGAgaXMgZW5hYmxlZCwgd2hpY2ggaXQgc2VlbXMgdG8gYmUgaW4gbW9zdCBrZXJuZWxzLiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgVklSVElPX0JMS2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLiBJIG5lZWQgdG8ga25vdyBhbGwgdGhlIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZC4gSXQgc2VlbXMgbGlrZSBpdCBpcyBhIHZlcnkgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjYxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTAuNzk1NDA1NTQ4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjIxNDIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwNi1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA3OmNvbmZpZyBWSVJUSU9fQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwOC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTAuODQ3NjI1Mjk3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNDMwNjE3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEJsb2NrIERyaXZlciBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4gSSByZWNhbGwgc29tZXRoaW5nIHNwZWNpZmljLCBhcm91bmQgbGluZSAzMDcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlcywgcGFydGljdWxhcmx5IHdoYXRldmVyJ3MgYmVpbmcgc2V0IHVwIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGJsb2NrIHN1YnN5c3RlbS4gSSB3YW50IHRvIHNlZSBpZiBhbnkgZmxhZ3Mgb3Igc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkIHRoYXQgY291bGQgYWZmZWN0IHJlY2VudCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgaXNzdWVzIEnigJl2ZSBiZWVuIGxvb2tpbmcgYXQuIFRoaXMgc3BlY2lmaWMgbG9jYXRpb24gKnNob3VsZCogaGF2ZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgSSdtIGFmdGVyLCBhbmQgaG9wZWZ1bGx5LCBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgSSBuZWVkIHRvIG1vdmUgZm9yd2FyZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzQ4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTQuOTkwNjg5NTU0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDU6XFx0XFxuIDMwNjpcXHRcXG4gMzA3OlxcdGNvbmZpZyBWSVJUSU9fQkxLXFxuIDMwODpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJsb2NrIGRyaXZlclxcXCJcXG4gMzA5OlxcdFxcdGRlcGVuZHMgb24gVklSVElPXFxuIDMxMDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAzMTE6XFx0XFx0aGVscFxcbiAzMTI6XFx0XFx0ICBUaGlzIGlzIHRoZSB2aXJ0dWFsIGJsb2NrIGRyaXZlciBmb3IgdmlydGlvLiAgSXQgY2FuIGJlIHVzZWQgd2l0aFxcbiAzMTM6XFx0ICAgICAgICAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS4gIFNheSBZIG9yIE0uXFxuIDMxNDpcXHRcXG4gMzE1OlxcdGNvbmZpZyBCTEtfREVWX1JCRFxcbiAzMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJhZG9zIGJsb2NrIGRldmljZSAoUkJEKVxcXCJcXG4gMzE3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbiAzMTg6XFx0XFx0c2VsZWN0IENFUEhfTElCXFxuIDMxOTpcXHRcXHRoZWxwXFxuIDMyMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgaW5jbHVkZSB0aGUgUmFkb3MgYmxvY2sgZGV2aWNlLCB3aGljaCBzdHJpcGVzXFxuIDMyMTpcXHRcXHQgIGEgYmxvY2sgZGV2aWNlIG92ZXIgb2JqZWN0cyBzdG9yZWQgaW4gdGhlIENlcGggZGlzdHJpYnV0ZWQgb2JqZWN0XFxuIDMyMjpcXHRcXHQgIHN0b3JlLlxcbiAzMjM6XFx0XFxuIDMyNDpcXHRcXHQgIE1vcmUgaW5mb3JtYXRpb24gYXQgaHR0cDovL2NlcGgubmV3ZHJlYW0ubmV0Ly5cXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMjc6XFx0XFxuIDMyODpcXHRjb25maWcgQkxLX0RFVl9VQkxLXFxuIDMyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTQuOTkwNzg0NDM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NzQzMDQ4NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBhdGNoIEFwcGxpY2FiaWxpdHkgdG8gRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyByZWxldmFudCBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgY2hlY2tpbmcgU2VjdGlvbiAyIGFuZCBTZWN0aW9uIDMgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24uICBTZWN0aW9uIDIgbGF5cyBvdXQgKm5lZ2F0aXZlKiBjcml0ZXJpYSDigJMgc2NlbmFyaW9zIHdoZXJlIGZ1enppbmcgaXNuJ3Qgd29ydGh3aGlsZS4gIEl0IGhpZ2hsaWdodHMgdGhpbmdzIGxpa2Ugbm9uLWtlcm5lbCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgaW5hY2Nlc3NpYmxlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGtleSBoZXJlIGlzIHRvIHZlcmlmeSB3aGV0aGVyIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBmYWxscyBpbnRvIGFueSBvZiB0aG9zZSBcInVucmVhY2hhYmxlXCIgY2F0ZWdvcmllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXTigJlzIGRlZmluaXRlbHkgKm5vdCogY2FsbGVkIGJ5IGB2aXJ0YmxrX3JlbW92ZWAsIHNvIEkgY2FuIGlnbm9yZSBpdHMgb3duIGxvZ2ljLiBJbnN0ZWFkLCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkIGJ5IGB2aXJ0YmxrX2ZyZWV6ZWAgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLlxuXG5BbHJpZ2h0LCBhIGRlZXBlciBkaXZlOiBgdmlydGJsa19mcmVlemVgIGlzIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCAtIHRoaW5rIFBNIHNsZWVwLCBoaWJlcm5hdGlvbiwgYW5kIHN1c3BlbmQuIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGlzIHJlbGF0ZWQgdG8gZGV2aWNlIHJlc2V0LCB0cmlnZ2VyZWQgaW4gZGlmZmVyZW50IHdheXMsIGluY2x1ZGluZyBjYWxscyB2aWEgYHZpcnRpb19wY2lfcmVzZXRfcHJlcGFyZWAuIENydWNpYWxseSwgdGhlc2Ugc2xlZXAvZnJlZXplIHN0YXRlcyBjYW4gYmUgKmluaXRpYXRlZCBmcm9tIHVzZXJzcGFjZSogdmlhIHN5c2ZzIGVudHJpZXMgbGlrZSBgL3N5cy9wb3dlci9zdGF0ZWAuIEdpdmVuIHRoYXQgYHZpcnRpb19ibGtgIGlzIGEgdmlydHVhbGl6ZWQgZHJpdmVyIGNvbW1vbiBpbiBLVk0vUUVNVSBlbnZpcm9ubWVudHMsIGFuZCB0aGlzIGlzIHdoZXJlIHN5emthbGxlciBpcyBub3JtYWxseSBvcGVyYXRpbmcsIHRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZS5cblxuU2VjdGlvbiAzIGZ1cnRoZXIgc3VwcG9ydHMgdGhpcyAtIEkgbXVzdCBhbHNvIGNoZWNrIGlmIHRoZSBwYXRjaCBtb2RpZmllcyBydW50aW1lIGNoZWNrcy9hc3NlcnRpb25zIG9yIHJlYWNoYWJsZSBjb2RlLiAgVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHF1ZXVlIHF1aWVzY2luZyBiZWhhdmlvciAtIGZyb20gYSBub24tYmxvY2tpbmcgb3BlcmF0aW9uIChgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCkgdG8gYSBibG9ja2luZyBvbmUgKGBibGtfbXFfcXVpZXNjZV9xdWV1ZWApLiAgVGhhdCBpbXBsaWVzIGEgY2hhbmdlIGluIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBzZW1hbnRpY3MgZHVyaW5nIGZyZWV6ZS9yZXNldCBmb3IgdmlydGlvX2JsayBkZXZpY2VzLlxuXG5Ob3csIGxldCdzIGxpc3QgdGhlIGtleSBzeW1ib2xzIGFmZmVjdGVkLiBUaGlzIHBhdGNoIGFsdGVyczogYHZpcnRibGtfZnJlZXplX3ByaXZgLCBgdmlydGJsa19mcmVlemVgLCBgdmlydGJsa19yZXNldF9wcmVwYXJlYCwgYHZpcnRibGtfcmVzdG9yZV9wcml2YCwgYHZpcnRibGtfcmVzdG9yZWAsIGFuZCBgdmlydGJsa19yZXNldF9kb25lYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVzZSBhcmUgc3RhdGljLlxuXG5DaGVja2luZyBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLCBJIGNhbiBzZWUgdGhhdCBgdmlydGJsa19mcmVlemVfcHJpdmAsIGB2aXJ0YmxrX2ZyZWV6ZWAsIGFuZCBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBhcmUgYWxsICpzdGF0aWMqLiAgSG93ZXZlciwgd2hpbGUgdGhleSBhcmUgYHN0YXRpY2AsIHRoZXkncmUgc3RpbGwgc3ltYm9scyB3aXRoaW4gYHZpcnRpb19ibGsub2AuICBJIGFsc28ga25vdyB0aGF0ICBgdmlydGlvX2RldmljZV9mcmVlemVgIGFuZCBgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlYCBhcmUgaW4gYGRyaXZlcnMvdmlydGlvL3ZpcnRpby5jYCwgYW5kIHNvIHRob3NlIHdpbGwgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzOiBgVklSVElPX0JMS2AsIGBWSVJUSU9gLCBhbmQgYFBNX1NMRUVQYCBhcmUgZXNzZW50aWFsLlxuXG5GaW5hbGx5LCBJIGNhbiBjb25maWRlbnRseSB2ZXJpZnkgdGhlIHJlcXVpcmVtZW50czpcblxuMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlIChiZWNhdXNlIHdlJ3ZlIGVzdGFibGlzaGVkIHJlYWNoYWJpbGl0eSkuXG4yLiAgYEZvY3VzU3ltYm9sc2A6IGBbXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsIFwidmlydGJsa19mcmVlemVcIiwgXCJ2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVcIiwgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLCBcInZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZVwiXWAgKHN5bWJvbHMgcmVsZXZhbnQgdG8gZnJlZXplL3Jlc2V0KS5cbjMuICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJWSVJUSU9fQkxLXCIsIFwiVklSVElPXCIsIFwiUE1fU0xFRVBcIl1gIChuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMpLlxuNC4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdmlydGlvLWJsayBxdWV1ZSBxdWllc2NpbmcgZHVyaW5nIGZyZWV6ZS9yZXNldCwgbWFraW5nIHRoZSBxdWllc2Npbmcgc3luY2hyb25vdXMgaW5zdGVhZCBvZiBhc3luY2hyb25vdXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgZHVyaW5nIFBNIGFuZCBkZXZpY2UgcmVzZXQuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTkyMywiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MzEuNzMzODM3MzA3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0MTQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fQkxLXCIsXG4gICAgXCJWSVJUSU9cIixcbiAgICBcIlBNX1NMRUVQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydGJsa19mcmVlemVfcHJpdlwiLFxuICAgIFwidmlydGJsa19mcmVlemVcIixcbiAgICBcInZpcnRibGtfcmVzZXRfcHJlcGFyZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9mcmVlemVcIixcbiAgICBcInZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkgdG8gdGhlIHN5bmNocm9ub3VzIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgZHVyaW5nIHZpcnRpb19ibGsgZGV2aWNlIGZyZWV6ZSBhbmQgcmVzZXQgcHJlcGFyYXRpb24sIGVuc3VyaW5nIHRoYXQgUkNVIGdyYWNlIHBlcmlvZHMgYW5kIGluLWZsaWdodCBkaXNwYXRjaGVzIGNvbXBsZXRlIGJlZm9yZSB2aXJ0cXVldWVzIGFyZSBkZWxldGVkLiBUaGlzIHRvdWNoZXMgcmVhY2hhYmxlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlc2V0IHBhdGhzIGZvciB2aXJ0aW8gYmxvY2sgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjMxLjgxNzI2MDQ4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTE1NzY4NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTozMS44MTc4MDI2NjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjA1MTAyOTU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlNWFkZGYyMDk3MjJhZDRjMWE1MzFjY2Q2NmY3NjkwZTkzZWE2ZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxODowNDozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY1xuKysrIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBzdGF0aWMgaW50IHZpcnRibGtfZnJlZXplX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4gXG4gXHQvKiBFbnN1cmUgbm8gcmVxdWVzdHMgaW4gdmlydHF1ZXVlcyBiZWZvcmUgZGVsZXRpbmcgdnFzLiAqL1xuIFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuLVx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpO1xuK1x0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG4gXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuIFxuIFx0LyogRW5zdXJlIHdlIGRvbid0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MzEuODE3ODAzOTM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1ODg4NTY4ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIHZzLiBLQVNBTiBGdXp6aW5nIERlY2lzaW9uIGZvciBgdmlydGlvX2Jsay5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRlY2lkZSBpZiB3ZSBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgIG9yIGlmIEtBU0FOIGlzIHN1ZmZpY2llbnQuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuTXkgaW5pdGlhbCByaXNrIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBsb29rcyBsaWtlIGEgdGVzdGluZy9RQSByZWxhdGVkIHBhdGNoLCBhbmQgdGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgYmVuaWduLiBUaGUgdXNlciBpcyBlc3NlbnRpYWxseSBhc2tpbmcgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuIEkgdGhpbmsgdGhpcyBpcyBhIHNhZmUgcmVxdWVzdCB0byBmdWxmaWxsLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBzaW1wbGUgY2hhbmdlLCByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLiBJIHJlbWVtYmVyIHNvbWUgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgbHVya2luZyBhcm91bmQgdGhlc2UgZnVuY3Rpb25zLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYW55IHN1YnRsZSBjaGFuZ2UgaW4gc2VtYW50aWNzLlxuXG5JJ2xsIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGB2aXJ0aW9fYmxrLmNgIGFyb3VuZCBsaW5lIDE1OTUgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aCBgcmVhZC1maWxlYC4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBsaWtlbHkgaW1wYWN0IG9mIHRoZSBjaGFuZ2UuIE9uY2UgSSBoYXZlIHRoZSBjb250ZXh0LCBJIGNhbiBtYWtlIGEganVkZ2VtZW50IG9uIHdoZXRoZXIgdGhlIGNoYW5nZXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCBtZW1vcnkgaW4gYSB3YXkgdGhhdCBLTVNBTiB3b3VsZCBiZSBzcGVjaWZpY2FsbHkgdmFsdWFibGUgZm9yLiBJZiB0aGlzIGlzIGEgc2ltcGxlIHN5bmNocm9uaXphdGlvbiB0d2VhaywgS0FTQU4gaXMgbGlrZWx5IHN1ZmZpY2llbnQuIElmIGl0IGludm9sdmVzIHN1YnRsZSBjaGFuZ2VzIHRvIG1lbW9yeSBsYXlvdXQsIG1heWJlIEtNU0FOIHdvdWxkIGJlIG1vcmUgdGFyZ2V0ZWQuIEknbGwgbmVlZCB0byBrbm93IG1vcmUgYmVmb3JlIEkgY2FuIGRlY2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjQ3LjcwNjM3NTE2M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU4MDpcXHRcXHR2YmxrLVxcdTAwM2V2ZGV2ID0gTlVMTDtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0dmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VkZWxfdnFzKHZkZXYpO1xcbjE1ODM6XFx0XFx0a2ZyZWUodmJsay1cXHUwMDNldnFzKTtcXG4xNTg0OlxcdFxcbjE1ODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2YmxrLVxcdTAwM2V2ZGV2X211dGV4KTtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0cHV0X2Rpc2sodmJsay1cXHUwMDNlZGlzayk7XFxuMTU4ODpcXHR9XFxuMTU4OTpcXHRcXG4xNTkwOlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4xNTkxOlxcdHtcXG4xNTkyOlxcdFxcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cXHUwMDNlcHJpdjtcXG4xNTkzOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWU7XFxuMTU5NDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTU5NTpcXHRcXG4xNTk2OlxcdFxcdC8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovXFxuMTU5NzpcXHRcXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuMTU5ODpcXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcXG4xNTk5OlxcdFxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdFxcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cXG4xNjAyOlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTYwMzpcXHRcXG4xNjA0OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTYwNTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcXG4xNjA4OlxcdFxcdGtmcmVlKHZibGstXFx1MDAzZXZxcyk7XFxuMTYwOTpcXHRcXHQvKlxcbjE2MTA6XFx0XFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcXG4xNjExOlxcdFxcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcXG4xNjEyOlxcdFxcdCAqIHBvaW50ZXJzIHNhZmVseS5cXG4xNjEzOlxcdFxcdCAqL1xcbjE2MTQ6XFx0XFx0dmJsay1cXHUwMDNldnFzID0gTlVMTDtcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0cmV0dXJuIDA7XFxuMTYxNzpcXHR9XFxuMTYxODpcXHRcXG4xNjE5OlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjQ3LjcwNjQ4NTQyM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTYyMzE5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IHZpcnRibGtfZnJlZXplX3ByaXYoKSBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBob3cgd2UgaGFuZGxlIHF1ZXVlIHF1aWVzY2luZyBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlcGxhY2luZyBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpYCB3aXRoIGBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKWAuIFRoZSBjcml0aWNhbCBkaWZmZXJlbmNlIGlzIHRoZSB3YWl0aW5nIGJlaGF2aW9yOiBgbm93YWl0YCBpcyAqYXN5bmNocm9ub3VzKiwgd2hpbGUgdGhlIHVwZGF0ZWQgdmVyc2lvbiBpcyAqc3luY2hyb25vdXMqLiBUaGlzIGVuc3VyZXMgd2Ugd2FpdCBmb3IgYWxsIGluLWZsaWdodCByZXF1ZXN0cyBhbmQgcXVldWUgaGFuZGxlcnMgdG8gY29tcGxldGUgYmVmb3JlIHRlYXJpbmcgZG93biB0aGUgdmlydHF1ZXVlcyAoYGRlbF92cXNgIGFuZCBga2ZyZWVgKS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgYSBzeW5jaHJvbml6YXRpb24gZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgcmFjZSBjb25kaXRpb24uIFRoZSBnb2FsIGlzIHRvIGF2b2lkIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgb3Igb3RoZXIgY29uY3VycmVuY3kgaXNzdWVzIHRoYXQgY291bGQgYXJpc2UgaWYgd2UgZGVsZXRlZCB0aGUgdmlydHF1ZXVlcyB3aGlsZSByZXF1ZXN0cyB3ZXJlIHN0aWxsIGFjdGl2ZS5cblxuTm93LCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBBbSBJIGludHJvZHVjaW5nIGFueSByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk/IFxuXG4xLiAgS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2Ugd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm9wZSwgbm90IGhlcmUuXG4yLiAgQ29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IERvZXNuJ3QgbG9vayBsaWtlIGl0LlxuMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8gY2hhbmdlcyB0aGVyZS5cbjQuICBBbnl0aGluZyB3aXRoIGJvdW5kcyBjaGVja3MsIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IERvZXNuJ3QgYXBwbHkgaGVyZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUuIFdlJ3JlIHByZXZlbnRpbmcgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgZGV2aWNlIGZyZWV6ZSBvciBwb3dlciBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHF1ZXVlIHF1aWVzY2luZy4gVGhlIGJ1ZyB3ZSdyZSB0cnlpbmcgdG8gZml4IGlzIGEgY29uY3VycmVuY3kgaXNzdWUgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGRhdGEgY29ycnVwdGlvbi4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMgYXJlIGRlc2lnbmVkIHRvIGNhdGNoIG1lbW9yeSBzYWZldHkgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2ssIG9yIGFuIGluZm8gbGVhayBpbnRyb2R1Y2VkLlxuXG5TbywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGFuZCBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBjaGVjayBsaXN0LCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLlxuXG5Ob3csIGxldCdzIHByZXBhcmUgdGhlIHJlYXNvbmluZyBmb3IgYHNldC1yZXN1bHRzYDpcblxuKiAgIFRoZSBwYXRjaCBtYWtlcyBhIGRpcmVjdCBjaGFuZ2UgaW4gYHZpcnRibGtfZnJlZXplX3ByaXYoKWAgaW4gYGRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jYCwgd2hlcmUgaXQgcmVwbGFjZXMgYW4gYXN5bmNocm9ub3VzIHF1aWVzY2Ugb3BlcmF0aW9uIHdpdGggYSBzeW5jaHJvbm91cyBvbmUuXG4qICAgVGhpcyBzeW5jaHJvbm91cyBvcGVyYXRpb24gZW5zdXJlcyB0aGF0IGFsbCBvdXRzdGFuZGluZyBxdWV1ZSBhY3Rpdml0eSBpcyBjb21wbGV0ZSBiZWZvcmUgcHJvY2VlZGluZyB0byBkZXZpY2UgcmVzZXQgYW5kIHZpcnRxdWV1ZSBkZWxldGlvbi5cbiogICBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgZGV2aWNlIGZyZWV6aW5nLlxuKiAgIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGNoYW5nZXMsIG9yIG5ldyBwYXRocyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGNvcGllZCB0byB1c2Vyc3BhY2UuXG4qICAgVGhlIGNvZGUgaXMgYWxyZWFkeSBzdXNjZXB0aWJsZSB0byBLQVNBTiBpc3N1ZXMgaW4gdGhlIGNvbnRleHQgb2YgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgZXRjLlxuXG5UaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNSwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTo1My44Njg4MDg4NDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKSB3aXRoIGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpIGluIHZpcnRibGtfZnJlZXplX3ByaXYoKSB0byBlbnN1cmUgdGhlIGJsb2NrIHJlcXVlc3QgcXVldWUgaXMgc3luY2hyb25vdXNseSBxdWllc2NlZCBiZWZvcmUgZGVsZXRpbmcgYW5kIGZyZWVpbmcgdGhlIHZpcnRxdWV1ZXMuIFRoaXMgaXMgYSBzeW5jaHJvbml6YXRpb24vdGltaW5nIGZpeCB0aGF0IHByZXZlbnRzIHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGRldmljZSBmcmVlemUvcG93ZXIgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGUgY2hhbmdlIHByZXNlbnRzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhcmUgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIGZhY2lsaXRpZXMuIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 18:03:18 +0000 UTC FinishedAt: 2026-09-10 18:05:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "50d05c7c76c96b90462f24debacca971d2e86713", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_BLK", "VIRTIO", "PM_SLEEP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "50d05c7c76c96b90462f24debacca971d2e86713", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_BLK", "VIRTIO", "PM_SLEEP" ], "series_id": "7eb10944-0527-4290-bd07-3b98f2452ce0" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "kvm" ], "focus_symbols": [ "virtblk_freeze_priv", "virtblk_freeze", "virtblk_reset_prepare", "virtio_device_freeze", "virtio_device_reset_prepare" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19CTEsmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDssCiAgICAmIzM0O1BNX1NMRUVQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX2ZyZWV6ZSYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWU1YWRkZjIwOTcyMmFkNGMxYTUzMWNjZDY2Zjc2OTBlOTNlYTZkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbkBAIC0xNTk1LDcgJiM0MzsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuIFxuIFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbiBcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbi1cdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbiYjNDM7XHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcbiBcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XG4gXG4gXHQvKiBFbnN1cmUgd2UgZG9uJiMzOTt0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19CTEsmIzM0OywKICAgICYjMzQ7VklSVElPJiMzNDssCiAgICAmIzM0O1BNX1NMRUVQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX2ZyZWV6ZSYjMzQ7LAogICAgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkgdG8gdGhlIHN5bmNocm9ub3VzIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgZHVyaW5nIHZpcnRpb19ibGsgZGV2aWNlIGZyZWV6ZSBhbmQgcmVzZXQgcHJlcGFyYXRpb24sIGVuc3VyaW5nIHRoYXQgUkNVIGdyYWNlIHBlcmlvZHMgYW5kIGluLWZsaWdodCBkaXNwYXRjaGVzIGNvbXBsZXRlIGJlZm9yZSB2aXJ0cXVldWVzIGFyZSBkZWxldGVkLiBUaGlzIHRvdWNoZXMgcmVhY2hhYmxlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlc2V0IHBhdGhzIGZvciB2aXJ0aW8gYmxvY2sgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMTg6MDQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCkBAIC0xNTk1LDcgJiM0MzsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCiAJLyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi8KIAltZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7Ci0JYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpOwomIzQzOwlibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTsKIAlibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpOwogCiAJLyogRW5zdXJlIHdlIGRvbiYjMzk7dCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkluc3BlY3RpbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMg4oCTIHdoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGluIHRoZSBkaWZmLiBUaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBiZWVuIG1vZGlmaWVkIGFuZCB3aHkuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbmF2aWdhdGUgYWxsIG9mIHRoZSB1c2FnZXMgb2YgdGhpcyBmdW5jdGlvbiwgd2hpY2ggcmVxdWlyZXMgbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjay4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gdXNlIHRvb2xzIGxpa2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyB3aGVyZSBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgYHZpcnRpb19ibGsuY2AuIEkmIzM5O2xsIHdhbnQgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydGJsa19mcmVlemVfcHJpdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE1NjQ9c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU4OS1cbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE1OTA6c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5MS17XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTYzNT1zdGF0aWMgaW50IHZpcnRibGtfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzNi17XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjM3Olx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjM4LX1cbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjQ2PXN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0Ny17XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjQ4Olx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgY29kZToKCioqQW5hbHl6aW5nIHZpcnRpb19ibGsuYzogQSBEZWVwIERpdmUgaW50byBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGB2aXJ0aW9fYmxrLmNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyAxNTgwLTE2NzAuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyByZWdpb24gYmVjYXVzZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYmxvY2sgbGF5ZXIgYW5kIHZpcnRpbywgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgcmVxdWVzdCBwcm9jZXNzaW5nIGhhcHBlbnMuIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgaG93IHJlcXVlc3RzIGZyb20gdGhlIGhvc3QgT1MgYXJlIHRyYW5zbGF0ZWQgaW50byB2aXJ0aW8gY29tbWFuZHMgYW5kIHRoZW4gc3VibWl0dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGRldmljZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB2aXJ0cXVldWUsIGhvdyBpdCBoYW5kbGVzIGNvbW1hbmQgY29tcGxldGlvbiwgYW5kIHdoZXJlIHRoZSBlcnJvciBoYW5kbGluZyBzaXRzLiBJIGFudGljaXBhdGUgdGhhdCB0aGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggdGhlIHZpcnRpbyB0cmFuc3BvcnQgbGF5ZXIsIHBlcmhhcHMgdXNpbmcgZnVuY3Rpb25zIGxpa2UgYHZpcnRxdWV1ZV9hZGRfYnVmYCBhbmQgYHZpcnRxdWV1ZV9raWNrYC4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgdG8gdHJhY2sgcmVxdWVzdHM7IGxpa2VseSB0aGVyZSYjMzk7cyBhIHN0cnVjdCB0byBob2xkIGFsbCB0aGUgbWV0YWRhdGEgYWJvdXQgYW4gYWN0aXZlIHJlcXVlc3QsIGZyb20gdGhlIGJsb2NrIEkvTyByZXF1ZXN0IHN0cnVjdHVyZSBkb3duIHRvIHRoZSB2aXJ0aW8gZGVzY3JpcHRvci4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3JpdGljYWwgaGVyZSwgd2l0aCB2YXJpb3VzIGNoZWNrcyBmb3IgdGhpbmdzIGxpa2UgZGV2aWNlIGVycm9ycywgYnVmZmVyIG92ZXJmbG93cywgb3IgdGhlIHVzdWFsIHN1c3BlY3RzIHRoYXQgY2FuIHBsYWd1ZSBhIGRyaXZlciBvcGVyYXRpbmcgb24gcmF3IGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmc7IGlzIHRoaXMgc3luY2hyb25vdXMsIGFzeW5jaHJvbm91cywgb3IgYSBoeWJyaWQgbW9kZWw/IEdpdmVuIHRoZSBuYXR1cmUgb2YgYmxvY2sgSS9PLCBJJiMzOTtkIGd1ZXNzIHRoYXQgdGhpcyB3aWxsIGludm9sdmUgc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBjb21wbGV0aW9uIGhhbmRsaW5nIHRvIGtlZXAgdGhlIGRldmljZSByZXNwb25zaXZlLiBJJiMzOTttIGV4cGVjdGluZyBsb2NraW5nIHRvIGJlIHByZXNlbnQsIGFuZCBpdCYjMzk7bGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIHdoYXQgZ3JhbnVsYXJpdGllcyB0aGV5IHVzZS4gSSYjMzk7bSBhcm1lZCB3aXRoIG15IGtub3dsZWRnZSBvZiB2aXJ0aW8sIGJsb2NrIGRldmljZSBkcml2ZXJzLCBhbmQgeWVhcnMgb2Yga2VybmVsIGV4cGVyaWVuY2UsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGFyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYwOlx0b3V0OlxuMTU2MTpcdFx0cmV0dXJuIGVycjtcbjE1NjI6XHR9XG4xNTYzOlx0XG4xNTY0Olx0c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNTY1Olx0e1xuMTU2NjpcdFx0c3RydWN0IHZpcnRpb19ibGsgKnZibGsgPSB2ZGV2LVx1MDAzZXByaXY7XG4xNTY3Olx0XG4xNTY4Olx0XHQvKiBNYWtlIHN1cmUgbm8gd29yayBoYW5kbGVyIGlzIGFjY2Vzc2luZyB0aGUgZGV2aWNlLiAqL1xuMTU2OTpcdFx0Zmx1c2hfd29yayhcdTAwMjZ2YmxrLVx1MDAzZWNvbmZpZ193b3JrKTtcbjE1NzA6XHRcbjE1NzE6XHRcdGRlbF9nZW5kaXNrKHZibGstXHUwMDNlZGlzayk7XG4xNTcyOlx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnZibGstXHUwMDNldGFnX3NldCk7XG4xNTczOlx0XG4xNTc0Olx0XHRtdXRleF9sb2NrKFx1MDAyNnZibGstXHUwMDNldmRldl9tdXRleCk7XG4xNTc1Olx0XG4xNTc2Olx0XHQvKiBTdG9wIGFsbCB0aGUgdmlydHF1ZXVlcy4gKi9cbjE1Nzc6XHRcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XG4xNTc4Olx0XG4xNTc5Olx0XHQvKiBWaXJ0cXVldWVzIGFyZSBzdG9wcGVkLCBub3RoaW5nIGNhbiB1c2UgdmJsay1cdTAwM2V2ZGV2IGFueW1vcmUuICovXG4xNTgwOlx0XHR2YmxrLVx1MDAzZXZkZXYgPSBOVUxMO1xuMTU4MTpcdFxuMTU4MjpcdFx0dmRldi1cdTAwM2Vjb25maWctXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcbjE1ODM6XHRcdGtmcmVlKHZibGstXHUwMDNldnFzKTtcbjE1ODQ6XHRcbjE1ODU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2YmxrLVx1MDAzZXZkZXZfbXV0ZXgpO1xuMTU4NjpcdFxuMTU4NzpcdFx0cHV0X2Rpc2sodmJsay1cdTAwM2VkaXNrKTtcbjE1ODg6XHR9XG4xNTg5Olx0XG4xNTkwOlx0c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTU5MTpcdHtcbjE1OTI6XHRcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cdTAwM2Vwcml2O1xuMTU5MzpcdFx0c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSB2YmxrLVx1MDAzZWRpc2stXHUwMDNlcXVldWU7XG4xNTk0Olx0XHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4xNTk1Olx0XG4xNTk2Olx0XHQvKiBFbnN1cmUgbm8gcmVxdWVzdHMgaW4gdmlydHF1ZXVlcyBiZWZvcmUgZGVsZXRpbmcgdnFzLiAqL1xuMTU5NzpcdFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuMTU5ODpcdFx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG4xNTk5Olx0XHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuMTYwMDpcdFxuMTYwMTpcdFx0LyogRW5zdXJlIHdlIGRvbiYjMzk7dCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cbjE2MDI6XHRcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XG4xNjAzOlx0XG4xNjA0Olx0XHQvKiBNYWtlIHN1cmUgbm8gd29yayBoYW5kbGVyIGlzIGFjY2Vzc2luZyB0aGUgZGV2aWNlLiAqL1xuMTYwNTpcdFx0Zmx1c2hfd29yayhcdTAwMjZ2YmxrLVx1MDAzZWNvbmZpZ193b3JrKTtcbjE2MDY6XHRcbjE2MDc6XHRcdHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZWRlbF92cXModmRldik7XG4xNjA4Olx0XHRrZnJlZSh2YmxrLVx1MDAzZXZxcyk7XG4xNjA5Olx0XHQvKlxuMTYxMDpcdFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcbjE2MTE6XHRcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcbjE2MTI6XHRcdCAqIHBvaW50ZXJzIHNhZmVseS5cbjE2MTM6XHRcdCAqL1xuMTYxNDpcdFx0dmJsay1cdTAwM2V2cXMgPSBOVUxMO1xuMTYxNTpcdFxuMTYxNjpcdFx0cmV0dXJuIDA7XG4xNjE3Olx0fVxuMTYxODpcdFxuMTYxOTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjIwOlx0e1xuMTYyMTpcdFx0c3RydWN0IHZpcnRpb19ibGsgKnZibGsgPSB2ZGV2LVx1MDAzZXByaXY7XG4xNjIyOlx0XHRpbnQgcmV0O1xuMTYyMzpcdFxuMTYyNDpcdFx0cmV0ID0gaW5pdF92cSh2ZGV2LVx1MDAzZXByaXYpO1xuMTYyNTpcdFx0aWYgKHJldClcbjE2MjY6XHRcdFx0cmV0dXJuIHJldDtcbjE2Mjc6XHRcbjE2Mjg6XHRcdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XG4xNjI5Olx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHZibGstXHUwMDNlZGlzay1cdTAwM2VxdWV1ZSk7XG4xNjMwOlx0XG4xNjMxOlx0XHRyZXR1cm4gMDtcbjE2MzI6XHR9XG4xNjMzOlx0XG4xNjM0Olx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxuMTYzNTpcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjM2Olx0e1xuMTYzNzpcdFx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG4xNjM4Olx0fVxuMTYzOTpcdFxuMTY0MDpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY0MTpcdHtcbjE2NDI6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NDM6XHR9XG4xNjQ0Olx0I2VuZGlmXG4xNjQ1Olx0XG4xNjQ2Olx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0cmV0dXJuIHZpcnRibGtfZnJlZXplX3ByaXYodmRldik7XG4xNjQ5Olx0fVxuMTY1MDpcdFxuMTY1MTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY1MjpcdHtcbjE2NTM6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NTQ6XHR9XG4xNjU1Olx0XG4xNjU2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7XG4xNjU3Olx0XHR7IFZJUlRJT19JRF9CTE9DSywgVklSVElPX0RFVl9BTllfSUQgfSxcbjE2NTg6XHRcdHsgMCB9LFxuMTY1OTpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciB3b3Jrcywgc3BlY2lmaWNhbGx5IHRoZSBhc3BlY3RzIEkgaGF2ZW4mIzM5O3QgZXhhbWluZWQgY2xvc2VseSB5ZXQuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gaG93IGl0IGhhbmRsZXMgcmVxdWVzdHMgYW5kIG1hbmFnZXMgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIHN0cnVjdHVyZXMgdGhlIHJlcXVlc3RzLCB0aGUgY29tbWFuZCBzdWJtaXNzaW9uIHByb2Nlc3MsIGFuZCBob3cgaXQgZGVhbHMgd2l0aCB0aGUgY29tcGxldGlvbiBub3RpZmljYXRpb25zIGZyb20gdGhlIFZpcnRJTyBibG9jayBkZXZpY2UuIEFyZSB0aGV5IHVzaW5nIGludGVycnVwdHMsIHBvbGxpbmcsIG9yIGEgY29tYmluYXRpb24/IEFuZCBhcmUgdGhlcmUgYW55IGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcgc3RyYXRlZ2llcyBpbXBsZW1lbnRlZD8gSSBleHBlY3QgdG8gc2VlIHRoZSBjb3JlIGxvZ2ljIGZvciB0cmFuc2xhdGluZyBibG9jayBJL08gcmVxdWVzdHMgaW50byBWaXJ0SU8gY29tbWFuZHMsIGJ1dCBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBxdWV1aW5nIG1lY2hhbmlzbXMuIEhvdyBhcmUgcmVxdWVzdHMgcHJpb3JpdGl6ZWQgb3IgbWVyZ2VkPyBJIGFsc28gd2FudCB0byBpZGVudGlmeSBhbnkgbG9ja2luZyBtZWNoYW5pc21zIHVzZWQgdG8gZW5zdXJlIHRocmVhZCBzYWZldHksIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgc3BpbmxvY2sgb3IgbXV0ZXggc29tZXdoZXJlIGFyb3VuZCB0aGUgcXVldWUgaGVhZHMgYW5kIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLiBGdXJ0aGVybW9yZSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRldmljZS1zcGVjaWZpYyBxdWlya3Mgb3Igd29ya2Fyb3VuZHMuIFZpcnRJTyBpcyBzdXBwb3NlZCB0byBiZSBhIHN0YW5kYXJkaXplZCBpbnRlcmZhY2UsIGJ1dCByZWFsLXdvcmxkIGltcGxlbWVudGF0aW9ucyBvZnRlbiByZXF1aXJlIHNvbWUgbGV2ZWwgb2YgY3VzdG9taXphdGlvbi4gQW5kIGZpbmFsbHksIEkmIzM5O20gZ29pbmcgdG8gYmUgYXNzZXNzaW5nIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBtZW1vcnkgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucywgbGlrZSBETUEgYnVmZmVyIGFsbG9jYXRpb24gb3IgemVyby1jb3B5IHRlY2huaXF1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY1MDpcdFxuMTY1MTpcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuMTY1MjpcdHtcbjE2NTM6XHRcdHJldHVybiB2aXJ0YmxrX3Jlc3RvcmVfcHJpdih2ZGV2KTtcbjE2NTQ6XHR9XG4xNjU1Olx0XG4xNjU2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7XG4xNjU3Olx0XHR7IFZJUlRJT19JRF9CTE9DSywgVklSVElPX0RFVl9BTllfSUQgfSxcbjE2NTg6XHRcdHsgMCB9LFxuMTY1OTpcdH07XG4xNjYwOlx0XG4xNjYxOlx0c3RhdGljIHVuc2lnbmVkIGludCBmZWF0dXJlc19sZWdhY3lbXSA9IHtcbjE2NjI6XHRcdFZJUlRJT19CTEtfRl9TRUdfTUFYLCBWSVJUSU9fQkxLX0ZfU0laRV9NQVgsIFZJUlRJT19CTEtfRl9HRU9NRVRSWSxcbjE2NjM6XHRcdFZJUlRJT19CTEtfRl9STywgVklSVElPX0JMS19GX0JMS19TSVpFLFxuMTY2NDpcdFx0VklSVElPX0JMS19GX0ZMVVNILCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1ksIFZJUlRJT19CTEtfRl9DT05GSUdfV0NFLFxuMTY2NTpcdFx0VklSVElPX0JMS19GX01RLCBWSVJUSU9fQkxLX0ZfRElTQ0FSRCwgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyxcbjE2NjY6XHRcdFZJUlRJT19CTEtfRl9TRUNVUkVfRVJBU0UsXG4xNjY3Olx0fVxuMTY2ODpcdDtcbjE2Njk6XHRzdGF0aWMgdW5zaWduZWQgaW50IGZlYXR1cmVzW10gPSB7XG4xNjcwOlx0XHRWSVJUSU9fQkxLX0ZfU0VHX01BWCwgVklSVElPX0JMS19GX1NJWkVfTUFYLCBWSVJUSU9fQkxLX0ZfR0VPTUVUUlksXG4xNjcxOlx0XHRWSVJUSU9fQkxLX0ZfUk8sIFZJUlRJT19CTEtfRl9CTEtfU0laRSxcbjE2NzI6XHRcdFZJUlRJT19CTEtfRl9GTFVTSCwgVklSVElPX0JMS19GX1RPUE9MT0dZLCBWSVJUSU9fQkxLX0ZfQ09ORklHX1dDRSxcbjE2NzM6XHRcdFZJUlRJT19CTEtfRl9NUSwgVklSVElPX0JMS19GX0RJU0NBUkQsIFZJUlRJT19CTEtfRl9XUklURV9aRVJPRVMsXG4xNjc0Olx0XHRWSVJUSU9fQkxLX0ZfU0VDVVJFX0VSQVNFLCBWSVJUSU9fQkxLX0ZfWk9ORUQsXG4xNjc1Olx0fTtcbjE2NzY6XHRcbjE2Nzc6XHRzdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JsayA9IHtcbjE2Nzg6XHRcdC5mZWF0dXJlX3RhYmxlXHRcdFx0PSBmZWF0dXJlcyxcbjE2Nzk6XHRcdC5mZWF0dXJlX3RhYmxlX3NpemVcdFx0PSBBUlJBWV9TSVpFKGZlYXR1cmVzKSxcbjE2ODA6XHRcdC5mZWF0dXJlX3RhYmxlX2xlZ2FjeVx0XHQ9IGZlYXR1cmVzX2xlZ2FjeSxcbjE2ODE6XHRcdC5mZWF0dXJlX3RhYmxlX3NpemVfbGVnYWN5XHQ9IEFSUkFZX1NJWkUoZmVhdHVyZXNfbGVnYWN5KSxcbjE2ODI6XHRcdC5kcml2ZXIubmFtZVx0XHRcdD0gS0JVSUxEX01PRE5BTUUsXG4xNjgzOlx0XHQuaWRfdGFibGVcdFx0XHQ9IGlkX3RhYmxlLFxuMTY4NDpcdFx0LnByb2JlXHRcdFx0XHQ9IHZpcnRibGtfcHJvYmUsXG4xNjg1Olx0XHQucmVtb3ZlXHRcdFx0XHQ9IHZpcnRibGtfcmVtb3ZlLFxuMTY4NjpcdFx0LmNvbmZpZ19jaGFuZ2VkXHRcdFx0PSB2aXJ0YmxrX2NvbmZpZ19jaGFuZ2VkLFxuMTY4NzpcdCNpZmRlZiBDT05GSUdfUE1fU0xFRVBcbjE2ODg6XHRcdC5mcmVlemVcdFx0XHRcdD0gdmlydGJsa19mcmVlemUsXG4xNjg5Olx0XHQucmVzdG9yZVx0XHRcdD0gdmlydGJsa19yZXN0b3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0OTkKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGlnZ2luZyBpbnRvIHZpcnRibGsgRnJlZXplL1Jlc2V0IEJlaGF2aW9yKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGB2aXJ0YmxrYCBkcml2ZXIgaGFuZGxlcyBmcmVlemluZyBhbmQgcmVzZXR0aW5nLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgdmlydGJsa19mcmVlemVfcHJpdmAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgcG9pbnRzOiB0aGUgYHZpcnRibGtfZnJlZXplYCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIGAuZnJlZXplYCBtZXRob2QgaW4gdGhlIHZpcnRpbyBkcml2ZXIgc3RydWN0dXJlLCBhbmQgYWxzbyBmcm9tIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLiBOb3csIHRoYXQgYHJlc2V0X3ByZXBhcmVgIGlzIHRoZSBpbnRlcmVzdGluZyBwaWVjZS4uLiBJIGtub3cgdGhlIHZpcnRpbyBkcml2ZXIgbW9kZWwgaGFzIHRoZSBgLnJlc2V0X3ByZXBhcmVgIGNhbGxiYWNrIGFzIHBhcnQgb2YgdGhlIHJlc2V0IHNlcXVlbmNlLCBidXQgSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpTbywgd2hlcmUgaXMgYHJlc2V0X3ByZXBhcmVgIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGJlZm9yZSBJIG1ha2UgYW55IGp1ZGdlbWVudHMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwYCBhbmQgc2NvdXIgdGhlIGNvZGViYXNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGByZXNldF9wcmVwYXJlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgdW5jb3ZlcnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfcHJlcGFyZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTUzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM9NjY4PXN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IGhsX3BjaV9lcnJfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNjc2LVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jOjY3NzpzdGF0aWMgdm9pZCBobF9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy02Nzgte1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYz03MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaGxfcGNpX2Vycl9oYW5kbGVyID0ge1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTctXHQucmVzdW1lID0gaGxfcGNpX2Vycl9yZXN1bWUsXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM6NzE4Olx0LnJlc2V0X3ByZXBhcmUgPSBobF9wY2lfcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTktXHQucmVzZXRfZG9uZSA9IGhsX3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2Rydi5jPTg5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpdnB1X2Rydl9wY2lfZXJyID0ge1xuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfZHJ2LmM6ODkzOlx0LnJlc2V0X3ByZXBhcmUgPSBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2IsXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYy04OTQtXHQucmVzZXRfZG9uZSA9IGl2cHVfcG1fcmVzZXRfZG9uZV9jYixcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5jPTM3Mj12b2lkIGl2cHVfcnBtX3B1dChzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzYtXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5jOjM3Nzp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X3BtLmMtMzc4LXtcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oPTMzPWludCBpdnB1X3BtX3J1bnRpbWVfcmVzdW1lX2NiKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oLTM0LVxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaDozNTp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9wbS5oLTM2LXZvaWQgaXZwdV9wbV9yZXNldF9kb25lX2NiKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz02Mjc9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBjaV9jaGFubmVsX3N0YXRlX3QgZXJyb3IpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjMxLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NjMyOnN0YXRpYyB2b2lkIHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02MzMte1xuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBxYWljX3BjaV9lcnJfaGFuZGxlciA9IHtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTY3My1cdC5lcnJvcl9kZXRlY3RlZCA9IHFhaWNfcGNpX2Vycm9yX2RldGVjdGVkLFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Njc0Olx0LnJlc2V0X3ByZXBhcmUgPSBxYWljX3BjaV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjc1LVx0LnJlc2V0X2RvbmUgPSBxYWljX3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTcyMT1zdGF0aWMgaW50IHFhaWNfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzM0LVx0cWFpY19tcXRzX2NoX3N0b3BfdGltZXIocWRldi1cdTAwM2VtcXRzX2NoKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjczNTpcdHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUocWRldi1cdTAwM2VwZGV2KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTczNi1cdHBjaV9zYXZlX3N0YXRlKHFkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTY0MD1zdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ1LVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY0NjpzdGF0aWMgaW50IHZpcnRibGtfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2NDcte1xuLS1cbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE2Nzc9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19ibGsgPSB7XG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY5MC0jZW5kaWZcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE2OTE6XHQucmVzZXRfcHJlcGFyZVx0XHRcdD0gdmlydGJsa19yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY5Mi1cdC5yZXNldF9kb25lXHRcdFx0PSB2aXJ0YmxrX3Jlc2V0X2RvbmUsXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNTA5PXN0YXRpYyB2b2lkIG1oaV9wY2lfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE0LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNTE1OnN0YXRpYyB2b2lkIG1oaV9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTUxNi17XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIG1oaV9wY2lfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjE5LVx0LnJlc3VtZSA9IG1oaV9wY2lfaW9fcmVzdW1lLFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNjIwOlx0LnJlc2V0X3ByZXBhcmUgPSBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE2MjEtXHQucmVzZXRfZG9uZSA9IG1oaV9wY2lfcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSBpcyBiZWluZyByZXNldCAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTA1Olx0aWYgKGNkeF9kcnYgXHUwMDI2XHUwMDI2IGNkeF9kcnYtXHUwMDNlcmVzZXRfcHJlcGFyZSlcbmRyaXZlcnMvY2R4L2NkeC5jOjEwNjpcdFx0Y2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTA3LVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9ocHJlL2hwcmVfbWFpbi5jPTE2ODg9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaHByZV9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkwLVx0LnNsb3RfcmVzZXRcdFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL2hwcmUvaHByZV9tYWluLmM6MTY5MTpcdC5yZXNldF9wcmVwYXJlXHRcdD0gaGlzaV9xbV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL2hwcmUvaHByZV9tYWluLmMtMTY5Mi1cdC5yZXNldF9kb25lXHRcdD0gaGlzaV9xbV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTU5Nz1zdGF0aWMgdm9pZCBxbV9kZXZfZGJfY3RybChzdHJ1Y3QgaGlzaV9xbSAqcW0sIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTYwNy1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjYwODpzdGF0aWMgaW50IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkoc3RydWN0IGhpc2lfcW0gKnFtKVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNjA5LXtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz0xMTk2PXN0YXRpYyB2b2lkIHFtX3Jlc2V0X2Z1bmN0aW9uKHN0cnVjdCBoaXNpX3FtICpxbSlcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy0xMjAzLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6MTIwNDpcdHJldCA9IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkocW0pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtMTIwNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NTI1PXN0YXRpYyB2b2lkIHFtX2Rldl9lY2NfbWJpdF9oYW5kbGUoc3RydWN0IGhpc2lfcW0gKnFtKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1NDYtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NTQ3OnN0YXRpYyBpbnQgcW1fdmZfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0sXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NTQ4LVx0XHRcdCAgICAgICBlbnVtIHFtX3N0b3BfcmVhc29uIHN0b3BfcmVhc29uKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ1Nzc9c3RhdGljIGludCBxbV90cnlfc3RvcF92ZnMoc3RydWN0IGhpc2lfcW0gKnFtLCBlbnVtIHFtX2lmY19jbWQgY21kLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTEtXHR9IGVsc2Uge1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDU5MjpcdFx0cmV0ID0gcW1fdmZfcmVzZXRfcHJlcGFyZShxbSwgc3RvcF9yZWFzb24pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU5My1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NTk5LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYwMDpzdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0pXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjAxLXtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjEwLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYxMTpcdHJldCA9IHFtX3Jlc2V0X3ByZXBhcmVfcmVhZHkocW0pO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYxMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NjQ5PXN0YXRpYyBpbnQgcW1fbWFzdGVyX29vb19jaGVjayhzdHJ1Y3QgaGlzaV9xbSAqcW0pXG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDY2NC1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2NjU6c3RhdGljIGludCBxbV9zb2Z0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtKVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDY2Ni17XG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDczMj1zdGF0aWMgaW50IHFtX3NvZnRfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ3MzUtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NzM2Olx0cmV0ID0gcW1fc29mdF9yZXNldF9wcmVwYXJlKHFtKTtcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ3MzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ5NTI9c3RhdGljIGludCBxbV9jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBoaXNpX3FtICpxbSlcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00OTU4LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDk1OTpcdHJldCA9IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00OTYwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTUwMTY9RVhQT1JUX1NZTUJPTF9HUEwoaGlzaV9xbV9kZXZfc2xvdF9yZXNldCk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDE3LVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAxODp2b2lkIGhpc2lfcW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMTkte1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMzQtXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo1MDM1Olx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDM2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwNzMtfVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTA3NDpFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3FtX3Jlc2V0X3ByZXBhcmUpO1xuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNTA3NS1cbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01MjM2PXN0YXRpYyB2b2lkIHFtX3BmX3Jlc2V0X3ZmX3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUyNDItXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo1MjQzOlx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MjQ0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM9MTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBzZWNfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYy0xNTA4LVx0LnNsb3RfcmVzZXRcdD0gaGlzaV9xbV9kZXZfc2xvdF9yZXNldCxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM6MTUwOTpcdC5yZXNldF9wcmVwYXJlXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmMtMTUxMC1cdC5yZXNldF9kb25lXHQ9IGhpc2lfcW1fcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM9MTYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBoaXNpX3ppcF9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmMtMTYxNy1cdC5zbG90X3Jlc2V0XHQ9IGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQsXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM6MTYxODpcdC5yZXNldF9wcmVwYXJlXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYy0xNjE5LVx0LnJlc2V0X2RvbmVcdD0gaGlzaV9xbV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz0xOD1zdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmRldmljZV9zcmlvdl93cTtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0xOS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyMDpzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCByZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTIxLXtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9NzI9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgYWRmX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy05MC1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzo5MTpcdHJldHVybiByZXNldF9wcmVwYXJlKHBkZXYpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTkyLX1cbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9MjQ5PXN0YXRpYyB2b2lkIGFkZl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1NC1cbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTU6c3RhdGljIHZvaWQgYWRmX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjU2LXtcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTc6XHRyZXNldF9wcmVwYXJlKHBkZXYpO1xuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1OC19XG4tLVxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jPTI2NT1jb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGFkZl9lcnJfaGFuZGxlciA9IHtcbi0tXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjY4LVx0LnJlc3VtZSA9IGFkZl9yZXN1bWUsXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM6MjY5Olx0LnJlc2V0X3ByZXBhcmUgPSBhZGZfcmVzZXRfcHJlcGFyZSxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNzAtXHQucmVzZXRfZG9uZSA9IGFkZl9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jPTk0Mj1zdGF0aWMgdm9pZCBpZHhkX2RldmljZV9jb25maWdfcmVzdG9yZShzdHJ1Y3QgaWR4ZF9kZXZpY2UgKmlkeGQsXG4tLVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTAyMC1cbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jOjEwMjE6c3RhdGljIHZvaWQgaWR4ZF9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTAyMi17XG4tLVxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM9MTEyNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpZHhkX2Vycm9yX2hhbmRsZXIgPSB7XG5kcml2ZXJzL2RtYS9pZHhkL2luaXQuYzoxMTI3Olx0LnJlc2V0X3ByZXBhcmVcdD0gaWR4ZF9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmMtMTEyOC1cdC5yZXNldF9kb25lXHQ9IGlkeGRfcmVzZXRfZG9uZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM9NTAyOD1pbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTA4Ni1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzo1MDg3Olx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01MDg4LVx0LyogSWYgcmVzZXQgaGFuZGxlciBub3QgaW1wbGVtZW50ZWQsIGNvbnRpbnVlOyBvdGhlcndpc2UgcmV0dXJuICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM9MTQ4PWludCBhbWRncHVfcmVzZXRfZG9feGdtaV9yZXNldF9vbl9pbml0KFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2MC1cdFx0XHRcdHJlc2V0X2xpc3QpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM6MTYxOlx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2Mi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jPTIwND1pbnQgYW1kZ3B1X3Jlc2V0X2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmMtMjI3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmM6MjI4OmludCBhbWRncHVfcmVzZXRfcHJlcGFyZV9od2NvbnRleHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYy0yMjktXHRcdFx0XHQgICBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2NvbnRleHQgKnJlc2V0X2NvbnRleHQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg9MTQ2PWludCBhbWRncHVfcmVzZXRfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNDctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaDoxNDg6aW50IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE0OS1cdFx0XHRcdCAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg9MTUxPWludCBhbWRncHVfcmVzZXRfcGVyZm9ybV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNTMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaDoxNTQ6aW50IGFtZGdwdV9yZXNldF9wcmVwYXJlX2VudihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE1NS1cdFx0XHQgICAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmM9MjY9Ym9vbCBpbnRlbF9kaXNwbGF5X3Jlc2V0X3Rlc3Qoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmMtMzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuYzozMjp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMzLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaD0xND1ib29sIGludGVsX2Rpc3BsYXlfcmVzZXRfdGVzdChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaDoxNTp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaC0xNi12b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LCBib29sIHRlc3Rfb25seSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yOTUyPXN0YXRpYyBpbnQgZXhlY2xpc3RzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yOTY0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyOTY1OnN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjk2Ni17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0zNDM3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzozNDM4Olx0ZW5naW5lLVx1MDAzZXJlc2V0LnByZXBhcmUgPSBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQzOS1cdGVuZ2luZS1cdTAwM2VyZXNldC5yZXdpbmQgPSBleGVjbGlzdHNfcmVzZXRfcmV3aW5kO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9MTY5PXN0YXRpYyB2b2lkIGd0X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTItXHQvKiBGb3IgR3VDIG1vZGUsIGVuc3VyZSBzdWJtaXNzaW9uIGlzIGRpc2FibGVkIGJlZm9yZSBzdG9wcGluZyByaW5nICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jOjE5MzpcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXHUwMDI2Z3QtXHUwMDNldWMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz01MjE9c3RhdGljIGludCBfX2dlbjExX3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2MS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6NTYyOnN0YXRpYyBpbnQgZ2VuOF9lbmdpbmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2My17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz02MTA9c3RhdGljIGludCBnZW44X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTYyMi1cdGZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBndCwgZW5naW5lX21hc2ssIHRtcCkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo2MjM6XHRcdHJldCA9IGdlbjhfZW5naW5lX3Jlc2V0X3ByZXBhcmUoZW5naW5lKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtNjI0LVx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhcmVzZXRfbm9uX3JlYWR5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9ODEzPWludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTgyOS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODMwOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODMxLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTg0ND1zdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg3NC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODc1OnN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d0ICpndClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODc2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4NS1cdCAqIEZvciBHdUMgbW9kZSB3aXRoIHN1Ym1pc3Npb24gZGlzYWJsZWQsIGVuc3VyZSB0aGF0IEd1QyBpcyBub3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODg2Olx0ICogc2FuaXRpemVkLCBkbyB0aGF0IGFmdGVyIGVuZ2luZSByZXNldC4gcmVzZXRfcHJlcGFyZSgpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4Ny1cdCAqIGlzIGZvbGxvd2VkIGJ5IGVuZ2luZSByZXNldCB3aGljaCBpbiB0aGlzIG1vZGUgcmVxdWlyZXMgR3VDIHRvXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTAtXHRpZiAoaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbihcdTAwMjZndC1cdTAwM2V1YykpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjg5MTpcdFx0aW50ZWxfdWNfcmVzZXRfcHJlcGFyZShcdTAwMjZndC1cdTAwM2V1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5NS1cdFx0XHRhd2FrZSB8PSBlbmdpbmUtXHUwMDNlbWFzaztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODk2Olx0XHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTctXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz05Njk9c3RhdGljIHZvaWQgX19pbnRlbF9ndF9zZXRfd2VkZ2VkKHN0cnVjdCBpbnRlbF9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy05ODUtXHQgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6OTg2Olx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtOTg3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTIwNT12b2lkIGludGVsX2d0X3Jlc2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjM0Olx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTIzNS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTEyNTgtXHRpZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oXHUwMDI2Z3QtXHUwMDNldWMpKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjU5Olx0XHRpbnRlbF91Y19yZXNldF9wcmVwYXJlKFx1MDAyNmd0LVx1MDAzZXVjKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTI2MC1cdC8qXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYz0xMzMxPWludCBfX2ludGVsX2VuZ2luZV9yZXNldF9iaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTEzNDQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjEzNDU6XHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMzQ2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTQwND1zdGF0aWMgdm9pZCBpbnRlbF9ndF9yZXNldF9nbG9iYWwoc3RydWN0IGludGVsX2d0ICpndCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTE0NDItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjE0NDM6XHRcdFx0aW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNDQ0LVx0XHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM9MzE0PXN0YXRpYyB2b2lkIHhjc19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM6MzQxOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYz0xMTU0PXN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMTE2NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jOjExNjY6XHRlbmdpbmUtXHUwMDNlcmVzZXQucHJlcGFyZSA9IHJlc2V0X3ByZXBhcmU7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYy0xMTY3LVx0ZW5naW5lLVx1MDAzZXJlc2V0LnJld2luZCA9IHJlc2V0X3Jld2luZDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jPTI2Mj1zdGF0aWMgdm9pZCBtb2NrX3JlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTI4My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmM6Mjg0OnN0YXRpYyB2b2lkIG1vY2tfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTI4NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYz0zNDE9c3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYy0zNzItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jOjM3MzpcdGVuZ2luZS1cdTAwM2ViYXNlLnJlc2V0LnByZXBhcmUgPSBtb2NrX3Jlc2V0X3ByZXBhcmU7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3NC1cdGVuZ2luZS1cdTAwM2ViYXNlLnJlc2V0LnJld2luZCA9IG1vY2tfcmVzZXRfcmV3aW5kO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmM9MjYwPXN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldCh2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0yODAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jOjI4MTpcdFx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmMtMjgyLVx0XHRwLVx1MDAzZWNyaXRpY2FsX3NlY3Rpb25fYmVnaW4oKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaD01MzM9dm9pZCBpbnRlbF9ndWNfY29udGV4dF9iYW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaDo1MzU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzYtdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGludGVsX2VuZ2luZV9tYXNrX3Qgc3RhbGxlZCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xMDc3PXN0YXRpYyB2b2lkIHNjcnViX2d1Y19kZXNjX2Zvcl9vdXRzdGFuZGluZ19nMmgoc3RydWN0IGludGVsX2d1YyAqZ3VjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTEwNC1cdFx0ICogdG8gYmUgdmlzaWJsZSB0byBhbGwgY2FsbGVycyB3aG8gc2V0IHRoZSBiZWxvdyBmbGFncyAoc2VlIGFib3ZlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjExMDU6XHRcdCAqIGZsdXNoIGFuZCBmbHVzaGVzIGluIHJlc2V0X3ByZXBhcmUpLiBJZiBzdWJtaXNzaW9uX2Rpc2FibGVkKClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTEwNi1cdFx0ICogaXMgc2V0LCB0aGUgY2FsbGVyIHNob3VsZG4mIzM5O3Qgc2V0IHRoZXNlIGZsYWdzLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM9MTM5MT1zdGF0aWMgdm9pZCBndWNfY2FuY2VsX2J1c3luZXNzX3dvcmtlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI1LVx0ICogQW5kIG5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhIHJlc2V0IG9jY3VycmluZyBkdXJpbmcgZHJpdmVyIHVubG9hZFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYzoxNDI2Olx0ICogKHdlZGdlZF9vbl9maW5pKSwgc2tpcHBpbmcgdGhlIGNhbmNlbCBpbiByZXNldF9wcmVwYXJlL3Jlc2V0X2ZpbmkgKHdoZW4gdGhlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE0MjctXHQgKiByZXNldCBmbGFnL211dGV4IGFyZSBzZXQpIGlzIGZpbmUgYmVjYXVzZSB0aGVyZSBpcyBhbm90aGVyIGV4cGxpY2l0IGNhbmNlbCBpblxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM9MTcyMz1zdGF0aWMgdm9pZCBndWNfZmx1c2hfZGVzdHJveWVkX2NvbnRleHRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE3MjQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE3MjU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTcyNi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xNzc3PXN0YXRpYyB2b2lkIGd1Y19yZXNldF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBoZWFkLCBib29sIHNjcnViKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTgwMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM6MTgwMTpzdGF0aWMgdm9pZCBndWNfZW5naW5lX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xODAyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTQ1MzY9c3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTQ1NDgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjQ1NDk6XHRlbmdpbmUtXHUwMDNlcmVzZXQucHJlcGFyZSA9IGd1Y19lbmdpbmVfcmVzZXRfcHJlcGFyZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU1MC1cdGVuZ2luZS1cdTAwM2VyZXNldC5yZXdpbmQgPSBndWNfcmV3aW5kX25vcDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jPTU2OT1zdGF0aWMgdm9pZCBfX3VjX2ZpbmlfaHcoc3RydWN0IGludGVsX3VjICp1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4Mi0vKipcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NTgzOiAqIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUgLSBQcmVwYXJlIGZvciByZXNldFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy01ODQtICogQHVjOiB0aGUgaW50ZWxfdWMgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy01ODctICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjU4ODp2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTYwMi1cdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NjAzOlx0XHRpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTYwNC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oPTQ3PXZvaWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaDo0ODp2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1Yyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oLTQ5LXZvaWQgaW50ZWxfdWNfcmVzZXQoc3RydWN0IGludGVsX3VjICp1YywgaW50ZWxfZW5naW5lX21hc2tfdCBzdGFsbGVkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYz05ODI9dm9pZCB4ZV9ndF9yZXNldF9hc3luYyhzdHJ1Y3QgeGVfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk4OS1cdC8qIERvbiYjMzk7dCBkbyBhIHJlc2V0IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmM6OTkwOlx0aWYgKCF4ZV9mYXVsdF9ndF9yZXNldCgpIFx1MDAyNlx1MDAyNiB4ZV91Y19yZXNldF9wcmVwYXJlKFx1MDAyNmd0LVx1MDAzZXVjKSlcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk5MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYz0xNzAzPXZvaWQgeGVfZ3VjX3Nhbml0aXplKHN0cnVjdCB4ZV9ndWMgKmd1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcwOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYzoxNzEwOmludCB4ZV9ndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcxMS17XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM6MTcxMjpcdHJldHVybiB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xNzEzLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM9MTgyMD12b2lkIHhlX2d1Y19kZWNsYXJlX3dlZGdlZChzdHJ1Y3QgeGVfZ3VjICpndWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE4MjMtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmM6MTgyNDpcdHhlX2d1Y19yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTgyNS1cdHhlX2d1Y19jdF9zdG9wKFx1MDAyNmd1Yy1cdTAwM2VjdCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oPTU3PWludCB4ZV9ndWNfcHJpbnRfaW5mbyhzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmg6NTg6aW50IHhlX2d1Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmgtNTktdm9pZCB4ZV9ndWNfcmVzZXRfd2FpdChzdHJ1Y3QgeGVfZ3VjICpndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtNTEtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjUyOnN0YXRpYyBpbnQgZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MjQ0PXN0YXRpYyB2b2lkIGd1Y19zdWJtaXRfZmluaSh2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjItXHR4ZV9ndWNfY3Rfc3RvcChcdTAwMjZndWMtXHUwMDNlY3QpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjM6XHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjY0LVx0eGVfZ3VjX3NvZnRyZXNldChndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MTMyMT12b2lkIHhlX2d1Y19zdWJtaXRfd2VkZ2Uoc3RydWN0IHhlX2d1YyAqZ3VjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMTM0My1cdFx0LyogRm9yY2VmdWxseSBraWxsIGFueSByZW1haW5pbmcgZXhlYyBxdWV1ZXMsIHNpZ25hbCBmZW5jZXMgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MTM0NDpcdFx0Z3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTEzNDUtXHRcdHhlX2d1Y19zdWJtaXRfc3RvcChndWMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM9MjU2MT1zdGF0aWMgdm9pZCBndWNfZXhlY19xdWV1ZV9zdG9wKHN0cnVjdCB4ZV9ndWMgKmd1Yywgc3RydWN0IHhlX2V4ZWNfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjEyLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjEzOnN0YXRpYyBpbnQgZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1YylcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYxNC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMwLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYzoyNjMxOmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2MzgtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2Mzk6XHRyZXR1cm4gZ3VjX3N1Ym1pdF9yZXNldF9wcmVwYXJlKGd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2NDAtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0Lmg9MTc9dm9pZCB4ZV9ndWNfc3VibWl0X2Rpc2FibGUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmgtMTgtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oOjE5OmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmgtMjAtdm9pZCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3dhaXQoc3RydWN0IHhlX2d1YyAqZ3VjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0xODI9aW50IHhlX3VjX2xvYWRfaHcoc3RydWN0IHhlX3VjICp1Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yMzUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYzoyMzY6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1YylcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTIzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjQxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmM6MjQyOlx0cmV0dXJuIHhlX2d1Y19yZXNldF9wcmVwYXJlKFx1MDAyNnVjLVx1MDAzZWd1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNDMtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jPTI2OT1zdGF0aWMgdm9pZCB1Y19yZXNldF93YWl0KHN0cnVjdCB4ZV91YyAqdWMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjc1LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmM6Mjc2Olx0cmV0ID0geGVfdWNfcmVzZXRfcHJlcGFyZSh1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oPTE0PWludCB4ZV91Y19sb2FkX2h3KHN0cnVjdCB4ZV91YyAqdWMpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmg6MTU6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1Yyk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuaC0xNi12b2lkIHhlX3VjX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV91YyAqdWMpO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jPTY5OT1zdGF0aWMgdm9pZCBpcHU2X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtNzIxLVxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmM6NzIyOnN0YXRpYyB2b2lkIGlwdTZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYy03MjMte1xuLS1cbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jPTgxNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBwY2lfZXJyX2hhbmRsZXJzID0ge1xuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmM6ODE3Olx0LnJlc2V0X3ByZXBhcmUgPSBpcHU2X3BjaV9yZXNldF9wcmVwYXJlLFxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtODE4LVx0LnJlc2V0X2RvbmUgPSBpcHU2X3BjaV9yZXNldF9kb25lLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9wZHNfY29yZS9jb3JlLmM9NjM3PXN0YXRpYyB2b2lkIHBkc2NfY2hlY2tfcGNpX2hlYWx0aChzdHJ1Y3QgcGRzYyAqcGRzYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9wZHNfY29yZS9jb3JlLmM6NjUxOlx0LyogcHJldmVudCBkZWFkbG9jayBiZXR3ZWVuIHBkc2NfcmVzZXRfcHJlcGFyZSBhbmQgcGRzY19oZWFsdGhfdGhyZWFkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1Mi1cdHF1ZXVlX3dvcmsocGRzYy1cdTAwM2V3cSwgXHUwMDI2cGRzYy1cdTAwM2VwY2lfcmVzZXRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYz00ODU9c3RhdGljIHZvaWQgcGRzY19yZXN0YXJ0X2hlYWx0aF90aHJlYWQoc3RydWN0IHBkc2MgKnBkc2MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jOjQ5ODpzdGF0aWMgdm9pZCBwZHNjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jLTQ5OS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5ODIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoZSB2aXJ0aW8gc3Vic3lzdGVtOgoKKipJbnZlc3RpZ2F0aW5nIHZpcnRpbyBSZXNldCBQcmVwYXJhdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSB2aXJ0aW8gZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8ganVzdCBqdW1wIGludG8gdGhlIGBkcml2ZXJzL3ZpcnRpby9gIGRpcmVjdG9yeSDigJMgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29yZSBkcml2ZXIgY29kZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBgIGhlcmUsIGVmZmljaWVudGx5LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGEgZmV3IHZhcmlhdGlvbnMgdG8gY292ZXIgbXkgYmFzZXMuIEZpcnN0LCBJJiMzOTtsbCBzZWFyY2ggZm9yIGRpcmVjdCBpbnZvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzbyBqdXN0IHBsYWluIGByZXNldF9wcmVwYXJlYC4gVGhlbiwgSSYjMzk7bGwgY2hlY2sgZm9yIHJlZmVyZW5jZXMgdGhyb3VnaCB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgdGFyZ2V0aW5nIGAtJmd0O3Jlc2V0X3ByZXBhcmVgLiBBbmQgZmluYWxseSwganVzdCBpbiBjYXNlLCBJJiMzOTtsbCBhbHNvIHRyeSBgZHJ2LSZndDtyZXNldF9wcmVwYXJlYCwgdG8gYmUgZXh0cmEgc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLCBjb25zaWRlcmluZyBwb3RlbnRpYWwgY29kaW5nIHN0eWxlcyBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlcnMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBwaWN0dXJlIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gZ2V0IGdyZXBwaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNldF9wcmVwYXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvLmM9Njk1PUVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfcmVzdG9yZSk7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk3LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6Njk4OmludCB2aXJ0aW9fZGV2aWNlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY5OS17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzAyLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzAzOlx0aWYgKCFkcnYgfHwgIWRydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA0LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA5LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzEwOlx0cmV0ID0gZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTcxMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTctfVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NzE4OkVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTktXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz03NzE9c3RhdGljIGludCB2aXJ0aW9fcGNpX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgaW50IG51bV92ZnMpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy03OTctXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjc5ODpzdGF0aWMgdm9pZCB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTc5OS17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MDItXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgwMzpcdHJldCA9IHZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZShcdTAwMjZ2cF9kZXYtXHUwMDNldmRldik7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgwNC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTgzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2aXJ0aW9fcGNpX2Vycl9oYW5kbGVyID0ge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo4MzQ6XHQucmVzZXRfcHJlcGFyZSAgPSB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgzNS1cdC5yZXNldF9kb25lICAgICA9IHZpcnRpb19wY2lfcmVzZXRfZG9uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MzAKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBOYW1pbmcgQ29udmVudGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBmcmVlemluZy91bmZyZWV6aW5nIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGNvZGUuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gYHZpcnRibGtfZnJlZXplX3ByaXZgIGFuZCBpdHMgcG90ZW50aWFsIGNvdW50ZXJwYXJ0cywgYnV0IEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBjYXB0dXJpbmcgYWxsIHZhcmlhdGlvbnMuIFRoZXJlZm9yZSwgSSB3YW50IHRvIGV4cGxvcmUgb3RoZXIgbmFtaW5nIGNvbnZlbnRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSYjMzk7bGwgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaC4gTGV0JiMzOTtzIHNlZSwgd2hhdCBlbHNlIGNvdWxkIGl0IGJlIGNhbGxlZC4uLgoKT2theSwgSSYjMzk7bSB0aGlua2luZyBvZiBvdGhlciBwb3RlbnRpYWwgY29udmVudGlvbnMgc3VjaCBhcyBgdmlydGJsa19mcmVlemVgIG9yIGB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZWAgYXMgcG9zc2libGUgbmFtaW5nIGFsdGVybmF0aXZlcyBmb3Igc2ltaWxhciBmdW5jdGlvbnMuIFRpbWUgdG8gZ2V0IHRoZSBncmVwIGNvbW1hbmQgcnVubmluZyB0byBzd2VlcCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYHZpcnRpb19kZXZpY2VfZnJlZXplYCBhbmQgYHZpcnRibGtfZnJlZXplYC4gSSBuZWVkIHRvIGNvdmVyIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBhY3Jvc3MgdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWV6ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpby5jPTYxMz1zdGF0aWMgaW50IHZpcnRpb19kZXZpY2VfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYsIGJvb2wgcmVzdG9yZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02MjQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo2MjU6XHQvKiBNYXliZSBkcml2ZXIgZmFpbGVkIGJlZm9yZSBmcmVlemUuXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02MjYtXHQgKiBSZXN0b3JlIHRoZSBmYWlsZWQgc3RhdHVzLCBmb3IgZGVidWdnaW5nLiAqL1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY2OS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo2NzA6aW50IHZpcnRpb19kZXZpY2VfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NzEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY3OC1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3OTpcdGlmIChkcnYgXHUwMDI2XHUwMDI2IGRydi1cdTAwM2VmcmVlemUpIHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY4MDpcdFx0cmV0ID0gZHJ2LVx1MDAzZWZyZWV6ZShkZXYpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjgxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjg4LX1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY4OTpFWFBPUlRfU1lNQk9MX0dQTCh2aXJ0aW9fZGV2aWNlX2ZyZWV6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02OTAtXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYz0xMTQzPXN0YXRpYyB2b2lkIHZpcnRiYWxsb29uX3NodXRkb3duKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMtMTE0OS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jOjExNTA6c3RhdGljIGludCB2aXJ0YmFsbG9vbl9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNTEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM9MTIxMT1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JhbGxvb25fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMtMTIyMS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jOjEyMjI6XHQuZnJlZXplXHQ9XHR2aXJ0YmFsbG9vbl9mcmVlemUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjMtXHQucmVzdG9yZSA9XHR2aXJ0YmFsbG9vbl9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jPTM0Nz1zdGF0aWMgdm9pZCB2aXJ0aW5wdXRfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jLTM2Ni0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYzozNjc6c3RhdGljIGludCB2aXJ0aW5wdXRfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtMzY4LXtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYz00MDg9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19pbnB1dF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jOjQxNjpcdC5mcmVlemVcdCAgICAgICAgICAgICA9IHZpcnRpbnB1dF9mcmVlemUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYy00MTctXHQucmVzdG9yZSAgICAgICAgICAgICA9IHZpcnRpbnB1dF9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0zMDc2PXN0YXRpYyB2b2lkIHZpcnRpb19tZW1fY29uZmlnX2NoYW5nZWQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODctI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjMwODg6c3RhdGljIGludCB2aXJ0aW9fbWVtX2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0zMDg5LXtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MzE0MD1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX21lbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNDgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjMxNDk6XHQuZnJlZXplXHQ9XHR2aXJ0aW9fbWVtX2ZyZWV6ZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0zMTUwLVx0LnJlc3RvcmUgPVx0dmlydGlvX21lbV9yZXN0b3JlLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX21taW9fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU1NS0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU1NjpzdGF0aWMgaW50IHZpcnRpb19tbWlvX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU1Ny17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU2MDpcdHJldHVybiB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZShcdTAwMjZ2bV9kZXYtXHUwMDNldmRldik7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jLTU2MS19XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYz01NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHZpcnRpb19tbWlvX3BtX29wcyA9IHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM6NTc0Olx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFModmlydGlvX21taW9fZnJlZXplLCB2aXJ0aW9fbW1pb19yZXN0b3JlKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NzUtfTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU4NT1jb25zdCBzdHJ1Y3QgY3B1bWFzayAqdnBfZ2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01OTgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1OTk6c3RhdGljIGludCB2aXJ0aW9fcGNpX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTYwMC17XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjYwNTpcdHJldCA9IHZpcnRpb19kZXZpY2VfZnJlZXplKFx1MDAyNnZwX2Rldi1cdTAwM2V2ZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjA2LVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NjQzPXN0YXRpYyBpbnQgdmlydGlvX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjQ0LXtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjQ1Olx0cmV0dXJuIHZwX3N1cHBvcnRzX3BtX25vX3Jlc2V0KGRldikgPyAwIDogdmlydGlvX3BjaV9mcmVlemUoZGV2KTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjQ2LX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTY1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgdmlydGlvX3BjaV9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTUtXHQucmVzdW1lID0gdmlydGlvX3BjaV9yZXN1bWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1NjpcdC5mcmVlemUgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNjU3LVx0LnRoYXcgPSB2aXJ0aW9fcGNpX3Jlc3RvcmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1ODpcdC5wb3dlcm9mZiA9IHZpcnRpb19wY2lfZnJlZXplLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTktXHQucmVzdG9yZSA9IHZpcnRpb19wY2lfcmVzdG9yZSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jPTEzMzc9c3RhdGljIHZvaWQgdmlvcnRjX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDMtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjEzNDQ6c3RhdGljIGludCB2aW9ydGNfZnJlZXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDUte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM9MTQwND1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX3J0Y19kcnYgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xNDEwLVx0LnJlbW92ZSA9IHZpb3J0Y19yZW1vdmUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjE0MTE6XHQuZnJlZXplID0gcG1fc2xlZXBfcHRyKHZpb3J0Y19mcmVlemUpLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xNDEyLVx0LnJlc3RvcmUgPSBwbV9zbGVlcF9wdHIodmlvcnRjX3Jlc3RvcmUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIgRnJlZXplIE9wZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdmlydGlvX2Jsa2AgY29kZSwgd2hpY2gsIGFzIHdlIGtub3csIGlzIHRoZSB3b3JraG9yc2UgZHJpdmVyIGZvciBibG9jayBkZXZpY2VzIGluIHZpcnRpbyBlbnZpcm9ubWVudHMuIEl0JiMzOTtzIG9mdGVuIHRoZSByb290IGRpc2sgb3IgaGFuZGxlcyB0aG9zZSBzZWNvbmRhcnkgYmxvY2sgZGV2aWNlcyBpbiBRRU1VL0tWTSBzZXR1cHMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBjaGFuZ2UgaW4gYHZpcnRibGtfZnJlZXplX3ByaXZgIGFuZCBpdCYjMzk7cyBtYWtpbmcgbWUgdGhpbmsuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgZm9yIGBibGtfbXFfcXVpZXNjZV9xdWV1ZWAuIEludGVyZXN0aW5nLiBJIGtub3cgdGhlIGdlbmVyYWwgaWRlYSBoZXJlIGlzIHRvIGVuc3VyZSBubyBJL08gaXMgYWN0aXZlIGJlZm9yZSBkZWxldGluZyB0aGUgdmlydHF1ZXVlcyBkdXJpbmcgdGhlIGZyZWV6ZSBvcGVyYXRpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXkgZnJlZXplIHRoZSBxdWV1ZSwgcXVpZXNjZSBpdCwgYW5kIHRoZW4gdW5mcmVlemUgaXQuIFNlZW1zIHN0YW5kYXJkLgoKQnV0IHRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscy4gV2hhdCYjMzk7cyB0aGUgZnVuZGFtZW50YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3F1aWVzY2VfcXVldWVgPyBJcyB0aGlzIGEgc3VidGxlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgYSBidWcgZml4PyBUaGUgYG5vd2FpdGAgdmVyc2lvbiBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIG5vdCBibG9jaywgYnV0IHdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhhdCBoYXZlIGhlcmU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGdldCB0byB0aGUgc291cmNlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xuLS1cbmJsb2NrL2Jsay1tcS5jLTI2MC0gKi9cbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XG4tLVxuYmxvY2svYmxrLW1xLmM9Mjg4PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSk7XG4tLVxuYmxvY2svYmxrLW1xLmMtMjk4LSAqL1xuYmxvY2svYmxrLW1xLmM6Mjk5OnZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG5ibG9jay9ibGstbXEuYy0zMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCB0aGUgYXVkaWVuY2UgaXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBibGstbXEuYzogVGhlIEhlYXJ0IG9mIElPIFF1ZXVpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciBsaW5lcyAyNjAgdG8gMzEwIG9mIGBibG9jay9ibGstbXEuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb3JlIG9mIHRoaXMgbXVsdGktcXVldWUgYmxvY2sgbGF5ZXIgaXMgd29ya2luZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbWVjaGFuaWNzIG9mIGhvdyByZXF1ZXN0cyBhcmUgaGFuZGxlZCB3aXRoaW4gYSBxdWV1ZSBjb250ZXh0LiBJJiMzOTttIGxvb2tpbmcgZm9yIHdoZXJlIHJlcXVlc3RzIGFyZSBlbnF1ZXVlZCwgd2hlcmUgdGhleSYjMzk7cmUgZGVxdWV1ZWQsIGhvdyB0aGVpciBsaWZlY3ljbGUgaXMgbWFuYWdlZC4gSeKAmW0gdGhpbmtpbmcgdGhpcyBzZWN0aW9uIHdpbGwgY292ZXIgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBsb2dpYyBiZWhpbmQgcmVxdWVzdCBzdWJtaXNzaW9uIGFuZCBjb21wbGV0aW9uLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIGlsbHVtaW5hdGUgYW55IHN1YnRsZXRpZXMgaW4gaG93IGJsay1tcSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5kaXZpZHVhbCBoYXJkd2FyZSBxdWV1ZXMuIFVsdGltYXRlbHksIEkmIzM5O20gYWltaW5nIHRvIGJ1aWxkIGEgZGVlcGVyIG1lbnRhbCBtb2RlbCBvZiBob3cgZGF0YSBtb3ZlcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGRvd24gdG8gdGhlIHN0b3JhZ2UgZGV2aWNlIHdpdGggYmxrLW1xLiBJJiMzOTtsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGUgY29kZSBoYW5kbGVzIGRpZmZlcmVudCByZXF1ZXN0IHByaW9yaXRpZXMgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgcXVldWVzIHRvIGVuc3VyZSBvcHRpbWFsIHBhcmFsbGVsaXNtIGFuZCBtaW5pbWFsIGxhdGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdCAqL1xuIDI2MTpcdHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxuIDI2MjpcdHtcbiAyNjM6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMjY0Olx0XG4gMjY1Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbiAyNjY6XHRcdGlmICghcS1cdTAwM2VxdWllc2NlX2RlcHRoJiM0MzsmIzQzOylcbiAyNjc6XHRcdFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xuIDI2ODpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbiAyNjk6XHR9XG4gMjcwOlx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcbiAyNzE6XHRcbiAyNzI6XHQvKipcbiAyNzM6XHQgKiBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAtIHdhaXQgdW50aWwgaW4tcHJvZ3Jlc3MgcXVpZXNjZSBpcyBkb25lXG4gMjc0Olx0ICogQHNldDogdGFnX3NldCB0byB3YWl0IG9uXG4gMjc1Olx0ICpcbiAyNzY6XHQgKiBOb3RlOiBpdCBpcyBkcml2ZXImIzM5O3MgcmVzcG9uc2liaWxpdHkgZm9yIG1ha2luZyBzdXJlIHRoYXQgcXVpZXNjZSBoYXNcbiAyNzc6XHQgKiBiZWVuIHN0YXJ0ZWQgb24gb3IgbW9yZSBvZiB0aGUgcmVxdWVzdF9xdWV1ZXMgb2YgdGhlIHRhZ19zZXQuICBUaGlzXG4gMjc4Olx0ICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcbiAyNzk6XHQgKiB0aGUgcXVpZXNjZSBmbGFnIHNldCB1c2luZyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQuXG4gMjgwOlx0ICovXG4gMjgxOlx0dm9pZCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG4gMjgyOlx0e1xuIDI4MzpcdFx0aWYgKHNldC1cdTAwM2VmbGFncyBcdTAwMjYgQkxLX01RX0ZfQkxPQ0tJTkcpXG4gMjg0Olx0XHRcdHN5bmNocm9uaXplX3NyY3Uoc2V0LVx1MDAzZXNyY3UpO1xuIDI4NTpcdFx0ZWxzZVxuIDI4NjpcdFx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiAyODc6XHR9XG4gMjg4Olx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKTtcbiAyODk6XHRcbiAyOTA6XHQvKipcbiAyOTE6XHQgKiBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIC0gd2FpdCB1bnRpbCBhbGwgb25nb2luZyBkaXNwYXRjaGVzIGhhdmUgZmluaXNoZWRcbiAyOTI6XHQgKiBAcTogcmVxdWVzdCBxdWV1ZS5cbiAyOTM6XHQgKlxuIDI5NDpcdCAqIE5vdGU6IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcHJldmVudCB0aGF0IHRoZSBzdHJ1Y3QgcmVxdWVzdCBlbmRfaW8oKVxuIDI5NTpcdCAqIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGludm9rZWQuIE9uY2UgdGhpcyBmdW5jdGlvbiBpcyByZXR1cm5lZCwgd2UgbWFrZVxuIDI5NjpcdCAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcbiAyOTc6XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkuXG4gMjk4Olx0ICovXG4gMjk5Olx0dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiAzMDA6XHR7XG4gMzAxOlx0XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XG4gMzAyOlx0XHQvKiBub3RoaW5nIHRvIHdhaXQgZm9yIG5vbi1tcSBxdWV1ZXMgKi9cbiAzMDM6XHRcdGlmIChxdWV1ZV9pc19tcShxKSlcbiAzMDQ6XHRcdFx0YmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKHEtXHUwMDNldGFnX3NldCk7XG4gMzA1Olx0fVxuIDMwNjpcdEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlKTtcbiAzMDc6XHRcbiAzMDg6XHQvKlxuIDMwOTpcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSAtIGNvdW50ZXJwYXJ0IG9mIGJsa19tcV9xdWllc2NlX3F1ZXVlKClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXg6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIGJ1ZyByZWxhdGVkIHRvIHRoZSBkZWxldGlvbiBvZiB2aXJ0cXVldWVzIGluIHRoZSBgdmlydGJsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHN1c3BlbmQsIGhpYmVybmF0ZSwgb3IgZGV2aWNlIHJlc2V0LiBUaGUga2V5IGlzIGluIGhvdyBgYmxrX21xX3F1aWVzY2VfcXVldWVgIGludGVyYWN0cyB3aXRoIHRoZSBSQ1UgbWVjaGFuaXNtLiBCZWZvcmUsIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIHdhcyB1c2VkLCB3aGljaCBkaWRuJiMzOTt0IHdhaXQgZm9yIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHZpYSBgc3luY2hyb25pemVfcmN1YCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvbmdvaW5nIGRpc3BhdGNoZXMgYWNjZXNzaW5nIGRlbGV0ZWQgdmlydHF1ZXVlcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gc2NlbmFyaW8sIHF1aXRlIG5hc3R5LiBUaGlzIGNvZGUgd2FzIGNoYW5nZWQgdG8gYWRkcmVzcyB0aGF0LCBhbmQgbm93IGNhbGxzIGBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmVgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYC4KCk15IG1pbmQgaXMgbm93IHJhY2luZyB0b3dhcmRzIHJlYWNoYWJpbGl0eSBhbmQgZnV6emFiaWxpdHkuIExldCYjMzk7cyBzZWUuLi4gYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLiBJdCB1c2VzIGBibGtfbXFfZnJlZXplX3F1ZXVlYCwgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCwgYW5kIGBibGtfbXFfdW5mcmVlemVfcXVldWVgLiBPa2F5LCB3aGVuIGlzIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBjYWxsZWQ/IFRoZXJlIGFyZSB0d28ga2V5IGVudHJ5IHBvaW50czogYHZpcnRibGtfZnJlZXplYCBhbmQgYHZpcnRibGtfcmVzZXRfcHJlcGFyZWAuIE5vdywgYHZpcnRibGtfZnJlZXplYCBnZXRzIGNhbGxlZCBkdXJpbmcgUE0gb3BlcmF0aW9ucyBsaWtlIHNsZWVwLCBoaWJlcm5hdGUsIHN1c3BlbmQsIHRyaWdnZXJlZCB2aWEgYC9zeXMvcG93ZXIvc3RhdGVgLiBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBpcyByZWxhdGVkIHRvIHZpcnRpbyByZXNldHMgb3Igb3RoZXIgcmVzZXQgc2NlbmFyaW9zLCBsaWtlIFBDSSBvciBTUi1JT1YuCgpUaGUgYmlnIHF1ZXN0aW9uIG5vdzogY2FuIHRoZXNlIHRyaWdnZXJzIGJlIHJlYWNoZWQgaW4gYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXI/IEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGRvZXMgZXhlY3V0ZSBwb3dlciBtYW5hZ2VtZW50LXJlbGF0ZWQgc3lzY2FsbHMgYW5kIHN5c2ZzIHdyaXRlcy4gSXQgZG9lcyB0aGluZ3MgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgd3JpdGUgdG8gYC9zeXMvcG93ZXIvc3RhdGVgLCBhbmQgY2FuIGRvIHN1c3BlbmQvcmVzdW1lIGN5Y2xlcywgaW9jdGxzLCB2aXJ0aW8gcmVzZXRzLiBUaGF0JiMzOTtzIGdvb2QhCgpOZXh0LCBpcyBgdmlydGlvX2Jsa2AgcmVhY2hhYmxlPyBZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHZpcnRpbyBibG9jayBkcml2ZXIgKGBDT05GSUdfVklSVElPX0JMS2ApLiBUaGF0IHNob3VsZCBiZSBwcmVzZW50IGluIG1vc3Qgc3lzdGVtcyBhbmQgdGVzdCBjb25maWd1cmF0aW9ucy4gRmluYWxseSwgSSBzaG91bGQgY2hlY2sgdGhhdCBgQ09ORklHX1BNX1NMRUVQYCBpcyBlbmFibGVkLCB3aGljaCBpdCBzZWVtcyB0byBiZSBpbiBtb3N0IGtlcm5lbHMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgVklSVElPX0JMS2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLiBJIG5lZWQgdG8ga25vdyBhbGwgdGhlIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZC4gSXQgc2VlbXMgbGlrZSBpdCBpcyBhIHZlcnkgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUSU9fQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjg2PWNvbmZpZyBYRU5fQkxLREVWX0JBQ0tFTkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzA2LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMwNzpjb25maWcgVklSVElPX0JMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwOC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBCbG9jayBEcml2ZXIgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIGFnYWluLiBJIHJlY2FsbCBzb21ldGhpbmcgc3BlY2lmaWMsIGFyb3VuZCBsaW5lIDMwNy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBibG9jayBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgd2hhdGV2ZXImIzM5O3MgYmVpbmcgc2V0IHVwIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGJsb2NrIHN1YnN5c3RlbS4gSSB3YW50IHRvIHNlZSBpZiBhbnkgZmxhZ3Mgb3Igc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkIHRoYXQgY291bGQgYWZmZWN0IHJlY2VudCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgaXNzdWVzIEnigJl2ZSBiZWVuIGxvb2tpbmcgYXQuIFRoaXMgc3BlY2lmaWMgbG9jYXRpb24gKnNob3VsZCogaGF2ZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgSSYjMzk7bSBhZnRlciwgYW5kIGhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgYW5zd2VycyBJIG5lZWQgdG8gbW92ZSBmb3J3YXJkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwNTpcdFxuIDMwNjpcdFxuIDMwNzpcdGNvbmZpZyBWSVJUSU9fQkxLXG4gMzA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG4gMzA5Olx0XHRkZXBlbmRzIG9uIFZJUlRJT1xuIDMxMDpcdFx0c2VsZWN0IFNHX1BPT0xcbiAzMTE6XHRcdGhlbHBcbiAzMTI6XHRcdCAgVGhpcyBpcyB0aGUgdmlydHVhbCBibG9jayBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcbiAzMTM6XHQgICAgICAgICAgUUVNVSBiYXNlZCBWTU1zIChsaWtlIEtWTSBvciBYZW4pLiAgU2F5IFkgb3IgTS5cbiAzMTQ6XHRcbiAzMTU6XHRjb25maWcgQkxLX0RFVl9SQkRcbiAzMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JhZG9zIGJsb2NrIGRldmljZSAoUkJEKVwmIzM0O1xuIDMxNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuIDMxODpcdFx0c2VsZWN0IENFUEhfTElCXG4gMzE5Olx0XHRoZWxwXG4gMzIwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgaW5jbHVkZSB0aGUgUmFkb3MgYmxvY2sgZGV2aWNlLCB3aGljaCBzdHJpcGVzXG4gMzIxOlx0XHQgIGEgYmxvY2sgZGV2aWNlIG92ZXIgb2JqZWN0cyBzdG9yZWQgaW4gdGhlIENlcGggZGlzdHJpYnV0ZWQgb2JqZWN0XG4gMzIyOlx0XHQgIHN0b3JlLlxuIDMyMzpcdFxuIDMyNDpcdFx0ICBNb3JlIGluZm9ybWF0aW9uIGF0IGh0dHA6Ly9jZXBoLm5ld2RyZWFtLm5ldC8uXG4gMzI1Olx0XG4gMzI2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMzI3Olx0XG4gMzI4Olx0Y29uZmlnIEJMS19ERVZfVUJMS1xuIDMyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTkyMwoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAxMDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFBhdGNoIEFwcGxpY2FiaWxpdHkgdG8gRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjaGVja2luZyBTZWN0aW9uIDIgYW5kIFNlY3Rpb24gMyBvZiB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi4gIFNlY3Rpb24gMiBsYXlzIG91dCAqbmVnYXRpdmUqIGNyaXRlcmlhIOKAkyBzY2VuYXJpb3Mgd2hlcmUgZnV6emluZyBpc24mIzM5O3Qgd29ydGh3aGlsZS4gIEl0IGhpZ2hsaWdodHMgdGhpbmdzIGxpa2Ugbm9uLWtlcm5lbCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgaW5hY2Nlc3NpYmxlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGtleSBoZXJlIGlzIHRvIHZlcmlmeSB3aGV0aGVyIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBmYWxscyBpbnRvIGFueSBvZiB0aG9zZSAmIzM0O3VucmVhY2hhYmxlJiMzNDsgY2F0ZWdvcmllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXTigJlzIGRlZmluaXRlbHkgKm5vdCogY2FsbGVkIGJ5IGB2aXJ0YmxrX3JlbW92ZWAsIHNvIEkgY2FuIGlnbm9yZSBpdHMgb3duIGxvZ2ljLiBJbnN0ZWFkLCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkIGJ5IGB2aXJ0YmxrX2ZyZWV6ZWAgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLgoKQWxyaWdodCwgYSBkZWVwZXIgZGl2ZTogYHZpcnRibGtfZnJlZXplYCBpcyByZWxhdGVkIHRvIHBvd2VyIG1hbmFnZW1lbnQgLSB0aGluayBQTSBzbGVlcCwgaGliZXJuYXRpb24sIGFuZCBzdXNwZW5kLiBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBpcyByZWxhdGVkIHRvIGRldmljZSByZXNldCwgdHJpZ2dlcmVkIGluIGRpZmZlcmVudCB3YXlzLCBpbmNsdWRpbmcgY2FsbHMgdmlhIGB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmVgLiBDcnVjaWFsbHksIHRoZXNlIHNsZWVwL2ZyZWV6ZSBzdGF0ZXMgY2FuIGJlICppbml0aWF0ZWQgZnJvbSB1c2Vyc3BhY2UqIHZpYSBzeXNmcyBlbnRyaWVzIGxpa2UgYC9zeXMvcG93ZXIvc3RhdGVgLiBHaXZlbiB0aGF0IGB2aXJ0aW9fYmxrYCBpcyBhIHZpcnR1YWxpemVkIGRyaXZlciBjb21tb24gaW4gS1ZNL1FFTVUgZW52aXJvbm1lbnRzLCBhbmQgdGhpcyBpcyB3aGVyZSBzeXprYWxsZXIgaXMgbm9ybWFsbHkgb3BlcmF0aW5nLCB0aGlzIHNob3VsZCBiZSByZWFjaGFibGUuCgpTZWN0aW9uIDMgZnVydGhlciBzdXBwb3J0cyB0aGlzIC0gSSBtdXN0IGFsc28gY2hlY2sgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzL2Fzc2VydGlvbnMgb3IgcmVhY2hhYmxlIGNvZGUuICBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcXVldWUgcXVpZXNjaW5nIGJlaGF2aW9yIC0gZnJvbSBhIG5vbi1ibG9ja2luZyBvcGVyYXRpb24gKGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgKSB0byBhIGJsb2NraW5nIG9uZSAoYGJsa19tcV9xdWllc2NlX3F1ZXVlYCkuICBUaGF0IGltcGxpZXMgYSBjaGFuZ2UgaW4gbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIHNlbWFudGljcyBkdXJpbmcgZnJlZXplL3Jlc2V0IGZvciB2aXJ0aW9fYmxrIGRldmljZXMuCgpOb3csIGxldCYjMzk7cyBsaXN0IHRoZSBrZXkgc3ltYm9scyBhZmZlY3RlZC4gVGhpcyBwYXRjaCBhbHRlcnM6IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCwgYHZpcnRibGtfZnJlZXplYCwgYHZpcnRibGtfcmVzZXRfcHJlcGFyZWAsIGB2aXJ0YmxrX3Jlc3RvcmVfcHJpdmAsIGB2aXJ0YmxrX3Jlc3RvcmVgLCBhbmQgYHZpcnRibGtfcmVzZXRfZG9uZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYy4KCkNoZWNraW5nIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AsIEkgY2FuIHNlZSB0aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCwgYHZpcnRibGtfZnJlZXplYCwgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGFyZSBhbGwgKnN0YXRpYyouICBIb3dldmVyLCB3aGlsZSB0aGV5IGFyZSBgc3RhdGljYCwgdGhleSYjMzk7cmUgc3RpbGwgc3ltYm9scyB3aXRoaW4gYHZpcnRpb19ibGsub2AuICBJIGFsc28ga25vdyB0aGF0ICBgdmlydGlvX2RldmljZV9mcmVlemVgIGFuZCBgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlYCBhcmUgaW4gYGRyaXZlcnMvdmlydGlvL3ZpcnRpby5jYCwgYW5kIHNvIHRob3NlIHdpbGwgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50czogYFZJUlRJT19CTEtgLCBgVklSVElPYCwgYW5kIGBQTV9TTEVFUGAgYXJlIGVzc2VudGlhbC4KCkZpbmFsbHksIEkgY2FuIGNvbmZpZGVudGx5IHZlcmlmeSB0aGUgcmVxdWlyZW1lbnRzOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlIChiZWNhdXNlIHdlJiMzOTt2ZSBlc3RhYmxpc2hlZCByZWFjaGFiaWxpdHkpLgoyLiAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDt2aXJ0YmxrX2ZyZWV6ZV9wcml2JiMzNDssICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywgJiMzNDt2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUmIzM0OywgJiMzNDt2aXJ0aW9fZGV2aWNlX2ZyZWV6ZSYjMzQ7LCAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7XWAgKHN5bWJvbHMgcmVsZXZhbnQgdG8gZnJlZXplL3Jlc2V0KS4KMy4gIGBFbmFibGVDb25maWdzYDogYFsmIzM0O1ZJUlRJT19CTEsmIzM0OywgJiMzNDtWSVJUSU8mIzM0OywgJiMzNDtQTV9TTEVFUCYjMzQ7XWAgKG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucykuCjQuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIHZpcnRpby1ibGsgcXVldWUgcXVpZXNjaW5nIGR1cmluZyBmcmVlemUvcmVzZXQsIG1ha2luZyB0aGUgcXVpZXNjaW5nIHN5bmNocm9ub3VzIGluc3RlYWQgb2YgYXN5bmNocm9ub3VzLCB3aGljaCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGR1cmluZyBQTSBhbmQgZGV2aWNlIHJlc2V0LgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fQkxLJiMzNDssCiAgICAmIzM0O1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtQTV9TTEVFUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRibGtfZnJlZXplX3ByaXYmIzM0OywKICAgICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGJsa19yZXNldF9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfZnJlZXplJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUSU9fQkxLJiMzNDssCiAgICAmIzM0O1ZJUlRJTyYjMzQ7LAogICAgJiMzNDtQTV9TTEVFUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRibGtfZnJlZXplX3ByaXYmIzM0OywKICAgICYjMzQ7dmlydGJsa19mcmVlemUmIzM0OywKICAgICYjMzQ7dmlydGJsa19yZXNldF9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfZnJlZXplJiMzNDssCiAgICAmIzM0O3ZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpIHRvIHRoZSBzeW5jaHJvbm91cyBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpIGR1cmluZyB2aXJ0aW9fYmxrIGRldmljZSBmcmVlemUgYW5kIHJlc2V0IHByZXBhcmF0aW9uLCBlbnN1cmluZyB0aGF0IFJDVSBncmFjZSBwZXJpb2RzIGFuZCBpbi1mbGlnaHQgZGlzcGF0Y2hlcyBjb21wbGV0ZSBiZWZvcmUgdmlydHF1ZXVlcyBhcmUgZGVsZXRlZC4gVGhpcyB0b3VjaGVzIHJlYWNoYWJsZSBwb3dlciBtYW5hZ2VtZW50IGFuZCByZXNldCBwYXRocyBmb3IgdmlydGlvIGJsb2NrIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE4OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWU1YWRkZjIwOTcyMmFkNGMxYTUzMWNjZDY2Zjc2OTBlOTNlYTZkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwppbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwpAQCAtMTU5NSw3ICYjNDM7MTU5NSw3IEBAIHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKIAogCS8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovCiAJbWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpOwotCWJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTsKJiM0MzsJYmxrX21xX3F1aWVzY2VfcXVldWUocSk7CiAJYmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTsKIAogCS8qIEVuc3VyZSB3ZSBkb24mIzM5O3QgcmVjZWl2ZSBhbnkgbW9yZSBpbnRlcnJ1cHRzICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIHZzLiBLQVNBTiBGdXp6aW5nIERlY2lzaW9uIGZvciBgdmlydGlvX2Jsay5jYCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgdXNlciB3YW50cyBtZSB0byBkZWNpZGUgaWYgd2UgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jYCBvciBpZiBLQVNBTiBpcyBzdWZmaWNpZW50LiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKTXkgaW5pdGlhbCByaXNrIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBsb29rcyBsaWtlIGEgdGVzdGluZy9RQSByZWxhdGVkIHBhdGNoLCBhbmQgdGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgYmVuaWduLiBUaGUgdXNlciBpcyBlc3NlbnRpYWxseSBhc2tpbmcgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuIEkgdGhpbmsgdGhpcyBpcyBhIHNhZmUgcmVxdWVzdCB0byBmdWxmaWxsLgoKQWxyaWdodCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgYSBzaW1wbGUgY2hhbmdlLCByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLiBJIHJlbWVtYmVyIHNvbWUgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgbHVya2luZyBhcm91bmQgdGhlc2UgZnVuY3Rpb25zLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYW55IHN1YnRsZSBjaGFuZ2UgaW4gc2VtYW50aWNzLgoKSSYjMzk7bGwgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYHZpcnRpb19ibGsuY2AgYXJvdW5kIGxpbmUgMTU5NSB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoIGByZWFkLWZpbGVgLiBUaGlzIHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGxpa2VseSBpbXBhY3Qgb2YgdGhlIGNoYW5nZS4gT25jZSBJIGhhdmUgdGhlIGNvbnRleHQsIEkgY2FuIG1ha2UgYSBqdWRnZW1lbnQgb24gd2hldGhlciB0aGUgY2hhbmdlcyBtaWdodCBpbnRlcmFjdCB3aXRoIG1lbW9yeSBpbiBhIHdheSB0aGF0IEtNU0FOIHdvdWxkIGJlIHNwZWNpZmljYWxseSB2YWx1YWJsZSBmb3IuIElmIHRoaXMgaXMgYSBzaW1wbGUgc3luY2hyb25pemF0aW9uIHR3ZWFrLCBLQVNBTiBpcyBsaWtlbHkgc3VmZmljaWVudC4gSWYgaXQgaW52b2x2ZXMgc3VidGxlIGNoYW5nZXMgdG8gbWVtb3J5IGxheW91dCwgbWF5YmUgS01TQU4gd291bGQgYmUgbW9yZSB0YXJnZXRlZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IG1vcmUgYmVmb3JlIEkgY2FuIGRlY2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU4MDpcdFx0dmJsay1cdTAwM2V2ZGV2ID0gTlVMTDtcbjE1ODE6XHRcbjE1ODI6XHRcdHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZWRlbF92cXModmRldik7XG4xNTgzOlx0XHRrZnJlZSh2YmxrLVx1MDAzZXZxcyk7XG4xNTg0Olx0XG4xNTg1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2dmJsay1cdTAwM2V2ZGV2X211dGV4KTtcbjE1ODY6XHRcbjE1ODc6XHRcdHB1dF9kaXNrKHZibGstXHUwMDNlZGlzayk7XG4xNTg4Olx0fVxuMTU4OTpcdFxuMTU5MDpcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbjE1OTE6XHR7XG4xNTkyOlx0XHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXHUwMDNlcHJpdjtcbjE1OTM6XHRcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cdTAwM2VkaXNrLVx1MDAzZXF1ZXVlO1xuMTU5NDpcdFx0dW5zaWduZWQgaW50IG1lbWZsYWdzO1xuMTU5NTpcdFxuMTU5NjpcdFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbjE1OTc6XHRcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbjE1OTg6XHRcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xuMTU5OTpcdFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcbjE2MDA6XHRcbjE2MDE6XHRcdC8qIEVuc3VyZSB3ZSBkb24mIzM5O3QgcmVjZWl2ZSBhbnkgbW9yZSBpbnRlcnJ1cHRzICovXG4xNjAyOlx0XHR2aXJ0aW9fcmVzZXRfZGV2aWNlKHZkZXYpO1xuMTYwMzpcdFxuMTYwNDpcdFx0LyogTWFrZSBzdXJlIG5vIHdvcmsgaGFuZGxlciBpcyBhY2Nlc3NpbmcgdGhlIGRldmljZS4gKi9cbjE2MDU6XHRcdGZsdXNoX3dvcmsoXHUwMDI2dmJsay1cdTAwM2Vjb25maWdfd29yayk7XG4xNjA2Olx0XG4xNjA3Olx0XHR2ZGV2LVx1MDAzZWNvbmZpZy1cdTAwM2VkZWxfdnFzKHZkZXYpO1xuMTYwODpcdFx0a2ZyZWUodmJsay1cdTAwM2V2cXMpO1xuMTYwOTpcdFx0LypcbjE2MTA6XHRcdCAqIFNldCB0byBOVUxMIHRvIHByZXZlbnQgZnJlZWluZyB2cXMgYWdhaW4gYWZ0ZXIgYSBmYWlsZWQgdnFzXG4xNjExOlx0XHQgKiBhbGxvY2F0aW9uIGR1cmluZyByZXN1bWUuIE5vdGUgdGhhdCBrZnJlZSgpIGFscmVhZHkgaGFuZGxlcyBOVUxMXG4xNjEyOlx0XHQgKiBwb2ludGVycyBzYWZlbHkuXG4xNjEzOlx0XHQgKi9cbjE2MTQ6XHRcdHZibGstXHUwMDNldnFzID0gTlVMTDtcbjE2MTU6XHRcbjE2MTY6XHRcdHJldHVybiAwO1xuMTYxNzpcdH1cbjE2MTg6XHRcbjE2MTk6XHRzdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDM1CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDYwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBob3cgd2UgaGFuZGxlIHF1ZXVlIHF1aWVzY2luZyBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKWAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWUocSlgLiBUaGUgY3JpdGljYWwgZGlmZmVyZW5jZSBpcyB0aGUgd2FpdGluZyBiZWhhdmlvcjogYG5vd2FpdGAgaXMgKmFzeW5jaHJvbm91cyosIHdoaWxlIHRoZSB1cGRhdGVkIHZlcnNpb24gaXMgKnN5bmNocm9ub3VzKi4gVGhpcyBlbnN1cmVzIHdlIHdhaXQgZm9yIGFsbCBpbi1mbGlnaHQgcmVxdWVzdHMgYW5kIHF1ZXVlIGhhbmRsZXJzIHRvIGNvbXBsZXRlIGJlZm9yZSB0ZWFyaW5nIGRvd24gdGhlIHZpcnRxdWV1ZXMgKGBkZWxfdnFzYCBhbmQgYGtmcmVlYCkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbiBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciBvdGhlciBjb25jdXJyZW5jeSBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSBpZiB3ZSBkZWxldGVkIHRoZSB2aXJ0cXVldWVzIHdoaWxlIHJlcXVlc3RzIHdlcmUgc3RpbGwgYWN0aXZlLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCB0aHJvdWdoIHRoZSBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGNoZWNrcy4gQW0gSSBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyAKCjEuICBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOb3BlLCBub3QgaGVyZS4KMi4gIENvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBEb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQuCjMuICBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vIGNoYW5nZXMgdGhlcmUuCjQuICBBbnl0aGluZyB3aXRoIGJvdW5kcyBjaGVja3MsIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IERvZXNuJiMzOTt0IGFwcGx5IGhlcmUuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZS4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgZGV2aWNlIGZyZWV6ZSBvciBwb3dlciBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHF1ZXVlIHF1aWVzY2luZy4gVGhlIGJ1ZyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGZpeCBpcyBhIGNvbmN1cnJlbmN5IGlzc3VlIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24uIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzIGFyZSBkZXNpZ25lZCB0byBjYXRjaCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIGFuZCBjb25jdXJyZW5jeSBidWdzLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrLCBvciBhbiBpbmZvIGxlYWsgaW50cm9kdWNlZC4KClNvLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIGNoZWNrIGxpc3QsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuCgpOb3csIGxldCYjMzk7cyBwcmVwYXJlIHRoZSByZWFzb25pbmcgZm9yIGBzZXQtcmVzdWx0c2A6CgoqICAgVGhlIHBhdGNoIG1ha2VzIGEgZGlyZWN0IGNoYW5nZSBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYCBpbiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLCB3aGVyZSBpdCByZXBsYWNlcyBhbiBhc3luY2hyb25vdXMgcXVpZXNjZSBvcGVyYXRpb24gd2l0aCBhIHN5bmNocm9ub3VzIG9uZS4KKiAgIFRoaXMgc3luY2hyb25vdXMgb3BlcmF0aW9uIGVuc3VyZXMgdGhhdCBhbGwgb3V0c3RhbmRpbmcgcXVldWUgYWN0aXZpdHkgaXMgY29tcGxldGUgYmVmb3JlIHByb2NlZWRpbmcgdG8gZGV2aWNlIHJlc2V0IGFuZCB2aXJ0cXVldWUgZGVsZXRpb24uCiogICBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgZGV2aWNlIGZyZWV6aW5nLgoqICAgVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24gY2hhbmdlcywgb3IgbmV3IHBhdGhzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgY29waWVkIHRvIHVzZXJzcGFjZS4KKiAgIFRoZSBjb2RlIGlzIGFscmVhZHkgc3VzY2VwdGlibGUgdG8gS0FTQU4gaXNzdWVzIGluIHRoZSBjb250ZXh0IG9mIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4KClRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjMxLjcxNjYyMTY3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTUyMjI0MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzEuNzE2NjI4NTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTUzODU0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDE4OjA0OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcXG5pbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXFxuKysrIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcXG5AQCAtMTU5NSw3ICsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbiBcXG4gXFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cXG4gXFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xcbi1cXHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XFxuK1xcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xcbiBcXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xcbiBcXG4gXFx0LyogRW5zdXJlIHdlIGRvbid0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDozMi4yMzI2NTY1NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5NTg0NTk5NjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZTVhZGRmMjA5NzIyYWQ0YzFhNTMxY2NkNjZmNzY5MGU5M2VhNmQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTg6MDQ6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXG5pbmRleCAzMmJmM2JhMDdhOWRjLi43YTU3MDU5MWUwNDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jXG5AQCAtMTU5NSw3ICsxNTk1LDcgQEAgc3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuIFxuIFx0LyogRW5zdXJlIG5vIHJlcXVlc3RzIGluIHZpcnRxdWV1ZXMgYmVmb3JlIGRlbGV0aW5nIHZxcy4gKi9cbiBcdG1lbWZsYWdzID0gYmxrX21xX2ZyZWV6ZV9xdWV1ZShxKTtcbi1cdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbitcdGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpO1xuIFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcbiBcbiBcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjMyLjIzMjY1Nzg3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyMDQwNzgxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipJbnNwZWN0aW5nIHRoZSBWaXJ0aW8gQmxvY2sgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGBkcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMg4oCTIHdoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGRpZmYuIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdpdGhpbiB0aGF0IHNwZWNpZmljIGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgYmVlbiBtb2RpZmllZCBhbmQgd2h5LlxuXG5OZXh0LCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBpcyB1c2VkIGZvciBpbiB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG5hdmlnYXRlIGFsbCBvZiB0aGUgdXNhZ2VzIG9mIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHJlcXVpcmVzIGxvb2tpbmcgYXQgdGhlIGNhbGwgc3RhY2suIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHVzZSB0b29scyBsaWtlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgYHZpcnRpb19ibGsuY2AuIEknbGwgd2FudCB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzYuNDM2NzM5MDM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzcyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRibGtfZnJlZXplX3ByaXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTU2ND1zdGF0aWMgdm9pZCB2aXJ0YmxrX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE1ODktXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5MDpzdGF0aWMgaW50IHZpcnRibGtfZnJlZXplX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjM1PXN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzNi17XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTYzNzpcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjM4LX1cXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE2NDY9c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0Ny17XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY0ODpcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNjQ5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6MzYuNDgzNTE3ODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA4MTEzOTk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgdmlydGlvX2Jsay5jOiBBIERlZXAgRGl2ZSBpbnRvIFJlcXVlc3QgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgdmlydGlvX2Jsay5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTU4MC0xNjcwLiBJJ20gZm9jdXNpbmcgb24gdGhpcyByZWdpb24gYmVjYXVzZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYmxvY2sgbGF5ZXIgYW5kIHZpcnRpbywgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgcmVxdWVzdCBwcm9jZXNzaW5nIGhhcHBlbnMuIEkgZXhwZWN0IHRvIHNlZSB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgaG93IHJlcXVlc3RzIGZyb20gdGhlIGhvc3QgT1MgYXJlIHRyYW5zbGF0ZWQgaW50byB2aXJ0aW8gY29tbWFuZHMgYW5kIHRoZW4gc3VibWl0dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGRldmljZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnRxdWV1ZSwgaG93IGl0IGhhbmRsZXMgY29tbWFuZCBjb21wbGV0aW9uLCBhbmQgd2hlcmUgdGhlIGVycm9yIGhhbmRsaW5nIHNpdHMuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciwgcGVyaGFwcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgdmlydHF1ZXVlX2FkZF9idWZgIGFuZCBgdmlydHF1ZXVlX2tpY2tgLiBJJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHRyYWNrIHJlcXVlc3RzOyBsaWtlbHkgdGhlcmUncyBhIHN0cnVjdCB0byBob2xkIGFsbCB0aGUgbWV0YWRhdGEgYWJvdXQgYW4gYWN0aXZlIHJlcXVlc3QsIGZyb20gdGhlIGJsb2NrIEkvTyByZXF1ZXN0IHN0cnVjdHVyZSBkb3duIHRvIHRoZSB2aXJ0aW8gZGVzY3JpcHRvci4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgZXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcml0aWNhbCBoZXJlLCB3aXRoIHZhcmlvdXMgY2hlY2tzIGZvciB0aGluZ3MgbGlrZSBkZXZpY2UgZXJyb3JzLCBidWZmZXIgb3ZlcmZsb3dzLCBvciB0aGUgdXN1YWwgc3VzcGVjdHMgdGhhdCBjYW4gcGxhZ3VlIGEgZHJpdmVyIG9wZXJhdGluZyBvbiByYXcgaGFyZHdhcmUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nOyBpcyB0aGlzIHN5bmNocm9ub3VzLCBhc3luY2hyb25vdXMsIG9yIGEgaHlicmlkIG1vZGVsPyBHaXZlbiB0aGUgbmF0dXJlIG9mIGJsb2NrIEkvTywgSSdkIGd1ZXNzIHRoYXQgdGhpcyB3aWxsIGludm9sdmUgc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBjb21wbGV0aW9uIGhhbmRsaW5nIHRvIGtlZXAgdGhlIGRldmljZSByZXNwb25zaXZlLiBJJ20gZXhwZWN0aW5nIGxvY2tpbmcgdG8gYmUgcHJlc2VudCwgYW5kIGl0J2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXRpZXMgdGhleSB1c2UuIEknbSBhcm1lZCB3aXRoIG15IGtub3dsZWRnZSBvZiB2aXJ0aW8sIGJsb2NrIGRldmljZSBkcml2ZXJzLCBhbmQgeWVhcnMgb2Yga2VybmVsIGV4cGVyaWVuY2UsIHNvIGxldCdzIHNlZSB3aGF0IHNlY3JldHMgYXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDozOS41NjQ2NjA1MDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjA6XFx0b3V0OlxcbjE1NjE6XFx0XFx0cmV0dXJuIGVycjtcXG4xNTYyOlxcdH1cXG4xNTYzOlxcdFxcbjE1NjQ6XFx0c3RhdGljIHZvaWQgdmlydGJsa19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTU2NTpcXHR7XFxuMTU2NjpcXHRcXHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXFx1MDAzZXByaXY7XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTU2OTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTU3MDpcXHRcXG4xNTcxOlxcdFxcdGRlbF9nZW5kaXNrKHZibGstXFx1MDAzZWRpc2spO1xcbjE1NzI6XFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dmJsay1cXHUwMDNldGFnX3NldCk7XFxuMTU3MzpcXHRcXG4xNTc0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZibGstXFx1MDAzZXZkZXZfbXV0ZXgpO1xcbjE1NzU6XFx0XFxuMTU3NjpcXHRcXHQvKiBTdG9wIGFsbCB0aGUgdmlydHF1ZXVlcy4gKi9cXG4xNTc3OlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTU3ODpcXHRcXG4xNTc5OlxcdFxcdC8qIFZpcnRxdWV1ZXMgYXJlIHN0b3BwZWQsIG5vdGhpbmcgY2FuIHVzZSB2YmxrLVxcdTAwM2V2ZGV2IGFueW1vcmUuICovXFxuMTU4MDpcXHRcXHR2YmxrLVxcdTAwM2V2ZGV2ID0gTlVMTDtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0dmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VkZWxfdnFzKHZkZXYpO1xcbjE1ODM6XFx0XFx0a2ZyZWUodmJsay1cXHUwMDNldnFzKTtcXG4xNTg0OlxcdFxcbjE1ODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2YmxrLVxcdTAwM2V2ZGV2X211dGV4KTtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0cHV0X2Rpc2sodmJsay1cXHUwMDNlZGlzayk7XFxuMTU4ODpcXHR9XFxuMTU4OTpcXHRcXG4xNTkwOlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4xNTkxOlxcdHtcXG4xNTkyOlxcdFxcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cXHUwMDNlcHJpdjtcXG4xNTkzOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWU7XFxuMTU5NDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTU5NTpcXHRcXG4xNTk2OlxcdFxcdC8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovXFxuMTU5NzpcXHRcXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuMTU5ODpcXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcXG4xNTk5OlxcdFxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdFxcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cXG4xNjAyOlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTYwMzpcXHRcXG4xNjA0OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTYwNTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcXG4xNjA4OlxcdFxcdGtmcmVlKHZibGstXFx1MDAzZXZxcyk7XFxuMTYwOTpcXHRcXHQvKlxcbjE2MTA6XFx0XFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcXG4xNjExOlxcdFxcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcXG4xNjEyOlxcdFxcdCAqIHBvaW50ZXJzIHNhZmVseS5cXG4xNjEzOlxcdFxcdCAqL1xcbjE2MTQ6XFx0XFx0dmJsay1cXHUwMDNldnFzID0gTlVMTDtcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0cmV0dXJuIDA7XFxuMTYxNzpcXHR9XFxuMTYxODpcXHRcXG4xNjE5OlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTYyMDpcXHR7XFxuMTYyMTpcXHRcXHRzdHJ1Y3QgdmlydGlvX2JsayAqdmJsayA9IHZkZXYtXFx1MDAzZXByaXY7XFxuMTYyMjpcXHRcXHRpbnQgcmV0O1xcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRyZXQgPSBpbml0X3ZxKHZkZXYtXFx1MDAzZXByaXYpO1xcbjE2MjU6XFx0XFx0aWYgKHJldClcXG4xNjI2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTYyNzpcXHRcXG4xNjI4OlxcdFxcdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XFxuMTYyOTpcXHRcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHZibGstXFx1MDAzZWRpc2stXFx1MDAzZXF1ZXVlKTtcXG4xNjMwOlxcdFxcbjE2MzE6XFx0XFx0cmV0dXJuIDA7XFxuMTYzMjpcXHR9XFxuMTYzMzpcXHRcXG4xNjM0OlxcdCNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG4xNjM1OlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTYzNjpcXHR7XFxuMTYzNzpcXHRcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG4xNjM4OlxcdH1cXG4xNjM5OlxcdFxcbjE2NDA6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc3RvcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY0MTpcXHR7XFxuMTY0MjpcXHRcXHRyZXR1cm4gdmlydGJsa19yZXN0b3JlX3ByaXYodmRldik7XFxuMTY0MzpcXHR9XFxuMTY0NDpcXHQjZW5kaWZcXG4xNjQ1OlxcdFxcbjE2NDY6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY0NzpcXHR7XFxuMTY0ODpcXHRcXHRyZXR1cm4gdmlydGJsa19mcmVlemVfcHJpdih2ZGV2KTtcXG4xNjQ5OlxcdH1cXG4xNjUwOlxcdFxcbjE2NTE6XFx0c3RhdGljIGludCB2aXJ0YmxrX3Jlc2V0X2RvbmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuMTY1MjpcXHR7XFxuMTY1MzpcXHRcXHRyZXR1cm4gdmlydGJsa19yZXN0b3JlX3ByaXYodmRldik7XFxuMTY1NDpcXHR9XFxuMTY1NTpcXHRcXG4xNjU2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbjE2NTc6XFx0XFx0eyBWSVJUSU9fSURfQkxPQ0ssIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuMTY1ODpcXHRcXHR7IDAgfSxcXG4xNjU5OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA0OjM5LjU2NDgxMzYzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1MDAzNTYyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgcmVzdCBvZiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBkcml2ZXIgd29ya3MsIHNwZWNpZmljYWxseSB0aGUgYXNwZWN0cyBJIGhhdmVuJ3QgZXhhbWluZWQgY2xvc2VseSB5ZXQuIEknbSBnb2luZyB0byBmb2N1cyBvbiBob3cgaXQgaGFuZGxlcyByZXF1ZXN0cyBhbmQgbWFuYWdlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgc3RydWN0dXJlcyB0aGUgcmVxdWVzdHMsIHRoZSBjb21tYW5kIHN1Ym1pc3Npb24gcHJvY2VzcywgYW5kIGhvdyBpdCBkZWFscyB3aXRoIHRoZSBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgVmlydElPIGJsb2NrIGRldmljZS4gQXJlIHRoZXkgdXNpbmcgaW50ZXJydXB0cywgcG9sbGluZywgb3IgYSBjb21iaW5hdGlvbj8gQW5kIGFyZSB0aGVyZSBhbnkgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBlcnJvciBoYW5kbGluZyBzdHJhdGVnaWVzIGltcGxlbWVudGVkPyBJIGV4cGVjdCB0byBzZWUgdGhlIGNvcmUgbG9naWMgZm9yIHRyYW5zbGF0aW5nIGJsb2NrIEkvTyByZXF1ZXN0cyBpbnRvIFZpcnRJTyBjb21tYW5kcywgYnV0IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGUgcXVldWluZyBtZWNoYW5pc21zLiBIb3cgYXJlIHJlcXVlc3RzIHByaW9yaXRpemVkIG9yIG1lcmdlZD8gSSBhbHNvIHdhbnQgdG8gaWRlbnRpZnkgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyB1c2VkIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5LCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLiBUaGVyZSdzIHByb2JhYmx5IGEgc3BpbmxvY2sgb3IgbXV0ZXggc29tZXdoZXJlIGFyb3VuZCB0aGUgcXVldWUgaGVhZHMgYW5kIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLiBGdXJ0aGVybW9yZSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcy4gVmlydElPIGlzIHN1cHBvc2VkIHRvIGJlIGEgc3RhbmRhcmRpemVkIGludGVyZmFjZSwgYnV0IHJlYWwtd29ybGQgaW1wbGVtZW50YXRpb25zIG9mdGVuIHJlcXVpcmUgc29tZSBsZXZlbCBvZiBjdXN0b21pemF0aW9uLiBBbmQgZmluYWxseSwgSSdtIGdvaW5nIHRvIGJlIGFzc2Vzc2luZyB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgbWVtb3J5IG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGxpa2UgRE1BIGJ1ZmZlciBhbGxvY2F0aW9uIG9yIHplcm8tY29weSB0ZWNobmlxdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzU0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0My4wNjUxODQ4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTY1MDpcXHRcXG4xNjUxOlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9kb25lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbjE2NTI6XFx0e1xcbjE2NTM6XFx0XFx0cmV0dXJuIHZpcnRibGtfcmVzdG9yZV9wcml2KHZkZXYpO1xcbjE2NTQ6XFx0fVxcbjE2NTU6XFx0XFxuMTY1NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG4xNjU3OlxcdFxcdHsgVklSVElPX0lEX0JMT0NLLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbjE2NTg6XFx0XFx0eyAwIH0sXFxuMTY1OTpcXHR9O1xcbjE2NjA6XFx0XFxuMTY2MTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZlYXR1cmVzX2xlZ2FjeVtdID0ge1xcbjE2NjI6XFx0XFx0VklSVElPX0JMS19GX1NFR19NQVgsIFZJUlRJT19CTEtfRl9TSVpFX01BWCwgVklSVElPX0JMS19GX0dFT01FVFJZLFxcbjE2NjM6XFx0XFx0VklSVElPX0JMS19GX1JPLCBWSVJUSU9fQkxLX0ZfQkxLX1NJWkUsXFxuMTY2NDpcXHRcXHRWSVJUSU9fQkxLX0ZfRkxVU0gsIFZJUlRJT19CTEtfRl9UT1BPTE9HWSwgVklSVElPX0JMS19GX0NPTkZJR19XQ0UsXFxuMTY2NTpcXHRcXHRWSVJUSU9fQkxLX0ZfTVEsIFZJUlRJT19CTEtfRl9ESVNDQVJELCBWSVJUSU9fQkxLX0ZfV1JJVEVfWkVST0VTLFxcbjE2NjY6XFx0XFx0VklSVElPX0JMS19GX1NFQ1VSRV9FUkFTRSxcXG4xNjY3OlxcdH1cXG4xNjY4OlxcdDtcXG4xNjY5OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZmVhdHVyZXNbXSA9IHtcXG4xNjcwOlxcdFxcdFZJUlRJT19CTEtfRl9TRUdfTUFYLCBWSVJUSU9fQkxLX0ZfU0laRV9NQVgsIFZJUlRJT19CTEtfRl9HRU9NRVRSWSxcXG4xNjcxOlxcdFxcdFZJUlRJT19CTEtfRl9STywgVklSVElPX0JMS19GX0JMS19TSVpFLFxcbjE2NzI6XFx0XFx0VklSVElPX0JMS19GX0ZMVVNILCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1ksIFZJUlRJT19CTEtfRl9DT05GSUdfV0NFLFxcbjE2NzM6XFx0XFx0VklSVElPX0JMS19GX01RLCBWSVJUSU9fQkxLX0ZfRElTQ0FSRCwgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyxcXG4xNjc0OlxcdFxcdFZJUlRJT19CTEtfRl9TRUNVUkVfRVJBU0UsIFZJUlRJT19CTEtfRl9aT05FRCxcXG4xNjc1OlxcdH07XFxuMTY3NjpcXHRcXG4xNjc3OlxcdHN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fYmxrID0ge1xcbjE2Nzg6XFx0XFx0LmZlYXR1cmVfdGFibGVcXHRcXHRcXHQ9IGZlYXR1cmVzLFxcbjE2Nzk6XFx0XFx0LmZlYXR1cmVfdGFibGVfc2l6ZVxcdFxcdD0gQVJSQVlfU0laRShmZWF0dXJlcyksXFxuMTY4MDpcXHRcXHQuZmVhdHVyZV90YWJsZV9sZWdhY3lcXHRcXHQ9IGZlYXR1cmVzX2xlZ2FjeSxcXG4xNjgxOlxcdFxcdC5mZWF0dXJlX3RhYmxlX3NpemVfbGVnYWN5XFx0PSBBUlJBWV9TSVpFKGZlYXR1cmVzX2xlZ2FjeSksXFxuMTY4MjpcXHRcXHQuZHJpdmVyLm5hbWVcXHRcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbjE2ODM6XFx0XFx0LmlkX3RhYmxlXFx0XFx0XFx0PSBpZF90YWJsZSxcXG4xNjg0OlxcdFxcdC5wcm9iZVxcdFxcdFxcdFxcdD0gdmlydGJsa19wcm9iZSxcXG4xNjg1OlxcdFxcdC5yZW1vdmVcXHRcXHRcXHRcXHQ9IHZpcnRibGtfcmVtb3ZlLFxcbjE2ODY6XFx0XFx0LmNvbmZpZ19jaGFuZ2VkXFx0XFx0XFx0PSB2aXJ0YmxrX2NvbmZpZ19jaGFuZ2VkLFxcbjE2ODc6XFx0I2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbjE2ODg6XFx0XFx0LmZyZWV6ZVxcdFxcdFxcdFxcdD0gdmlydGJsa19mcmVlemUsXFxuMTY4OTpcXHRcXHQucmVzdG9yZVxcdFxcdFxcdD0gdmlydGJsa19yZXN0b3JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0My4wNjUyOTU0NTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjExNjI1ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRGlnZ2luZyBpbnRvIHZpcnRibGsgRnJlZXplL1Jlc2V0IEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgdmlydGJsa2AgZHJpdmVyIGhhbmRsZXMgZnJlZXppbmcgYW5kIHJlc2V0dGluZywgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IHBvaW50czogdGhlIGB2aXJ0YmxrX2ZyZWV6ZWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBgLmZyZWV6ZWAgbWV0aG9kIGluIHRoZSB2aXJ0aW8gZHJpdmVyIHN0cnVjdHVyZSwgYW5kIGFsc28gZnJvbSBgdmlydGJsa19yZXNldF9wcmVwYXJlYC4gTm93LCB0aGF0IGByZXNldF9wcmVwYXJlYCBpcyB0aGUgaW50ZXJlc3RpbmcgcGllY2UuLi4gSSBrbm93IHRoZSB2aXJ0aW8gZHJpdmVyIG1vZGVsIGhhcyB0aGUgYC5yZXNldF9wcmVwYXJlYCBjYWxsYmFjayBhcyBwYXJ0IG9mIHRoZSByZXNldCBzZXF1ZW5jZSwgYnV0IEkgd2FudCB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5Tbywgd2hlcmUgaXMgYHJlc2V0X3ByZXBhcmVgIGFjdHVhbGx5ICp1c2VkKiBhY3Jvc3MgdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHVzYWdlIGJlZm9yZSBJIG1ha2UgYW55IGp1ZGdlbWVudHMuIFRpbWUgdG8gYnJlYWsgb3V0IGBncmVwYCBhbmQgc2NvdXIgdGhlIGNvZGViYXNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGByZXNldF9wcmVwYXJlYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCB1bmNvdmVycy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDk5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0NS42NzY5MjU0ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzIyMTEzMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVzZXRfcHJlcGFyZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk1MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jPTY2OD1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBobF9wY2lfZXJyX3Nsb3RfcmVzZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNjc2LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYzo2Nzc6c3RhdGljIHZvaWQgaGxfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2Rydi5jLTY3OC17XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmM9NzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhsX3BjaV9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYy03MTctXFx0LnJlc3VtZSA9IGhsX3BjaV9lcnJfcmVzdW1lLFxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19kcnYuYzo3MTg6XFx0LnJlc2V0X3ByZXBhcmUgPSBobF9wY2lfcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfZHJ2LmMtNzE5LVxcdC5yZXNldF9kb25lID0gaGxfcGNpX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYz04OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaXZwdV9kcnZfcGNpX2VyciA9IHtcXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9kcnYuYzo4OTM6XFx0LnJlc2V0X3ByZXBhcmUgPSBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2IsXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfZHJ2LmMtODk0LVxcdC5yZXNldF9kb25lID0gaXZwdV9wbV9yZXNldF9kb25lX2NiLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYz0zNzI9dm9pZCBpdnB1X3JwbV9wdXQoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzYtXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYzozNzc6dm9pZCBpdnB1X3BtX3Jlc2V0X3ByZXBhcmVfY2Ioc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uYy0zNzgte1xcbi0tXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaD0zMz1pbnQgaXZwdV9wbV9ydW50aW1lX3Jlc3VtZV9jYihzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X3BtLmgtMzQtXFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaDozNTp2b2lkIGl2cHVfcG1fcmVzZXRfcHJlcGFyZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuZHJpdmVycy9hY2NlbC9pdnB1L2l2cHVfcG0uaC0zNi12b2lkIGl2cHVfcG1fcmVzZXRfZG9uZV9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz02Mjc9c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBjaV9jaGFubmVsX3N0YXRlX3QgZXJyb3IpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02MzEtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NjMyOnN0YXRpYyB2b2lkIHFhaWNfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNjMzLXtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBxYWljX3BjaV9lcnJfaGFuZGxlciA9IHtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02NzMtXFx0LmVycm9yX2RldGVjdGVkID0gcWFpY19wY2lfZXJyb3JfZGV0ZWN0ZWQsXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Njc0OlxcdC5yZXNldF9wcmVwYXJlID0gcWFpY19wY2lfcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy02NzUtXFx0LnJlc2V0X2RvbmUgPSBxYWljX3BjaV9yZXNldF9kb25lLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM9NzIxPXN0YXRpYyBpbnQgcWFpY19wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTczNC1cXHRxYWljX21xdHNfY2hfc3RvcF90aW1lcihxZGV2LVxcdTAwM2VtcXRzX2NoKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYzo3MzU6XFx0cWFpY19wY2lfcmVzZXRfcHJlcGFyZShxZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy03MzYtXFx0cGNpX3NhdmVfc3RhdGUocWRldi1cXHUwMDNlcGRldik7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjQwPXN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTY0NS1cXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjQ2OnN0YXRpYyBpbnQgdmlydGJsa19yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2NDcte1xcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTY3Nz1zdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdmlydGlvX2JsayA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2OTAtI2VuZGlmXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTY5MTpcXHQucmVzZXRfcHJlcGFyZVxcdFxcdFxcdD0gdmlydGJsa19yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE2OTItXFx0LnJlc2V0X2RvbmVcXHRcXHRcXHQ9IHZpcnRibGtfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9MTUwOT1zdGF0aWMgdm9pZCBtaGlfcGNpX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE0LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTUxNTpzdGF0aWMgdm9pZCBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNTE2LXtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9MTYxNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtaGlfcGNpX2Vycl9oYW5kbGVyID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjE5LVxcdC5yZXN1bWUgPSBtaGlfcGNpX2lvX3Jlc3VtZSxcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjE2MjA6XFx0LnJlc2V0X3ByZXBhcmUgPSBtaGlfcGNpX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNjIxLVxcdC5yZXNldF9kb25lID0gbWhpX3BjaV9yZXNldF9kb25lLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9OTU9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYz0xNjg4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhwcmVfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkwLVxcdC5zbG90X3Jlc2V0XFx0XFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9ocHJlL2hwcmVfbWFpbi5jOjE2OTE6XFx0LnJlc2V0X3ByZXBhcmVcXHRcXHQ9IGhpc2lfcW1fcmVzZXRfcHJlcGFyZSxcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vaHByZS9ocHJlX21haW4uYy0xNjkyLVxcdC5yZXNldF9kb25lXFx0XFx0PSBoaXNpX3FtX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01OTc9c3RhdGljIHZvaWQgcW1fZGV2X2RiX2N0cmwoc3RydWN0IGhpc2lfcW0gKnFtLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTYwNy1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo2MDg6c3RhdGljIGludCBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHN0cnVjdCBoaXNpX3FtICpxbSlcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy02MDkte1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9MTE5Nj1zdGF0aWMgdm9pZCBxbV9yZXNldF9mdW5jdGlvbihzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy0xMjAzLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjEyMDQ6XFx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtMTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NTI1PXN0YXRpYyB2b2lkIHFtX2Rldl9lY2NfbWJpdF9oYW5kbGUoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU0Ni1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NTQ3OnN0YXRpYyBpbnQgcW1fdmZfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0sXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU0OC1cXHRcXHRcXHQgICAgICAgZW51bSBxbV9zdG9wX3JlYXNvbiBzdG9wX3JlYXNvbilcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jPTQ1Nzc9c3RhdGljIGludCBxbV90cnlfc3RvcF92ZnMoc3RydWN0IGhpc2lfcW0gKnFtLCBlbnVtIHFtX2lmY19jbWQgY21kLFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDU5MS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ1OTI6XFx0XFx0cmV0ID0gcW1fdmZfcmVzZXRfcHJlcGFyZShxbSwgc3RvcF9yZWFzb24pO1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ1OTktXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NDYwMDpzdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYwMS17XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjEwLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2MTE6XFx0cmV0ID0gcW1fcmVzZXRfcHJlcGFyZV9yZWFkeShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDYxMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz00NjQ5PXN0YXRpYyBpbnQgcW1fbWFzdGVyX29vb19jaGVjayhzdHJ1Y3QgaGlzaV9xbSAqcW0pXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy00NjY0LVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjQ2NjU6c3RhdGljIGludCBxbV9zb2Z0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGhpc2lfcW0gKnFtKVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTQ2NjYte1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDczMj1zdGF0aWMgaW50IHFtX3NvZnRfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDczNS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0NzM2OlxcdHJldCA9IHFtX3NvZnRfcmVzZXRfcHJlcGFyZShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDczNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NDk1Mj1zdGF0aWMgaW50IHFtX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGhpc2lfcW0gKnFtKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDk1OC1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYzo0OTU5OlxcdHJldCA9IHFtX2NvbnRyb2xsZXJfcmVzZXRfcHJlcGFyZShxbSk7XFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmMtNDk2MC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYz01MDE2PUVYUE9SVF9TWU1CT0xfR1BMKGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQpO1xcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMTctXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAxODp2b2lkIGhpc2lfcW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDE5LXtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwMzQtXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTAzNTpcXHRyZXQgPSBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHFtKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDM2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUwNzMtfVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jOjUwNzQ6RVhQT1JUX1NZTUJPTF9HUEwoaGlzaV9xbV9yZXNldF9wcmVwYXJlKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MDc1LVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM9NTIzNj1zdGF0aWMgdm9pZCBxbV9wZl9yZXNldF92Zl9wcmVwYXJlKHN0cnVjdCBoaXNpX3FtICpxbSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5jLTUyNDItXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3FtLmM6NTI0MzpcXHRyZXQgPSBxbV9yZXNldF9wcmVwYXJlX3JlYWR5KHFtKTtcXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vcW0uYy01MjQ0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19tYWluLmM9MTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBzZWNfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vc2VjMi9zZWNfbWFpbi5jLTE1MDgtXFx0LnNsb3RfcmVzZXRcXHQ9IGhpc2lfcW1fZGV2X3Nsb3RfcmVzZXQsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYzoxNTA5OlxcdC5yZXNldF9wcmVwYXJlXFx0PSBoaXNpX3FtX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYy0xNTEwLVxcdC5yZXNldF9kb25lXFx0PSBoaXNpX3FtX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9oaXNpbGljb24vemlwL3ppcF9tYWluLmM9MTYxNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBoaXNpX3ppcF9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYy0xNjE3LVxcdC5zbG90X3Jlc2V0XFx0PSBoaXNpX3FtX2Rldl9zbG90X3Jlc2V0LFxcbmRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi96aXAvemlwX21haW4uYzoxNjE4OlxcdC5yZXNldF9wcmVwYXJlXFx0PSBoaXNpX3FtX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3ppcC96aXBfbWFpbi5jLTE2MTktXFx0LnJlc2V0X2RvbmVcXHQ9IGhpc2lfcW1fcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz0xOD1zdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmRldmljZV9zcmlvdl93cTtcXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMTktXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjIwOnN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IHJlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYz03Mj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBhZGZfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtOTAtXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjkxOlxcdHJldHVybiByZXNldF9wcmVwYXJlKHBkZXYpO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy05Mi19XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmM9MjQ5PXN0YXRpYyB2b2lkIGFkZl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvcWF0X2NvbW1vbi9hZGZfYWVyLmMtMjU0LVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYzoyNTU6c3RhdGljIHZvaWQgYWRmX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jLTI1Ni17XFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjI1NzpcXHRyZXNldF9wcmVwYXJlKHBkZXYpO1xcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNTgtfVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jPTI2NT1jb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGFkZl9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNjgtXFx0LnJlc3VtZSA9IGFkZl9yZXN1bWUsXFxuZHJpdmVycy9jcnlwdG8vaW50ZWwvcWF0L3FhdF9jb21tb24vYWRmX2Flci5jOjI2OTpcXHQucmVzZXRfcHJlcGFyZSA9IGFkZl9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvY3J5cHRvL2ludGVsL3FhdC9xYXRfY29tbW9uL2FkZl9hZXIuYy0yNzAtXFx0LnJlc2V0X2RvbmUgPSBhZGZfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jPTk0Mj1zdGF0aWMgdm9pZCBpZHhkX2RldmljZV9jb25maWdfcmVzdG9yZShzdHJ1Y3QgaWR4ZF9kZXZpY2UgKmlkeGQsXFxuLS1cXG5kcml2ZXJzL2RtYS9pZHhkL2luaXQuYy0xMDIwLVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jOjEwMjE6c3RhdGljIHZvaWQgaWR4ZF9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM9MTEyNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpZHhkX2Vycm9yX2hhbmRsZXIgPSB7XFxuZHJpdmVycy9kbWEvaWR4ZC9pbml0LmM6MTEyNzpcXHQucmVzZXRfcHJlcGFyZVxcdD0gaWR4ZF9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvZG1hL2lkeGQvaW5pdC5jLTExMjgtXFx0LnJlc2V0X2RvbmVcXHQ9IGlkeGRfcmVzZXRfZG9uZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYz01MDI4PWludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTUwODYtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjUwODc6XFx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTA4OC1cXHQvKiBJZiByZXNldCBoYW5kbGVyIG5vdCBpbXBsZW1lbnRlZCwgY29udGludWU7IG90aGVyd2lzZSByZXR1cm4gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jPTE0OD1pbnQgYW1kZ3B1X3Jlc2V0X2RvX3hnbWlfcmVzZXRfb25faW5pdChcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTE2MC1cXHRcXHRcXHRcXHRyZXNldF9saXN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYzoxNjE6XFx0ciA9IGFtZGdwdV9yZXNldF9wcmVwYXJlX2h3Y29udGV4dChhZGV2LCByZXNldF9jb250ZXh0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYy0xNjItXFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuYz0yMDQ9aW50IGFtZGdwdV9yZXNldF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmMtMjI3LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jOjIyODppbnQgYW1kZ3B1X3Jlc2V0X3ByZXBhcmVfaHdjb250ZXh0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5jLTIyOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2NvbnRleHQgKnJlc2V0X2NvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaD0xNDY9aW50IGFtZGdwdV9yZXNldF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaC0xNDctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0Lmg6MTQ4OmludCBhbWRncHVfcmVzZXRfcHJlcGFyZV9od2NvbnRleHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmgtMTQ5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzZXQuaD0xNTE9aW50IGFtZGdwdV9yZXNldF9wZXJmb3JtX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc2V0LmgtMTUzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oOjE1NDppbnQgYW1kZ3B1X3Jlc2V0X3ByZXBhcmVfZW52KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNldC5oLTE1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBhbWRncHVfcmVzZXRfY29udGV4dCAqcmVzZXRfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuYz0yNj1ib29sIGludGVsX2Rpc3BsYXlfcmVzZXRfdGVzdChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMxLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jOjMyOnZvaWQgaW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5jLTMzLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9yZXNldC5oPTE0PWJvb2wgaW50ZWxfZGlzcGxheV9yZXNldF90ZXN0KHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcmVzZXQuaDoxNTp2b2lkIGludGVsX2Rpc3BsYXlfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Jlc2V0LmgtMTYtdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSwgYm9vbCB0ZXN0X29ubHkpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yOTUyPXN0YXRpYyBpbnQgZXhlY2xpc3RzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI5NjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyOTY1OnN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI5NjYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTM0MzctXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzozNDM4OlxcdGVuZ2luZS1cXHUwMDNlcmVzZXQucHJlcGFyZSA9IGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQzOS1cXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnJld2luZCA9IGV4ZWNsaXN0c19yZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jPTE2OT1zdGF0aWMgdm9pZCBndF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTItXFx0LyogRm9yIEd1QyBtb2RlLCBlbnN1cmUgc3VibWlzc2lvbiBpcyBkaXNhYmxlZCBiZWZvcmUgc3RvcHBpbmcgcmluZyAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6MTkzOlxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYy0xOTQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTUyMT1zdGF0aWMgaW50IF9fZ2VuMTFfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy01NjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo1NjI6c3RhdGljIGludCBnZW44X2VuZ2luZV9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTU2My17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTYxMD1zdGF0aWMgaW50IGdlbjhfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy02MjItXFx0Zm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGd0LCBlbmdpbmVfbWFzaywgdG1wKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo2MjM6XFx0XFx0cmV0ID0gZ2VuOF9lbmdpbmVfcmVzZXRfcHJlcGFyZShlbmdpbmUpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtNjI0LVxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgIXJlc2V0X25vbl9yZWFkeSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9ODEzPWludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODI5LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODMwOnN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTg0ND1zdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODc0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODc1OnN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHJlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d0ICpndClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg3Ni17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg4NS1cXHQgKiBGb3IgR3VDIG1vZGUgd2l0aCBzdWJtaXNzaW9uIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBHdUMgaXMgbm90XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo4ODY6XFx0ICogc2FuaXRpemVkLCBkbyB0aGF0IGFmdGVyIGVuZ2luZSByZXNldC4gcmVzZXRfcHJlcGFyZSgpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04ODctXFx0ICogaXMgZm9sbG93ZWQgYnkgZW5naW5lIHJlc2V0IHdoaWNoIGluIHRoaXMgbW9kZSByZXF1aXJlcyBHdUMgdG9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtODkwLVxcdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKFxcdTAwMjZndC1cXHUwMDNldWMpKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6ODkxOlxcdFxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy04OTItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5NS1cXHRcXHRcXHRhd2FrZSB8PSBlbmdpbmUtXFx1MDAzZW1hc2s7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzo4OTY6XFx0XFx0cmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTg5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTk2OT1zdGF0aWMgdm9pZCBfX2ludGVsX2d0X3NldF93ZWRnZWQoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtOTg1LVxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6OTg2OlxcdGF3YWtlID0gcmVzZXRfcHJlcGFyZShndCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy05ODctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTEyMDU9dm9pZCBpbnRlbF9ndF9yZXNldChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjMzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTIzNDpcXHRhd2FrZSA9IHJlc2V0X3ByZXBhcmUoZ3QpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTIzNS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTI1OC1cXHRpZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oXFx1MDAyNmd0LVxcdTAwM2V1YykpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYzoxMjU5OlxcdFxcdGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNmd0LVxcdTAwM2V1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMjYwLVxcdC8qXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jPTEzMzE9aW50IF9faW50ZWxfZW5naW5lX3Jlc2V0X2JoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xMzQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTM0NTpcXHRyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTM0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTQwND1zdGF0aWMgdm9pZCBpbnRlbF9ndF9yZXNldF9nbG9iYWwoc3RydWN0IGludGVsX2d0ICpndCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTQ0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jOjE0NDM6XFx0XFx0XFx0aW50ZWxfZGlzcGxheV9yZXNldF9wcmVwYXJlKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTQ0NC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYz0zMTQ9c3RhdGljIHZvaWQgeGNzX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTM0MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYzozNDE6c3RhdGljIHZvaWQgcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMtMzQyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jPTExNTQ9c3RhdGljIHZvaWQgc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTExNjUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmM6MTE2NjpcXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnByZXBhcmUgPSByZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jLTExNjctXFx0ZW5naW5lLVxcdTAwM2VyZXNldC5yZXdpbmQgPSByZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jPTI2Mj1zdGF0aWMgdm9pZCBtb2NrX3JlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMtMjgzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmM6Mjg0OnN0YXRpYyB2b2lkIG1vY2tfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYy0yODUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYz0zNDE9c3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jOjM3MzpcXHRlbmdpbmUtXFx1MDAzZWJhc2UucmVzZXQucHJlcGFyZSA9IG1vY2tfcmVzZXRfcHJlcGFyZTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jLTM3NC1cXHRlbmdpbmUtXFx1MDAzZWJhc2UucmVzZXQucmV3aW5kID0gbW9ja19yZXNldF9yZXdpbmQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jPTI2MD1zdGF0aWMgaW50IGlndF9hdG9taWNfcmVzZXQodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0yODAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYzoyODE6XFx0XFx0YXdha2UgPSByZXNldF9wcmVwYXJlKGd0KTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTI4Mi1cXHRcXHRwLVxcdTAwM2Vjcml0aWNhbF9zZWN0aW9uX2JlZ2luKCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaD01MzM9dm9pZCBpbnRlbF9ndWNfY29udGV4dF9iYW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgtNTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oOjUzNTp2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaC01MzYtdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGludGVsX2VuZ2luZV9tYXNrX3Qgc3RhbGxlZCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTEwNzc9c3RhdGljIHZvaWQgc2NydWJfZ3VjX2Rlc2NfZm9yX291dHN0YW5kaW5nX2cyaChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTExMDQtXFx0XFx0ICogdG8gYmUgdmlzaWJsZSB0byBhbGwgY2FsbGVycyB3aG8gc2V0IHRoZSBiZWxvdyBmbGFncyAoc2VlIGFib3ZlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYzoxMTA1OlxcdFxcdCAqIGZsdXNoIGFuZCBmbHVzaGVzIGluIHJlc2V0X3ByZXBhcmUpLiBJZiBzdWJtaXNzaW9uX2Rpc2FibGVkKClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTExMDYtXFx0XFx0ICogaXMgc2V0LCB0aGUgY2FsbGVyIHNob3VsZG4ndCBzZXQgdGhlc2UgZmxhZ3MuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTEzOTE9c3RhdGljIHZvaWQgZ3VjX2NhbmNlbF9idXN5bmVzc193b3JrZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI1LVxcdCAqIEFuZCBub3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYSByZXNldCBvY2N1cnJpbmcgZHVyaW5nIGRyaXZlciB1bmxvYWRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE0MjY6XFx0ICogKHdlZGdlZF9vbl9maW5pKSwgc2tpcHBpbmcgdGhlIGNhbmNlbCBpbiByZXNldF9wcmVwYXJlL3Jlc2V0X2ZpbmkgKHdoZW4gdGhlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xNDI3LVxcdCAqIHJlc2V0IGZsYWcvbXV0ZXggYXJlIHNldCkgaXMgZmluZSBiZWNhdXNlIHRoZXJlIGlzIGFub3RoZXIgZXhwbGljaXQgY2FuY2VsIGluXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTE3MjM9c3RhdGljIHZvaWQgZ3VjX2ZsdXNoX2Rlc3Ryb3llZF9jb250ZXh0cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTcyNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjE3MjU6dm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jLTE3MjYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYz0xNzc3PXN0YXRpYyB2b2lkIGd1Y19yZXNldF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBoZWFkLCBib29sIHNjcnViKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYy0xODAwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmM6MTgwMTpzdGF0aWMgdm9pZCBndWNfZW5naW5lX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtMTgwMi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jPTQ1MzY9c3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU0OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jOjQ1NDk6XFx0ZW5naW5lLVxcdTAwM2VyZXNldC5wcmVwYXJlID0gZ3VjX2VuZ2luZV9yZXNldF9wcmVwYXJlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMtNDU1MC1cXHRlbmdpbmUtXFx1MDAzZXJlc2V0LnJld2luZCA9IGd1Y19yZXdpbmRfbm9wO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYz01Njk9c3RhdGljIHZvaWQgX191Y19maW5pX2h3KHN0cnVjdCBpbnRlbF91YyAqdWMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4Mi0vKipcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjU4MzogKiBpbnRlbF91Y19yZXNldF9wcmVwYXJlIC0gUHJlcGFyZSBmb3IgcmVzZXRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jLTU4NC0gKiBAdWM6IHRoZSBpbnRlbF91YyBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmM6NTg4OnZvaWQgaW50ZWxfdWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNTg5LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMtNjAyLVxcdGlmIChpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jOjYwMzpcXHRcXHRpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKGd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYy02MDQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oPTQ3PXZvaWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmg6NDg6dm9pZCBpbnRlbF91Y19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgtNDktdm9pZCBpbnRlbF91Y19yZXNldChzdHJ1Y3QgaW50ZWxfdWMgKnVjLCBpbnRlbF9lbmdpbmVfbWFza190IHN0YWxsZWQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmM9OTgyPXZvaWQgeGVfZ3RfcmVzZXRfYXN5bmMoc3RydWN0IHhlX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTk4OS1cXHQvKiBEb24ndCBkbyBhIHJlc2V0IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jOjk5MDpcXHRpZiAoIXhlX2ZhdWx0X2d0X3Jlc2V0KCkgXFx1MDAyNlxcdTAwMjYgeGVfdWNfcmVzZXRfcHJlcGFyZShcXHUwMDI2Z3QtXFx1MDAzZXVjKSlcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYy05OTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jPTE3MDM9dm9pZCB4ZV9ndWNfc2FuaXRpemUoc3RydWN0IHhlX2d1YyAqZ3VjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE3MDktXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jOjE3MTA6aW50IHhlX2d1Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmMtMTcxMS17XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jOjE3MTI6XFx0cmV0dXJuIHhlX2d1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xNzEzLX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYz0xODIwPXZvaWQgeGVfZ3VjX2RlY2xhcmVfd2VkZ2VkKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYy0xODIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuYzoxODI0OlxcdHhlX2d1Y19yZXNldF9wcmVwYXJlKGd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5jLTE4MjUtXFx0eGVfZ3VjX2N0X3N0b3AoXFx1MDAyNmd1Yy1cXHUwMDNlY3QpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oPTU3PWludCB4ZV9ndWNfcHJpbnRfaW5mbyhzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Yy5oOjU4OmludCB4ZV9ndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuaC01OS12b2lkIHhlX2d1Y19yZXNldF93YWl0KHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6NTI6c3RhdGljIGludCBndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTUzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYz0yNDQ9c3RhdGljIHZvaWQgZ3VjX3N1Ym1pdF9maW5pKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYyLVxcdHhlX2d1Y19jdF9zdG9wKFxcdTAwMjZndWMtXFx1MDAzZWN0KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2MzpcXHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTI2NC1cXHR4ZV9ndWNfc29mdHJlc2V0KGd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jPTEzMjE9dm9pZCB4ZV9ndWNfc3VibWl0X3dlZGdlKHN0cnVjdCB4ZV9ndWMgKmd1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMTM0My1cXHRcXHQvKiBGb3JjZWZ1bGx5IGtpbGwgYW55IHJlbWFpbmluZyBleGVjIHF1ZXVlcywgc2lnbmFsIGZlbmNlcyAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MTM0NDpcXHRcXHRndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jLTEzNDUtXFx0XFx0eGVfZ3VjX3N1Ym1pdF9zdG9wKGd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jPTI1NjE9c3RhdGljIHZvaWQgZ3VjX2V4ZWNfcXVldWVfc3RvcChzdHJ1Y3QgeGVfZ3VjICpndWMsIHN0cnVjdCB4ZV9leGVjX3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjEyLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmM6MjYxMzpzdGF0aWMgaW50IGd1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjE0LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYzMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2MzE6aW50IHhlX2d1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjICpndWMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYy0yNjMyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjYzOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jOjI2Mzk6XFx0cmV0dXJuIGd1Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMtMjY0MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oPTE3PXZvaWQgeGVfZ3VjX3N1Ym1pdF9kaXNhYmxlKHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuaC0xOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oOjE5OmludCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX2d1YyAqZ3VjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oLTIwLXZvaWQgeGVfZ3VjX3N1Ym1pdF9yZXNldF93YWl0KHN0cnVjdCB4ZV9ndWMgKmd1Yyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0xODI9aW50IHhlX3VjX2xvYWRfaHcoc3RydWN0IHhlX3VjICp1YylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTIzNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYzoyMzY6aW50IHhlX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHhlX3VjICp1YylcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjQxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jOjI0MjpcXHRyZXR1cm4geGVfZ3VjX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNnVjLVxcdTAwM2VndWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jLTI0My19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYz0yNjk9c3RhdGljIHZvaWQgdWNfcmVzZXRfd2FpdChzdHJ1Y3QgeGVfdWMgKnVjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VjLmMtMjc1LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5jOjI3NjpcXHRyZXQgPSB4ZV91Y19yZXNldF9wcmVwYXJlKHVjKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfdWMuYy0yNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oPTE0PWludCB4ZV91Y19sb2FkX2h3KHN0cnVjdCB4ZV91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oOjE1OmludCB4ZV91Y19yZXNldF9wcmVwYXJlKHN0cnVjdCB4ZV91YyAqdWMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV91Yy5oLTE2LXZvaWQgeGVfdWNfcnVudGltZV9yZXN1bWUoc3RydWN0IHhlX3VjICp1Yyk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYz02OTk9c3RhdGljIHZvaWQgaXB1Nl9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni9pcHU2LmMtNzIxLVxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jOjcyMjpzdGF0aWMgdm9pZCBpcHU2X3BjaV9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jLTcyMy17XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYz04MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgcGNpX2Vycl9oYW5kbGVycyA9IHtcXG5kcml2ZXJzL21lZGlhL3BjaS9pbnRlbC9pcHU2L2lwdTYuYzo4MTc6XFx0LnJlc2V0X3ByZXBhcmUgPSBpcHU2X3BjaV9yZXNldF9wcmVwYXJlLFxcbmRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTYvaXB1Ni5jLTgxOC1cXHQucmVzZXRfZG9uZSA9IGlwdTZfcGNpX3Jlc2V0X2RvbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jPTYzNz1zdGF0aWMgdm9pZCBwZHNjX2NoZWNrX3BjaV9oZWFsdGgoc3RydWN0IHBkc2MgKnBkc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jOjY1MTpcXHQvKiBwcmV2ZW50IGRlYWRsb2NrIGJldHdlZW4gcGRzY19yZXNldF9wcmVwYXJlIGFuZCBwZHNjX2hlYWx0aF90aHJlYWQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvY29yZS5jLTY1Mi1cXHRxdWV1ZV93b3JrKHBkc2MtXFx1MDAzZXdxLCBcXHUwMDI2cGRzYy1cXHUwMDNlcGNpX3Jlc2V0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYz00ODU9c3RhdGljIHZvaWQgcGRzY19yZXN0YXJ0X2hlYWx0aF90aHJlYWQoc3RydWN0IHBkc2MgKnBkc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvbWFpbi5jOjQ5ODpzdGF0aWMgdm9pZCBwZHNjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3Bkc19jb3JlL21haW4uYy00OTkte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo0Ny43NDkxNDI5MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk3MTM1MDQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhlIHZpcnRpbyBzdWJzeXN0ZW06XG5cbioqSW52ZXN0aWdhdGluZyB2aXJ0aW8gUmVzZXQgUHJlcGFyYXRpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHdoZXJlIGByZXNldF9wcmVwYXJlYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSB2aXJ0aW8gZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8ganVzdCBqdW1wIGludG8gdGhlIGBkcml2ZXJzL3ZpcnRpby9gIGRpcmVjdG9yeSDigJMgdGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBhbGwgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEknbGwgbmVlZCB0byB1c2UgYGdyZXBgIGhlcmUsIGVmZmljaWVudGx5LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYSBmZXcgdmFyaWF0aW9ucyB0byBjb3ZlciBteSBiYXNlcy4gRmlyc3QsIEknbGwgc2VhcmNoIGZvciBkaXJlY3QgaW52b2NhdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgc28ganVzdCBwbGFpbiBgcmVzZXRfcHJlcGFyZWAuIFRoZW4sIEknbGwgY2hlY2sgZm9yIHJlZmVyZW5jZXMgdGhyb3VnaCB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgdGFyZ2V0aW5nIGAtXHUwMDNlcmVzZXRfcHJlcGFyZWAuIEFuZCBmaW5hbGx5LCBqdXN0IGluIGNhc2UsIEknbGwgYWxzbyB0cnkgYGRydi1cdTAwM2VyZXNldF9wcmVwYXJlYCwgdG8gYmUgZXh0cmEgc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcsIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBjb2Rpbmcgc3R5bGVzIGFjcm9zcyBkaWZmZXJlbnQgZHJpdmVycy4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIHByZXR0eSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2Ygd2hlcmUgYHJlc2V0X3ByZXBhcmVgIGNvbWVzIGludG8gcGxheS4gVGltZSB0byBnZXQgZ3JlcHBpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTgyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6NTAuNzIwNDk1NzU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwNDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldF9wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpby5jPTY5NT1FWFBPUlRfU1lNQk9MX0dQTCh2aXJ0aW9fZGV2aWNlX3Jlc3RvcmUpO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk3LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY5ODppbnQgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjk5LXtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTcwMi1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo3MDM6XFx0aWYgKCFkcnYgfHwgIWRydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MDQtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzA5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjcxMDpcXHRyZXQgPSBkcnYtXFx1MDAzZXJlc2V0X3ByZXBhcmUoZGV2KTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNzE3LX1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYzo3MTg6RVhQT1JUX1NZTUJPTF9HUEwodmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy03MTktXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTc3MT1zdGF0aWMgaW50IHZpcnRpb19wY2lfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBpbnQgbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNzk3LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6Nzk4OnN0YXRpYyB2b2lkIHZpcnRpb19wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTc5OS17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTgwMi1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgwMzpcXHRyZXQgPSB2aXJ0aW9fZGV2aWNlX3Jlc2V0X3ByZXBhcmUoXFx1MDAyNnZwX2Rldi1cXHUwMDNldmRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MDQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz04MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmlydGlvX3BjaV9lcnJfaGFuZGxlciA9IHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjgzNDpcXHQucmVzZXRfcHJlcGFyZSAgPSB2aXJ0aW9fcGNpX3Jlc2V0X3ByZXBhcmUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy04MzUtXFx0LnJlc2V0X2RvbmUgICAgID0gdmlydGlvX3BjaV9yZXNldF9kb25lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo1MC43Njc4MDU4NDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzY0Njk4MjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTmFtaW5nIENvbnZlbnRpb25zKipcblxuUmlnaHQsIHNvIEknbSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGZyZWV6aW5nL3VuZnJlZXppbmcgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgdmlydGJsa19mcmVlemVfcHJpdmAgYW5kIGl0cyBwb3RlbnRpYWwgY291bnRlcnBhcnRzLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBJJ20gY2FwdHVyaW5nIGFsbCB2YXJpYXRpb25zLiBUaGVyZWZvcmUsIEkgd2FudCB0byBleHBsb3JlIG90aGVyIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEknbGwgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaC4gTGV0J3Mgc2VlLCB3aGF0IGVsc2UgY291bGQgaXQgYmUgY2FsbGVkLi4uXG5cbk9rYXksIEknbSB0aGlua2luZyBvZiBvdGhlciBwb3RlbnRpYWwgY29udmVudGlvbnMgc3VjaCBhcyBgdmlydGJsa19mcmVlemVgIG9yIGB2aXJ0aW9fZGV2aWNlX2ZyZWV6ZWAgYXMgcG9zc2libGUgbmFtaW5nIGFsdGVybmF0aXZlcyBmb3Igc2ltaWxhciBmdW5jdGlvbnMuIFRpbWUgdG8gZ2V0IHRoZSBncmVwIGNvbW1hbmQgcnVubmluZyB0byBzd2VlcCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYHZpcnRpb19kZXZpY2VfZnJlZXplYCBhbmQgYHZpcnRibGtfZnJlZXplYC4gSSBuZWVkIHRvIGNvdmVyIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBhY3Jvc3MgdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTMwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDQ6NTguNDE0NzkwMjI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjIxNDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvLmM9NjEzPXN0YXRpYyBpbnQgdmlydGlvX2RldmljZV9yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldiwgYm9vbCByZXN0b3JlKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjI0LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjYyNTpcXHQvKiBNYXliZSBkcml2ZXIgZmFpbGVkIGJlZm9yZSBmcmVlemUuXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjI2LVxcdCAqIFJlc3RvcmUgdGhlIGZhaWxlZCBzdGF0dXMsIGZvciBkZWJ1Z2dpbmcuICovXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NjktI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3MDppbnQgdmlydGlvX2RldmljZV9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02NzEte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjc4LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jOjY3OTpcXHRpZiAoZHJ2IFxcdTAwMjZcXHUwMDI2IGRydi1cXHUwMDNlZnJlZXplKSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6NjgwOlxcdFxcdHJldCA9IGRydi1cXHUwMDNlZnJlZXplKGRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmMtNjgxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpby5jLTY4OC19XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvLmM6Njg5OkVYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb19kZXZpY2VfZnJlZXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW8uYy02OTAtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jPTExNDM9c3RhdGljIHZvaWQgdmlydGJhbGxvb25fc2h1dGRvd24oc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNDktI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM6MTE1MDpzdGF0aWMgaW50IHZpcnRiYWxsb29uX2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTExNTEte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYz0xMjExPXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fYmFsbG9vbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjEtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmM6MTIyMjpcXHQuZnJlZXplXFx0PVxcdHZpcnRiYWxsb29uX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jLTEyMjMtXFx0LnJlc3RvcmUgPVxcdHZpcnRiYWxsb29uX3Jlc3RvcmUsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYz0zNDc9c3RhdGljIHZvaWQgdmlydGlucHV0X3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19pbnB1dC5jLTM2Ni0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmM6MzY3OnN0YXRpYyBpbnQgdmlydGlucHV0X2ZyZWV6ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYy0zNjgte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmM9NDA4PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9faW5wdXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9faW5wdXQuYzo0MTY6XFx0LmZyZWV6ZVxcdCAgICAgICAgICAgICA9IHZpcnRpbnB1dF9mcmVlemUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMtNDE3LVxcdC5yZXN0b3JlICAgICAgICAgICAgID0gdmlydGlucHV0X3Jlc3RvcmUsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MzA3Nj1zdGF0aWMgdm9pZCB2aXJ0aW9fbWVtX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODctI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzozMDg4OnN0YXRpYyBpbnQgdmlydGlvX21lbV9mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMwODkte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTMxNDA9c3RhdGljIHN0cnVjdCB2aXJ0aW9fZHJpdmVyIHZpcnRpb19tZW1fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNDgtI2lmZGVmIENPTkZJR19QTV9TTEVFUFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzozMTQ5OlxcdC5mcmVlemVcXHQ9XFx0dmlydGlvX21lbV9mcmVlemUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTMxNTAtXFx0LnJlc3RvcmUgPVxcdHZpcnRpb19tZW1fcmVzdG9yZSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX21taW9fY29uZmlnX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTU1LSNpZmRlZiBDT05GSUdfUE1fU0xFRVBcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jOjU1NjpzdGF0aWMgaW50IHZpcnRpb19tbWlvX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTcte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYy01NTktXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYzo1NjA6XFx0cmV0dXJuIHZpcnRpb19kZXZpY2VfZnJlZXplKFxcdTAwMjZ2bV9kZXYtXFx1MDAzZXZkZXYpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTYxLX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmM9NTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2aXJ0aW9fbW1pb19wbV9vcHMgPSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYzo1NzQ6XFx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFModmlydGlvX21taW9fZnJlZXplLCB2aXJ0aW9fbW1pb19yZXN0b3JlKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tbWlvLmMtNTc1LX07XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU4NT1jb25zdCBzdHJ1Y3QgY3B1bWFzayAqdnBfZ2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU5OC0jaWZkZWYgQ09ORklHX1BNX1NMRUVQXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1OTk6c3RhdGljIGludCB2aXJ0aW9fcGNpX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDAte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDQtXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo2MDU6XFx0cmV0ID0gdmlydGlvX2RldmljZV9mcmVlemUoXFx1MDAyNnZwX2Rldi1cXHUwMDNldmRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02MDYtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTY0Mz1zdGF0aWMgaW50IHZpcnRpb19wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NDQte1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjQ1OlxcdHJldHVybiB2cF9zdXBwb3J0c19wbV9ub19yZXNldChkZXYpID8gMCA6IHZpcnRpb19wY2lfZnJlZXplKGRldik7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NDYtfVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz02NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHZpcnRpb19wY2lfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy02NTUtXFx0LnJlc3VtZSA9IHZpcnRpb19wY2lfcmVzdW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NjU2OlxcdC5mcmVlemUgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTY1Ny1cXHQudGhhdyA9IHZpcnRpb19wY2lfcmVzdG9yZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjY1ODpcXHQucG93ZXJvZmYgPSB2aXJ0aW9fcGNpX2ZyZWV6ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTY1OS1cXHQucmVzdG9yZSA9IHZpcnRpb19wY2lfcmVzdG9yZSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM9MTMzNz1zdGF0aWMgdm9pZCB2aW9ydGNfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYy0xMzQzLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmM6MTM0NDpzdGF0aWMgaW50IHZpb3J0Y19mcmVlemUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldilcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTEzNDUte1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3J0Y19kcml2ZXIuYz0xNDA0PXN0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2aXJ0aW9fcnRjX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19ydGNfZHJpdmVyLmMtMTQxMC1cXHQucmVtb3ZlID0gdmlvcnRjX3JlbW92ZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jOjE0MTE6XFx0LmZyZWV6ZSA9IHBtX3NsZWVwX3B0cih2aW9ydGNfZnJlZXplKSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcnRjX2RyaXZlci5jLTE0MTItXFx0LnJlc3RvcmUgPSBwbV9zbGVlcF9wdHIodmlvcnRjX3Jlc3RvcmUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNDo1OC40NjEwMTIwMDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ5MjI0ODU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZpcnRpbyBCbG9jayBEcml2ZXIgRnJlZXplIE9wZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZpcnRpb19ibGtgIGNvZGUsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyB0aGUgd29ya2hvcnNlIGRyaXZlciBmb3IgYmxvY2sgZGV2aWNlcyBpbiB2aXJ0aW8gZW52aXJvbm1lbnRzLiBJdCdzIG9mdGVuIHRoZSByb290IGRpc2sgb3IgaGFuZGxlcyB0aG9zZSBzZWNvbmRhcnkgYmxvY2sgZGV2aWNlcyBpbiBRRU1VL0tWTSBzZXR1cHMuIEknbSBmb2N1c2luZyBvbiB0aGlzIGNoYW5nZSBpbiBgdmlydGJsa19mcmVlemVfcHJpdmAgYW5kIGl0J3MgbWFraW5nIG1lIHRoaW5rLlxuXG5TcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSd2ZSBzd2FwcGVkIG91dCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBmb3IgYGJsa19tcV9xdWllc2NlX3F1ZXVlYC4gSW50ZXJlc3RpbmcuIEkga25vdyB0aGUgZ2VuZXJhbCBpZGVhIGhlcmUgaXMgdG8gZW5zdXJlIG5vIEkvTyBpcyBhY3RpdmUgYmVmb3JlIGRlbGV0aW5nIHRoZSB2aXJ0cXVldWVzIGR1cmluZyB0aGUgZnJlZXplIG9wZXJhdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhleSBmcmVlemUgdGhlIHF1ZXVlLCBxdWllc2NlIGl0LCBhbmQgdGhlbiB1bmZyZWV6ZSBpdC4gU2VlbXMgc3RhbmRhcmQuXG5cbkJ1dCB0aGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMuIFdoYXQncyB0aGUgZnVuZGFtZW50YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3F1aWVzY2VfcXVldWVgPyBJcyB0aGlzIGEgc3VidGxlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IgYSBidWcgZml4PyBUaGUgYG5vd2FpdGAgdmVyc2lvbiBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIG5vdCBibG9jaywgYnV0IHdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhhdCBoYXZlIGhlcmU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJsa19tcV9xdWllc2NlX3F1ZXVlYCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gTGV0J3MgZ2V0IHRvIHRoZSBzb3VyY2UgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MDEuOTUzMjYzMTY0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ5MjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstbXEuYz0yNTU9RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7XFxuLS1cXG5ibG9jay9ibGstbXEuYy0yNjAtICovXFxuYmxvY2svYmxrLW1xLmM6MjYxOnZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yODg9RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKTtcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTI5OC0gKi9cXG5ibG9jay9ibGstbXEuYzoyOTk6dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG5ibG9jay9ibGstbXEuYy0zMDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowMi4wMDA3NjMwMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQyNTI3NDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCB0aGUgYXVkaWVuY2UgaXMgYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIGJsay1tcS5jOiBUaGUgSGVhcnQgb2YgSU8gUXVldWluZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGxpbmVzIDI2MCB0byAzMTAgb2YgYGJsb2NrL2Jsay1tcS5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvcmUgb2YgdGhpcyBtdWx0aS1xdWV1ZSBibG9jayBsYXllciBpcyB3b3JraW5nLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgcmVxdWVzdHMgYXJlIGhhbmRsZWQgd2l0aGluIGEgcXVldWUgY29udGV4dC4gSSdtIGxvb2tpbmcgZm9yIHdoZXJlIHJlcXVlc3RzIGFyZSBlbnF1ZXVlZCwgd2hlcmUgdGhleSdyZSBkZXF1ZXVlZCwgaG93IHRoZWlyIGxpZmVjeWNsZSBpcyBtYW5hZ2VkLiBJ4oCZbSB0aGlua2luZyB0aGlzIHNlY3Rpb24gd2lsbCBjb3ZlciB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGxvZ2ljIGJlaGluZCByZXF1ZXN0IHN1Ym1pc3Npb24gYW5kIGNvbXBsZXRpb24uIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgaWxsdW1pbmF0ZSBhbnkgc3VidGxldGllcyBpbiBob3cgYmxrLW1xIGludGVyYWN0cyB3aXRoIHRoZSBpbmRpdmlkdWFsIGhhcmR3YXJlIHF1ZXVlcy4gVWx0aW1hdGVseSwgSSdtIGFpbWluZyB0byBidWlsZCBhIGRlZXBlciBtZW50YWwgbW9kZWwgb2YgaG93IGRhdGEgbW92ZXMgZnJvbSB0aGUgZmlsZXN5c3RlbSBkb3duIHRvIHRoZSBzdG9yYWdlIGRldmljZSB3aXRoIGJsay1tcS4gSSdsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGUgY29kZSBoYW5kbGVzIGRpZmZlcmVudCByZXF1ZXN0IHByaW9yaXRpZXMgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBxdWV1ZXMgdG8gZW5zdXJlIG9wdGltYWwgcGFyYWxsZWxpc20gYW5kIG1pbmltYWwgbGF0ZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowNC40MjYwNDA2NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImJsb2NrL2Jsay1tcS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI2MDpcXHQgKi9cXG4gMjYxOlxcdHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbiAyNjI6XFx0e1xcbiAyNjM6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4gMjY2OlxcdFxcdGlmICghcS1cXHUwMDNlcXVpZXNjZV9kZXB0aCsrKVxcbiAyNjc6XFx0XFx0XFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xcbiAyNjg6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cS1cXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xcbiAyNjk6XFx0fVxcbiAyNzA6XFx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0LyoqXFxuIDI3MzpcXHQgKiBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAtIHdhaXQgdW50aWwgaW4tcHJvZ3Jlc3MgcXVpZXNjZSBpcyBkb25lXFxuIDI3NDpcXHQgKiBAc2V0OiB0YWdfc2V0IHRvIHdhaXQgb25cXG4gMjc1OlxcdCAqXFxuIDI3NjpcXHQgKiBOb3RlOiBpdCBpcyBkcml2ZXIncyByZXNwb25zaWJpbGl0eSBmb3IgbWFraW5nIHN1cmUgdGhhdCBxdWllc2NlIGhhc1xcbiAyNzc6XFx0ICogYmVlbiBzdGFydGVkIG9uIG9yIG1vcmUgb2YgdGhlIHJlcXVlc3RfcXVldWVzIG9mIHRoZSB0YWdfc2V0LiAgVGhpc1xcbiAyNzg6XFx0ICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcXG4gMjc5OlxcdCAqIHRoZSBxdWllc2NlIGZsYWcgc2V0IHVzaW5nIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdC5cXG4gMjgwOlxcdCAqL1xcbiAyODE6XFx0dm9pZCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuIDI4MjpcXHR7XFxuIDI4MzpcXHRcXHRpZiAoc2V0LVxcdTAwM2VmbGFncyBcXHUwMDI2IEJMS19NUV9GX0JMT0NLSU5HKVxcbiAyODQ6XFx0XFx0XFx0c3luY2hyb25pemVfc3JjdShzZXQtXFx1MDAzZXNyY3UpO1xcbiAyODU6XFx0XFx0ZWxzZVxcbiAyODY6XFx0XFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuIDI4NzpcXHR9XFxuIDI4ODpcXHRFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUpO1xcbiAyODk6XFx0XFxuIDI5MDpcXHQvKipcXG4gMjkxOlxcdCAqIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgLSB3YWl0IHVudGlsIGFsbCBvbmdvaW5nIGRpc3BhdGNoZXMgaGF2ZSBmaW5pc2hlZFxcbiAyOTI6XFx0ICogQHE6IHJlcXVlc3QgcXVldWUuXFxuIDI5MzpcXHQgKlxcbiAyOTQ6XFx0ICogTm90ZTogdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcmV2ZW50IHRoYXQgdGhlIHN0cnVjdCByZXF1ZXN0IGVuZF9pbygpXFxuIDI5NTpcXHQgKiBjYWxsYmFjayBmdW5jdGlvbiBpcyBpbnZva2VkLiBPbmNlIHRoaXMgZnVuY3Rpb24gaXMgcmV0dXJuZWQsIHdlIG1ha2VcXG4gMjk2OlxcdCAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcXG4gMjk3OlxcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKS5cXG4gMjk4OlxcdCAqL1xcbiAyOTk6XFx0dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG4gMzAwOlxcdHtcXG4gMzAxOlxcdFxcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcXG4gMzAyOlxcdFxcdC8qIG5vdGhpbmcgdG8gd2FpdCBmb3Igbm9uLW1xIHF1ZXVlcyAqL1xcbiAzMDM6XFx0XFx0aWYgKHF1ZXVlX2lzX21xKHEpKVxcbiAzMDQ6XFx0XFx0XFx0YmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKHEtXFx1MDAzZXRhZ19zZXQpO1xcbiAzMDU6XFx0fVxcbiAzMDY6XFx0RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xcbiAzMDc6XFx0XFxuIDMwODpcXHQvKlxcbiAzMDk6XFx0ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIC0gY291bnRlcnBhcnQgb2YgYmxrX21xX3F1aWVzY2VfcXVldWUoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTowNC40MjYyOTEwMzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM2OTExMjEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQnVnIEZpeDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIGJ1ZyByZWxhdGVkIHRvIHRoZSBkZWxldGlvbiBvZiB2aXJ0cXVldWVzIGluIHRoZSBgdmlydGJsa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHN1c3BlbmQsIGhpYmVybmF0ZSwgb3IgZGV2aWNlIHJlc2V0LiBUaGUga2V5IGlzIGluIGhvdyBgYmxrX21xX3F1aWVzY2VfcXVldWVgIGludGVyYWN0cyB3aXRoIHRoZSBSQ1UgbWVjaGFuaXNtLiBCZWZvcmUsIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIHdhcyB1c2VkLCB3aGljaCBkaWRuJ3Qgd2FpdCBmb3IgdGhlIFJDVSBncmFjZSBwZXJpb2QgdmlhIGBzeW5jaHJvbml6ZV9yY3VgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG9uZ29pbmcgZGlzcGF0Y2hlcyBhY2Nlc3NpbmcgZGVsZXRlZCB2aXJ0cXVldWVzLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLCBxdWl0ZSBuYXN0eS4gVGhpcyBjb2RlIHdhcyBjaGFuZ2VkIHRvIGFkZHJlc3MgdGhhdCwgYW5kIG5vdyBjYWxscyBgYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAuXG5cbk15IG1pbmQgaXMgbm93IHJhY2luZyB0b3dhcmRzIHJlYWNoYWJpbGl0eSBhbmQgZnV6emFiaWxpdHkuIExldCdzIHNlZS4uLiBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0IHVzZXMgYGJsa19tcV9mcmVlemVfcXVldWVgLCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV91bmZyZWV6ZV9xdWV1ZWAuIE9rYXksIHdoZW4gaXMgYHZpcnRibGtfZnJlZXplX3ByaXZgIGNhbGxlZD8gVGhlcmUgYXJlIHR3byBrZXkgZW50cnkgcG9pbnRzOiBgdmlydGJsa19mcmVlemVgIGFuZCBgdmlydGJsa19yZXNldF9wcmVwYXJlYC4gTm93LCBgdmlydGJsa19mcmVlemVgIGdldHMgY2FsbGVkIGR1cmluZyBQTSBvcGVyYXRpb25zIGxpa2Ugc2xlZXAsIGhpYmVybmF0ZSwgc3VzcGVuZCwgdHJpZ2dlcmVkIHZpYSBgL3N5cy9wb3dlci9zdGF0ZWAuIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGlzIHJlbGF0ZWQgdG8gdmlydGlvIHJlc2V0cyBvciBvdGhlciByZXNldCBzY2VuYXJpb3MsIGxpa2UgUENJIG9yIFNSLUlPVi5cblxuVGhlIGJpZyBxdWVzdGlvbiBub3c6IGNhbiB0aGVzZSB0cmlnZ2VycyBiZSByZWFjaGVkIGluIGEgZnV6emVyIGxpa2Ugc3l6a2FsbGVyPyBJdCBsb29rcyBsaWtlIHN5emthbGxlciBkb2VzIGV4ZWN1dGUgcG93ZXIgbWFuYWdlbWVudC1yZWxhdGVkIHN5c2NhbGxzIGFuZCBzeXNmcyB3cml0ZXMuIEl0IGRvZXMgdGhpbmdzIGxpa2UgYHN5el9tb3VudF9pbWFnZWAsIHdyaXRlIHRvIGAvc3lzL3Bvd2VyL3N0YXRlYCwgYW5kIGNhbiBkbyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMsIGlvY3RscywgdmlydGlvIHJlc2V0cy4gVGhhdCdzIGdvb2QhXG5cbk5leHQsIGlzIGB2aXJ0aW9fYmxrYCByZWFjaGFibGU/IFllcywgdGhhdCdzIHRoZSBzdGFuZGFyZCB2aXJ0aW8gYmxvY2sgZHJpdmVyIChgQ09ORklHX1ZJUlRJT19CTEtgKS4gVGhhdCBzaG91bGQgYmUgcHJlc2VudCBpbiBtb3N0IHN5c3RlbXMgYW5kIHRlc3QgY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEkgc2hvdWxkIGNoZWNrIHRoYXQgYENPTkZJR19QTV9TTEVFUGAgaXMgZW5hYmxlZCwgd2hpY2ggaXQgc2VlbXMgdG8gYmUgaW4gbW9zdCBrZXJuZWxzLiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgVklSVElPX0JMS2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLiBJIG5lZWQgdG8ga25vdyBhbGwgdGhlIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZC4gSXQgc2VlbXMgbGlrZSBpdCBpcyBhIHZlcnkgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjYxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTAuNzk1NDA1NTQ4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjIxNDIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwNi1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA3OmNvbmZpZyBWSVJUSU9fQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMwOC1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTAuODQ3NjI1Mjk3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNDMwNjE3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEJsb2NrIERyaXZlciBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4gSSByZWNhbGwgc29tZXRoaW5nIHNwZWNpZmljLCBhcm91bmQgbGluZSAzMDcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlcywgcGFydGljdWxhcmx5IHdoYXRldmVyJ3MgYmVpbmcgc2V0IHVwIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGJsb2NrIHN1YnN5c3RlbS4gSSB3YW50IHRvIHNlZSBpZiBhbnkgZmxhZ3Mgb3Igc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkIHRoYXQgY291bGQgYWZmZWN0IHJlY2VudCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgaXNzdWVzIEnigJl2ZSBiZWVuIGxvb2tpbmcgYXQuIFRoaXMgc3BlY2lmaWMgbG9jYXRpb24gKnNob3VsZCogaGF2ZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgSSdtIGFmdGVyLCBhbmQgaG9wZWZ1bGx5LCBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgSSBuZWVkIHRvIG1vdmUgZm9yd2FyZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzQ4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTQuOTkwNjg5NTU0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDU6XFx0XFxuIDMwNjpcXHRcXG4gMzA3OlxcdGNvbmZpZyBWSVJUSU9fQkxLXFxuIDMwODpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydGlvIGJsb2NrIGRyaXZlclxcXCJcXG4gMzA5OlxcdFxcdGRlcGVuZHMgb24gVklSVElPXFxuIDMxMDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAzMTE6XFx0XFx0aGVscFxcbiAzMTI6XFx0XFx0ICBUaGlzIGlzIHRoZSB2aXJ0dWFsIGJsb2NrIGRyaXZlciBmb3IgdmlydGlvLiAgSXQgY2FuIGJlIHVzZWQgd2l0aFxcbiAzMTM6XFx0ICAgICAgICAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS4gIFNheSBZIG9yIE0uXFxuIDMxNDpcXHRcXG4gMzE1OlxcdGNvbmZpZyBCTEtfREVWX1JCRFxcbiAzMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJhZG9zIGJsb2NrIGRldmljZSAoUkJEKVxcXCJcXG4gMzE3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbiAzMTg6XFx0XFx0c2VsZWN0IENFUEhfTElCXFxuIDMxOTpcXHRcXHRoZWxwXFxuIDMyMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgaW5jbHVkZSB0aGUgUmFkb3MgYmxvY2sgZGV2aWNlLCB3aGljaCBzdHJpcGVzXFxuIDMyMTpcXHRcXHQgIGEgYmxvY2sgZGV2aWNlIG92ZXIgb2JqZWN0cyBzdG9yZWQgaW4gdGhlIENlcGggZGlzdHJpYnV0ZWQgb2JqZWN0XFxuIDMyMjpcXHRcXHQgIHN0b3JlLlxcbiAzMjM6XFx0XFxuIDMyNDpcXHRcXHQgIE1vcmUgaW5mb3JtYXRpb24gYXQgaHR0cDovL2NlcGgubmV3ZHJlYW0ubmV0Ly5cXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMjc6XFx0XFxuIDMyODpcXHRjb25maWcgQkxLX0RFVl9VQkxLXFxuIDMyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MTQuOTkwNzg0NDM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NzQzMDQ4NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBhdGNoIEFwcGxpY2FiaWxpdHkgdG8gRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyByZWxldmFudCBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgY2hlY2tpbmcgU2VjdGlvbiAyIGFuZCBTZWN0aW9uIDMgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24uICBTZWN0aW9uIDIgbGF5cyBvdXQgKm5lZ2F0aXZlKiBjcml0ZXJpYSDigJMgc2NlbmFyaW9zIHdoZXJlIGZ1enppbmcgaXNuJ3Qgd29ydGh3aGlsZS4gIEl0IGhpZ2hsaWdodHMgdGhpbmdzIGxpa2Ugbm9uLWtlcm5lbCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgaW5hY2Nlc3NpYmxlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGtleSBoZXJlIGlzIHRvIHZlcmlmeSB3aGV0aGVyIGB2aXJ0YmxrX2ZyZWV6ZV9wcml2YCBmYWxscyBpbnRvIGFueSBvZiB0aG9zZSBcInVucmVhY2hhYmxlXCIgY2F0ZWdvcmllcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hlcmUgYHZpcnRibGtfZnJlZXplX3ByaXZgIGlzIGNhbGxlZC4gSXTigJlzIGRlZmluaXRlbHkgKm5vdCogY2FsbGVkIGJ5IGB2aXJ0YmxrX3JlbW92ZWAsIHNvIEkgY2FuIGlnbm9yZSBpdHMgb3duIGxvZ2ljLiBJbnN0ZWFkLCBgdmlydGJsa19mcmVlemVfcHJpdmAgaXMgY2FsbGVkIGJ5IGB2aXJ0YmxrX2ZyZWV6ZWAgYW5kIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgLlxuXG5BbHJpZ2h0LCBhIGRlZXBlciBkaXZlOiBgdmlydGJsa19mcmVlemVgIGlzIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCAtIHRoaW5rIFBNIHNsZWVwLCBoaWJlcm5hdGlvbiwgYW5kIHN1c3BlbmQuIGB2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVgIGlzIHJlbGF0ZWQgdG8gZGV2aWNlIHJlc2V0LCB0cmlnZ2VyZWQgaW4gZGlmZmVyZW50IHdheXMsIGluY2x1ZGluZyBjYWxscyB2aWEgYHZpcnRpb19wY2lfcmVzZXRfcHJlcGFyZWAuIENydWNpYWxseSwgdGhlc2Ugc2xlZXAvZnJlZXplIHN0YXRlcyBjYW4gYmUgKmluaXRpYXRlZCBmcm9tIHVzZXJzcGFjZSogdmlhIHN5c2ZzIGVudHJpZXMgbGlrZSBgL3N5cy9wb3dlci9zdGF0ZWAuIEdpdmVuIHRoYXQgYHZpcnRpb19ibGtgIGlzIGEgdmlydHVhbGl6ZWQgZHJpdmVyIGNvbW1vbiBpbiBLVk0vUUVNVSBlbnZpcm9ubWVudHMsIGFuZCB0aGlzIGlzIHdoZXJlIHN5emthbGxlciBpcyBub3JtYWxseSBvcGVyYXRpbmcsIHRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZS5cblxuU2VjdGlvbiAzIGZ1cnRoZXIgc3VwcG9ydHMgdGhpcyAtIEkgbXVzdCBhbHNvIGNoZWNrIGlmIHRoZSBwYXRjaCBtb2RpZmllcyBydW50aW1lIGNoZWNrcy9hc3NlcnRpb25zIG9yIHJlYWNoYWJsZSBjb2RlLiAgVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHF1ZXVlIHF1aWVzY2luZyBiZWhhdmlvciAtIGZyb20gYSBub24tYmxvY2tpbmcgb3BlcmF0aW9uIChgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCkgdG8gYSBibG9ja2luZyBvbmUgKGBibGtfbXFfcXVpZXNjZV9xdWV1ZWApLiAgVGhhdCBpbXBsaWVzIGEgY2hhbmdlIGluIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBzZW1hbnRpY3MgZHVyaW5nIGZyZWV6ZS9yZXNldCBmb3IgdmlydGlvX2JsayBkZXZpY2VzLlxuXG5Ob3csIGxldCdzIGxpc3QgdGhlIGtleSBzeW1ib2xzIGFmZmVjdGVkLiBUaGlzIHBhdGNoIGFsdGVyczogYHZpcnRibGtfZnJlZXplX3ByaXZgLCBgdmlydGJsa19mcmVlemVgLCBgdmlydGJsa19yZXNldF9wcmVwYXJlYCwgYHZpcnRibGtfcmVzdG9yZV9wcml2YCwgYHZpcnRibGtfcmVzdG9yZWAsIGFuZCBgdmlydGJsa19yZXNldF9kb25lYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGVzZSBhcmUgc3RhdGljLlxuXG5DaGVja2luZyBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgLCBJIGNhbiBzZWUgdGhhdCBgdmlydGJsa19mcmVlemVfcHJpdmAsIGB2aXJ0YmxrX2ZyZWV6ZWAsIGFuZCBgdmlydGJsa19yZXNldF9wcmVwYXJlYCBhcmUgYWxsICpzdGF0aWMqLiAgSG93ZXZlciwgd2hpbGUgdGhleSBhcmUgYHN0YXRpY2AsIHRoZXkncmUgc3RpbGwgc3ltYm9scyB3aXRoaW4gYHZpcnRpb19ibGsub2AuICBJIGFsc28ga25vdyB0aGF0ICBgdmlydGlvX2RldmljZV9mcmVlemVgIGFuZCBgdmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlYCBhcmUgaW4gYGRyaXZlcnMvdmlydGlvL3ZpcnRpby5jYCwgYW5kIHNvIHRob3NlIHdpbGwgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzOiBgVklSVElPX0JMS2AsIGBWSVJUSU9gLCBhbmQgYFBNX1NMRUVQYCBhcmUgZXNzZW50aWFsLlxuXG5GaW5hbGx5LCBJIGNhbiBjb25maWRlbnRseSB2ZXJpZnkgdGhlIHJlcXVpcmVtZW50czpcblxuMS4gIGBXb3J0aEZ1enppbmdgOiBUcnVlIChiZWNhdXNlIHdlJ3ZlIGVzdGFibGlzaGVkIHJlYWNoYWJpbGl0eSkuXG4yLiAgYEZvY3VzU3ltYm9sc2A6IGBbXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsIFwidmlydGJsa19mcmVlemVcIiwgXCJ2aXJ0YmxrX3Jlc2V0X3ByZXBhcmVcIiwgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLCBcInZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZVwiXWAgKHN5bWJvbHMgcmVsZXZhbnQgdG8gZnJlZXplL3Jlc2V0KS5cbjMuICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJWSVJUSU9fQkxLXCIsIFwiVklSVElPXCIsIFwiUE1fU0xFRVBcIl1gIChuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMpLlxuNC4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdmlydGlvLWJsayBxdWV1ZSBxdWllc2NpbmcgZHVyaW5nIGZyZWV6ZS9yZXNldCwgbWFraW5nIHRoZSBxdWllc2Npbmcgc3luY2hyb25vdXMgaW5zdGVhZCBvZiBhc3luY2hyb25vdXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgZHVyaW5nIFBNIGFuZCBkZXZpY2UgcmVzZXQuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTkyMywiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MzEuNzMzODM3MzA3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0MTQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19CTEtcIixcbiAgICBcIlZJUlRJT1wiLFxuICAgIFwiUE1fU0xFRVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZV9wcml2XCIsXG4gICAgXCJ2aXJ0YmxrX2ZyZWV6ZVwiLFxuICAgIFwidmlydGJsa19yZXNldF9wcmVwYXJlXCIsXG4gICAgXCJ2aXJ0aW9fZGV2aWNlX2ZyZWV6ZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9yZXNldF9wcmVwYXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSB0byB0aGUgc3luY2hyb25vdXMgYmxrX21xX3F1aWVzY2VfcXVldWUoKSBkdXJpbmcgdmlydGlvX2JsayBkZXZpY2UgZnJlZXplIGFuZCByZXNldCBwcmVwYXJhdGlvbiwgZW5zdXJpbmcgdGhhdCBSQ1UgZ3JhY2UgcGVyaW9kcyBhbmQgaW4tZmxpZ2h0IGRpc3BhdGNoZXMgY29tcGxldGUgYmVmb3JlIHZpcnRxdWV1ZXMgYXJlIGRlbGV0ZWQuIFRoaXMgdG91Y2hlcyByZWFjaGFibGUgcG93ZXIgbWFuYWdlbWVudCBhbmQgcmVzZXQgcGF0aHMgZm9yIHZpcnRpbyBibG9jayBkZXZpY2VzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fQkxLXCIsXG4gICAgXCJWSVJUSU9cIixcbiAgICBcIlBNX1NMRUVQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydGJsa19mcmVlemVfcHJpdlwiLFxuICAgIFwidmlydGJsa19mcmVlemVcIixcbiAgICBcInZpcnRibGtfcmVzZXRfcHJlcGFyZVwiLFxuICAgIFwidmlydGlvX2RldmljZV9mcmVlemVcIixcbiAgICBcInZpcnRpb19kZXZpY2VfcmVzZXRfcHJlcGFyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkgdG8gdGhlIHN5bmNocm9ub3VzIGJsa19tcV9xdWllc2NlX3F1ZXVlKCkgZHVyaW5nIHZpcnRpb19ibGsgZGV2aWNlIGZyZWV6ZSBhbmQgcmVzZXQgcHJlcGFyYXRpb24sIGVuc3VyaW5nIHRoYXQgUkNVIGdyYWNlIHBlcmlvZHMgYW5kIGluLWZsaWdodCBkaXNwYXRjaGVzIGNvbXBsZXRlIGJlZm9yZSB2aXJ0cXVldWVzIGFyZSBkZWxldGVkLiBUaGlzIHRvdWNoZXMgcmVhY2hhYmxlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlc2V0IHBhdGhzIGZvciB2aXJ0aW8gYmxvY2sgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjMxLjgxNzI2MDQ4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTE1NzY4NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTozMS44MTc4MDI2NjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjA1MTAyOTU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpIHdpdGggYmxrX21xX3F1aWVzY2VfcXVldWUocSkgaW4gdmlydGJsa19mcmVlemVfcHJpdigpIHRvIGVuc3VyZSB0aGUgYmxvY2sgcmVxdWVzdCBxdWV1ZSBpcyBzeW5jaHJvbm91c2x5IHF1aWVzY2VkIGJlZm9yZSBkZWxldGluZyBhbmQgZnJlZWluZyB0aGUgdmlydHF1ZXVlcy4gVGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbi90aW1pbmcgZml4IHRoYXQgcHJldmVudHMgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgZGV2aWNlIGZyZWV6ZS9wb3dlciBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgcHJlc2VudHMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgZmFjaWxpdGllcy4gRGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlNWFkZGYyMDk3MjJhZDRjMWE1MzFjY2Q2NmY3NjkwZTkzZWE2ZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxODowNDozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbmluZGV4IDMyYmYzYmEwN2E5ZGMuLjdhNTcwNTkxZTA0MGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuY1xuKysrIGIvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcbkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBzdGF0aWMgaW50IHZpcnRibGtfZnJlZXplX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4gXG4gXHQvKiBFbnN1cmUgbm8gcmVxdWVzdHMgaW4gdmlydHF1ZXVlcyBiZWZvcmUgZGVsZXRpbmcgdnFzLiAqL1xuIFx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuLVx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpO1xuK1x0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG4gXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuIFxuIFx0LyogRW5zdXJlIHdlIGRvbid0IHJlY2VpdmUgYW55IG1vcmUgaW50ZXJydXB0cyAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTg6MDU6MzEuODE3ODAzOTM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1ODg4NTY4ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIHZzLiBLQVNBTiBGdXp6aW5nIERlY2lzaW9uIGZvciBgdmlydGlvX2Jsay5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRlY2lkZSBpZiB3ZSBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNgIG9yIGlmIEtBU0FOIGlzIHN1ZmZpY2llbnQuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuTXkgaW5pdGlhbCByaXNrIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBsb29rcyBsaWtlIGEgdGVzdGluZy9RQSByZWxhdGVkIHBhdGNoLCBhbmQgdGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgYmVuaWduLiBUaGUgdXNlciBpcyBlc3NlbnRpYWxseSBhc2tpbmcgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuIEkgdGhpbmsgdGhpcyBpcyBhIHNhZmUgcmVxdWVzdCB0byBmdWxmaWxsLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBzaW1wbGUgY2hhbmdlLCByZXBsYWNpbmcgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgd2l0aCBgYmxrX21xX3F1aWVzY2VfcXVldWVgLiBJIHJlbWVtYmVyIHNvbWUgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgbHVya2luZyBhcm91bmQgdGhlc2UgZnVuY3Rpb25zLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYW55IHN1YnRsZSBjaGFuZ2UgaW4gc2VtYW50aWNzLlxuXG5JJ2xsIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGB2aXJ0aW9fYmxrLmNgIGFyb3VuZCBsaW5lIDE1OTUgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aCBgcmVhZC1maWxlYC4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBsaWtlbHkgaW1wYWN0IG9mIHRoZSBjaGFuZ2UuIE9uY2UgSSBoYXZlIHRoZSBjb250ZXh0LCBJIGNhbiBtYWtlIGEganVkZ2VtZW50IG9uIHdoZXRoZXIgdGhlIGNoYW5nZXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCBtZW1vcnkgaW4gYSB3YXkgdGhhdCBLTVNBTiB3b3VsZCBiZSBzcGVjaWZpY2FsbHkgdmFsdWFibGUgZm9yLiBJZiB0aGlzIGlzIGEgc2ltcGxlIHN5bmNocm9uaXphdGlvbiB0d2VhaywgS0FTQU4gaXMgbGlrZWx5IHN1ZmZpY2llbnQuIElmIGl0IGludm9sdmVzIHN1YnRsZSBjaGFuZ2VzIHRvIG1lbW9yeSBsYXlvdXQsIG1heWJlIEtNU0FOIHdvdWxkIGJlIG1vcmUgdGFyZ2V0ZWQuIEknbGwgbmVlZCB0byBrbm93IG1vcmUgYmVmb3JlIEkgY2FuIGRlY2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjQ3LjcwNjM3NTE2M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU4MDpcXHRcXHR2YmxrLVxcdTAwM2V2ZGV2ID0gTlVMTDtcXG4xNTgxOlxcdFxcbjE1ODI6XFx0XFx0dmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VkZWxfdnFzKHZkZXYpO1xcbjE1ODM6XFx0XFx0a2ZyZWUodmJsay1cXHUwMDNldnFzKTtcXG4xNTg0OlxcdFxcbjE1ODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2YmxrLVxcdTAwM2V2ZGV2X211dGV4KTtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0cHV0X2Rpc2sodmJsay1cXHUwMDNlZGlzayk7XFxuMTU4ODpcXHR9XFxuMTU4OTpcXHRcXG4xNTkwOlxcdHN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4xNTkxOlxcdHtcXG4xNTkyOlxcdFxcdHN0cnVjdCB2aXJ0aW9fYmxrICp2YmxrID0gdmRldi1cXHUwMDNlcHJpdjtcXG4xNTkzOlxcdFxcdHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gdmJsay1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWU7XFxuMTU5NDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTU5NTpcXHRcXG4xNTk2OlxcdFxcdC8qIEVuc3VyZSBubyByZXF1ZXN0cyBpbiB2aXJ0cXVldWVzIGJlZm9yZSBkZWxldGluZyB2cXMuICovXFxuMTU5NzpcXHRcXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuMTU5ODpcXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShxKTtcXG4xNTk5OlxcdFxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdFxcdC8qIEVuc3VyZSB3ZSBkb24ndCByZWNlaXZlIGFueSBtb3JlIGludGVycnVwdHMgKi9cXG4xNjAyOlxcdFxcdHZpcnRpb19yZXNldF9kZXZpY2UodmRldik7XFxuMTYwMzpcXHRcXG4xNjA0OlxcdFxcdC8qIE1ha2Ugc3VyZSBubyB3b3JrIGhhbmRsZXIgaXMgYWNjZXNzaW5nIHRoZSBkZXZpY2UuICovXFxuMTYwNTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZ2YmxrLVxcdTAwM2Vjb25maWdfd29yayk7XFxuMTYwNjpcXHRcXG4xNjA3OlxcdFxcdHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZGVsX3Zxcyh2ZGV2KTtcXG4xNjA4OlxcdFxcdGtmcmVlKHZibGstXFx1MDAzZXZxcyk7XFxuMTYwOTpcXHRcXHQvKlxcbjE2MTA6XFx0XFx0ICogU2V0IHRvIE5VTEwgdG8gcHJldmVudCBmcmVlaW5nIHZxcyBhZ2FpbiBhZnRlciBhIGZhaWxlZCB2cXNcXG4xNjExOlxcdFxcdCAqIGFsbG9jYXRpb24gZHVyaW5nIHJlc3VtZS4gTm90ZSB0aGF0IGtmcmVlKCkgYWxyZWFkeSBoYW5kbGVzIE5VTExcXG4xNjEyOlxcdFxcdCAqIHBvaW50ZXJzIHNhZmVseS5cXG4xNjEzOlxcdFxcdCAqL1xcbjE2MTQ6XFx0XFx0dmJsay1cXHUwMDNldnFzID0gTlVMTDtcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0cmV0dXJuIDA7XFxuMTYxNzpcXHR9XFxuMTYxODpcXHRcXG4xNjE5OlxcdHN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE4OjA1OjQ3LjcwNjQ4NTQyM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTYyMzE5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IHZpcnRibGtfZnJlZXplX3ByaXYoKSBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBob3cgd2UgaGFuZGxlIHF1ZXVlIHF1aWVzY2luZyBpbiBgdmlydGJsa19mcmVlemVfcHJpdigpYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlcGxhY2luZyBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpYCB3aXRoIGBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKWAuIFRoZSBjcml0aWNhbCBkaWZmZXJlbmNlIGlzIHRoZSB3YWl0aW5nIGJlaGF2aW9yOiBgbm93YWl0YCBpcyAqYXN5bmNocm9ub3VzKiwgd2hpbGUgdGhlIHVwZGF0ZWQgdmVyc2lvbiBpcyAqc3luY2hyb25vdXMqLiBUaGlzIGVuc3VyZXMgd2Ugd2FpdCBmb3IgYWxsIGluLWZsaWdodCByZXF1ZXN0cyBhbmQgcXVldWUgaGFuZGxlcnMgdG8gY29tcGxldGUgYmVmb3JlIHRlYXJpbmcgZG93biB0aGUgdmlydHF1ZXVlcyAoYGRlbF92cXNgIGFuZCBga2ZyZWVgKS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgYSBzeW5jaHJvbml6YXRpb24gZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgcmFjZSBjb25kaXRpb24uIFRoZSBnb2FsIGlzIHRvIGF2b2lkIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgb3Igb3RoZXIgY29uY3VycmVuY3kgaXNzdWVzIHRoYXQgY291bGQgYXJpc2UgaWYgd2UgZGVsZXRlZCB0aGUgdmlydHF1ZXVlcyB3aGlsZSByZXF1ZXN0cyB3ZXJlIHN0aWxsIGFjdGl2ZS5cblxuTm93LCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBBbSBJIGludHJvZHVjaW5nIGFueSByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk/IFxuXG4xLiAgS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2Ugd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm9wZSwgbm90IGhlcmUuXG4yLiAgQ29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IERvZXNuJ3QgbG9vayBsaWtlIGl0LlxuMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8gY2hhbmdlcyB0aGVyZS5cbjQuICBBbnl0aGluZyB3aXRoIGJvdW5kcyBjaGVja3MsIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IERvZXNuJ3QgYXBwbHkgaGVyZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUuIFdlJ3JlIHByZXZlbnRpbmcgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgZGV2aWNlIGZyZWV6ZSBvciBwb3dlciBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHF1ZXVlIHF1aWVzY2luZy4gVGhlIGJ1ZyB3ZSdyZSB0cnlpbmcgdG8gZml4IGlzIGEgY29uY3VycmVuY3kgaXNzdWUgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIG9yIGRhdGEgY29ycnVwdGlvbi4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMgYXJlIGRlc2lnbmVkIHRvIGNhdGNoIG1lbW9yeSBzYWZldHkgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2ssIG9yIGFuIGluZm8gbGVhayBpbnRyb2R1Y2VkLlxuXG5TbywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGFuZCBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBjaGVjayBsaXN0LCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLlxuXG5Ob3csIGxldCdzIHByZXBhcmUgdGhlIHJlYXNvbmluZyBmb3IgYHNldC1yZXN1bHRzYDpcblxuKiAgIFRoZSBwYXRjaCBtYWtlcyBhIGRpcmVjdCBjaGFuZ2UgaW4gYHZpcnRibGtfZnJlZXplX3ByaXYoKWAgaW4gYGRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jYCwgd2hlcmUgaXQgcmVwbGFjZXMgYW4gYXN5bmNocm9ub3VzIHF1aWVzY2Ugb3BlcmF0aW9uIHdpdGggYSBzeW5jaHJvbm91cyBvbmUuXG4qICAgVGhpcyBzeW5jaHJvbm91cyBvcGVyYXRpb24gZW5zdXJlcyB0aGF0IGFsbCBvdXRzdGFuZGluZyBxdWV1ZSBhY3Rpdml0eSBpcyBjb21wbGV0ZSBiZWZvcmUgcHJvY2VlZGluZyB0byBkZXZpY2UgcmVzZXQgYW5kIHZpcnRxdWV1ZSBkZWxldGlvbi5cbiogICBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlIGVycm9ycyBkdXJpbmcgZGV2aWNlIGZyZWV6aW5nLlxuKiAgIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGNoYW5nZXMsIG9yIG5ldyBwYXRocyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGNvcGllZCB0byB1c2Vyc3BhY2UuXG4qICAgVGhlIGNvZGUgaXMgYWxyZWFkeSBzdXNjZXB0aWJsZSB0byBLQVNBTiBpc3N1ZXMgaW4gdGhlIGNvbnRleHQgb2YgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgZXRjLlxuXG5UaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNSwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxODowNTo1My44Njg4MDg4NDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKSB3aXRoIGJsa19tcV9xdWllc2NlX3F1ZXVlKHEpIGluIHZpcnRibGtfZnJlZXplX3ByaXYoKSB0byBlbnN1cmUgdGhlIGJsb2NrIHJlcXVlc3QgcXVldWUgaXMgc3luY2hyb25vdXNseSBxdWllc2NlZCBiZWZvcmUgZGVsZXRpbmcgYW5kIGZyZWVpbmcgdGhlIHZpcnRxdWV1ZXMuIFRoaXMgaXMgYSBzeW5jaHJvbml6YXRpb24vdGltaW5nIGZpeCB0aGF0IHByZXZlbnRzIHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGRldmljZSBmcmVlemUvcG93ZXIgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGUgY2hhbmdlIHByZXNlbnRzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBhcmUgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIGZhY2lsaXRpZXMuIERlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSkgd2l0aCBibGtfbXFfcXVpZXNjZV9xdWV1ZShxKSBpbiB2aXJ0YmxrX2ZyZWV6ZV9wcml2KCkgdG8gZW5zdXJlIHRoZSBibG9jayByZXF1ZXN0IHF1ZXVlIGlzIHN5bmNocm9ub3VzbHkgcXVpZXNjZWQgYmVmb3JlIGRlbGV0aW5nIGFuZCBmcmVlaW5nIHRoZSB2aXJ0cXVldWVzLiBUaGlzIGlzIGEgc3luY2hyb25pemF0aW9uL3RpbWluZyBmaXggdGhhdCBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBkZXZpY2UgZnJlZXplL3Bvd2VyIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBwcmVzZW50cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgYXJlIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyBmYWNpbGl0aWVzLiBEZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[1] Phase: Succeeded StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2] Phase: Succeeded StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 18:06:04 +0000 UTC FinishedAt: 2026-09-10 18:06:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflownl6zb/series-workflownl6zb-convert-artifact-715039491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 18:06:14 +0000 UTC FinishedAt: 2026-09-10 18:22:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 18:06:14 +0000 UTC FinishedAt: 2026-09-10 18:22:42 +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:*956ddd6b-30b4-40b4-a43b-3d6217c06c96,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-workflownl6zb/series-workflownl6zb-convert-artifact-715039491/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": "e1f16edc-490c-46d9-8cb1-cf742980e1be", "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-workflownl6zb/series-workflownl6zb-build-action-3100726129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 18:06:14 +0000 UTC FinishedAt: 2026-09-10 18:22:32 +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:*956ddd6b-30b4-40b4-a43b-3d6217c06c96,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-workflownl6zb/series-workflownl6zb-convert-artifact-715039491/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": "e1f16edc-490c-46d9-8cb1-cf742980e1be", "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-workflownl6zb/series-workflownl6zb-build-action-3100726129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 18:22:42 +0000 UTC FinishedAt: 2026-09-10 18:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 18:22:43 +0000 UTC FinishedAt: 2026-09-10 18:22:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 18:22:43 +0000 UTC FinishedAt: 2026-09-10 18:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 18:22:43 +0000 UTC FinishedAt: 2026-09-10 18:22:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflownl6zb/series-workflownl6zb-convert-artifact-933137338/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 18:22:53 +0000 UTC FinishedAt: 2026-09-10 18:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 18:22:53 +0000 UTC FinishedAt: 2026-09-10 18:24:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1f16edc-490c-46d9-8cb1-cf742980e1be,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-workflownl6zb/series-workflownl6zb-build-action-3100726129/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-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 18:24:54 +0000 UTC FinishedAt: 2026-09-10 18:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 18:24:54 +0000 UTC FinishedAt: 2026-09-10 18:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 18:24:54 +0000 UTC FinishedAt: 2026-09-10 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 18:24:54 +0000 UTC FinishedAt: 2026-09-10 18:44:10 +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:*956ddd6b-30b4-40b4-a43b-3d6217c06c96,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-workflownl6zb/series-workflownl6zb-convert-artifact-933137338/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": "e7c9fb92-eb7d-4d0b-bc08-690e95f01571", "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-workflownl6zb/series-workflownl6zb-build-action-3402447390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 18:24:54 +0000 UTC FinishedAt: 2026-09-10 18:43:48 +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:*956ddd6b-30b4-40b4-a43b-3d6217c06c96,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-workflownl6zb/series-workflownl6zb-convert-artifact-933137338/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": "e7c9fb92-eb7d-4d0b-bc08-690e95f01571", "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-workflownl6zb/series-workflownl6zb-build-action-3402447390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 18:44:10 +0000 UTC FinishedAt: 2026-09-10 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 18:44:10 +0000 UTC FinishedAt: 2026-09-10 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 18:44:10 +0000 UTC FinishedAt: 2026-09-10 18:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 18:44:10 +0000 UTC FinishedAt: 2026-09-10 18:46:03 +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:*e7c9fb92-eb7d-4d0b-bc08-690e95f01571,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-workflownl6zb/series-workflownl6zb-build-action-3402447390/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-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"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:*e1f16edc-490c-46d9-8cb1-cf742980e1be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c9fb92-eb7d-4d0b-bc08-690e95f01571,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-workflownl6zb/series-workflownl6zb-build-action-3100726129/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-workflownl6zb/series-workflownl6zb-build-action-3402447390/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:46:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"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-workflownl6zb/series-workflownl6zb-convert-artifact-1370010607/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 18:46:13 +0000 UTC FinishedAt: 2026-09-10 18:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 18:46:25 +0000 UTC FinishedAt: 2026-09-10 18:47:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownl6zb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","kvm"],"focus_symbols":["virtblk_freeze_priv","virtblk_freeze","virtblk_reset_prepare","virtio_device_freeze","virtio_device_reset_prepare"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50d05c7c76c96b90462f24debacca971d2e86713","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_BLK","VIRTIO","PM_SLEEP"],"series_id":"7eb10944-0527-4290-bd07-3b98f2452ce0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 18:46:25 +0000 UTC FinishedAt: 2026-09-10 18:47:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1f16edc-490c-46d9-8cb1-cf742980e1be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c9fb92-eb7d-4d0b-bc08-690e95f01571,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-workflownl6zb/series-workflownl6zb-build-action-3100726129/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-workflownl6zb/series-workflownl6zb-build-action-3402447390/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-workflownl6zb/series-workflownl6zb-convert-artifact-1370010607/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,}