Name: series-workflowvsks7 Phase: Succeeded StartedAt: 2026-08-03 14:02:56 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[0] Phase: Succeeded StartedAt: 2026-08-03 14:02:56 +0000 UTC FinishedAt: 2026-08-03 14:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 14:02:56 +0000 UTC FinishedAt: 2026-08-03 14:09:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_DUMMY_HCD" ], "series_id": "07ad05d8-2f62-492d-bffe-16bd6f11caed" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usbg_make_tpg", "usbg_drop_tpg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmI3YTdiMTllODhlMjU3Nzc3MjNhZGQ5MmI5MWE5ZTFjMzI3ZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDowNToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5lNWZiYjhjYTA5ZDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5AQCAtMTY2MCw2ICYjNDM7MTY2MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3bixcbiBcdGludCByZXQ7XG4gXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcbiBcdHVuc2lnbmVkIGk7XG4mIzQzO1x0Ym9vbCBoYXNfZGVwO1xuIFxuIFx0aWYgKHN0cnN0cihuYW1lLCBcJiMzNDt0cGd0X1wmIzM0OykgIT0gbmFtZSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG5AQCAtMTY3NiwxOSAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXG4gXHRcdGZ1bmNfaW5zdCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KVxuLVx0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0XHRnb3RvIHVubG9ja19pbnN0O1xuJiM0MztcdH1cbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuJiM0MztcdGhhc19kZXAgPSBvcHRzLVx1MDAzZWhhc19kZXA7XG4mIzQzO1x0aWYgKGhhc19kZXApIHtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2tfaW5zdDtcbiYjNDM7XHRcdH1cbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gXG4gXHR0cGcgPSBremFsbG9jX29iaihzdHJ1Y3QgdXNiZ190cGcpO1xuIFx0cmV0ID0gLUVOT01FTTtcbkBAIC0xNzA0LDMxICYjNDM7MTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHR0cGctXHUwMDNldHBvcnQgPSB0cG9ydDtcbiBcdHRwZy1cdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcbiBcbiYjNDM7XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZztcbiYjNDM7XHR0cGctXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcbiYjNDM7XG4mIzQzO1x0Y29uZmlnX2l0ZW1fZ2V0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoIWhhc19kZXApIHtcbiYjNDM7XHRcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxuJiM0MztcdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbiYjNDM7XHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIHB1dF9pdGVtO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKlxuIFx0ICogU1BDIGRvZXNuJiMzOTt0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxuIFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxuIFx0ICovXG4gXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFx1MDAyNnRwZy1cdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGdvdG8gZnJlZV93b3JrcXVldWU7XG4mIzQzO1x0XHRnb3RvIHVuZGVwZW5kX2l0ZW07XG4gXG4tXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZztcbi1cdHRwZy1cdTAwM2VmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0O1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4mIzQzO1x0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuIFx0cmV0dXJuIFx1MDAyNnRwZy1cdTAwM2VzZV90cGc7XG4gXG4tZnJlZV93b3JrcXVldWU6XG4mIzQzO3VuZGVwZW5kX2l0ZW06XG4mIzQzO1x0aWYgKCFoYXNfZGVwKVxuJiM0MztcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7cHV0X2l0ZW06XG4mIzQzO1x0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuIFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBmcmVlX3RwZzpcbiBcdGtmcmVlKHRwZyk7XG4gdW5yZWZfZGVwOlxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbiYjNDM7XHRpZiAoaGFzX2RlcClcbiBcdFx0bW9kdWxlX3B1dChvcHRzLVx1MDAzZWRlcGVuZGVudCk7XG4tXHRlbHNlXG4tXHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tdW5sb2NrX2RlcDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiB1bmxvY2tfaW5zdDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuIFxuQEAgLTE3NDMsNiAmIzQzOzE3NTcsNyBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiBcdFx0XHRcdHN0cnVjdCB1c2JnX3RwZywgc2VfdHBnKTtcbiBcdHVuc2lnbmVkIGk7XG4gXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcbiYjNDM7XHRib29sIGhhc19kZXA7XG4gXG4gXHR0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7XG4gXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XG5AQCAtMTc1MywxNiAmIzQzOzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4gXHRcdGlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpXG4gXHRcdFx0YnJlYWs7XG4gXHRpZiAoaSBcdTAwM2MgVFBHX0lOU1RBTkNFUykge1xuLVx0XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XG4gXHRcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsXG4gXHRcdFx0c3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tXHRcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApXG4mIzQzO1x0XHRoYXNfZGVwID0gb3B0cy1cdTAwM2VoYXNfZGVwO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZ19pdGVtX2dldChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdGlmIChoYXNfZGVwKVxuIFx0XHRcdG1vZHVsZV9wdXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpO1xuIFx0XHRlbHNlXG4gXHRcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcbiBcdFx0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdFx0a2ZyZWUodHBnKTtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYmdfbWFrZV90cGcmIzM0OywKICAgICYjMzQ7dXNiZ19kcm9wX3RwZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJiN2E3YjE5ZTg4ZTI1Nzc3NzIzYWRkOTJiOTFhOWUxYzMyN2VlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTQ6MDU6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCmluZGV4IGIzZmE1YTE3ZmQyZGIuLmU1ZmJiOGNhMDlkNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCkBAIC0xNjYwLDYgJiM0MzsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCWludCByZXQ7CiAJc3RydWN0IGZfdGNtX29wdHMgKm9wdHM7CiAJdW5zaWduZWQgaTsKJiM0MzsJYm9vbCBoYXNfZGVwOwogCiAJaWYgKHN0cnN0cihuYW1lLCAmIzM0O3RwZ3RfJiMzNDspICE9IG5hbWUpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwpAQCAtMTY3NiwxOSAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCW9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLAogCQlmdW5jX2luc3QpOwogCW11dGV4X2xvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7Ci0JaWYgKCFvcHRzLSZndDtyZWFkeSkKLQkJZ290byB1bmxvY2tfZGVwOwomIzQzOwlpZiAoIW9wdHMtJmd0O3JlYWR5KSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CQlnb3RvIHVubG9ja19pbnN0OwomIzQzOwl9CiAKLQlpZiAob3B0cy0mZ3Q7aGFzX2RlcCkgewotCQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpCi0JCQlnb3RvIHVubG9ja19kZXA7Ci0JfSBlbHNlIHsKLQkJcmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCi0JCQl3d24tJmd0O3d3bl9ncm91cC5jZ19zdWJzeXMsCi0JCQkmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gdW5sb2NrX2RlcDsKJiM0MzsJaGFzX2RlcCA9IG9wdHMtJmd0O2hhc19kZXA7CiYjNDM7CWlmIChoYXNfZGVwKSB7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CQkJZ290byB1bmxvY2tfaW5zdDsKJiM0MzsJCX0KIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKIAogCXRwZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB1c2JnX3RwZyk7CiAJcmV0ID0gLUVOT01FTTsKQEAgLTE3MDQsMzEgJiM0MzsxNzA1LDQ0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3biwKIAl0cGctJmd0O3Rwb3J0ID0gdHBvcnQ7CiAJdHBnLSZndDt0cG9ydF90cGd0ID0gdHBndDsKIAomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZzsKJiM0MzsJdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwomIzQzOwomIzQzOwljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RwZ19pbnN0YW5jZXNfbG9jayk7CiYjNDM7CiYjNDM7CWlmICghaGFzX2RlcCkgewomIzQzOwkJcmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCiYjNDM7CQkJd3duLSZndDt3d25fZ3JvdXAuY2dfc3Vic3lzLAomIzQzOwkJCSZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIHB1dF9pdGVtOwomIzQzOwl9CiYjNDM7CiAJLyoKIAkgKiBTUEMgZG9lc24mIzM5O3QgYXNzaWduIGEgcHJvdG9jb2wgaWRlbnRpZmllciBmb3IgVVNCLVNDU0ksIHNvIHdlCiAJICogcHJldGVuZCB0byBiZSBTQVMuLgogCSAqLwogCXJldCA9IGNvcmVfdHBnX3JlZ2lzdGVyKHd3biwgJmFtcDt0cGctJmd0O3NlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpOwogCWlmIChyZXQgJmx0OyAwKQotCQlnb3RvIGZyZWVfd29ya3F1ZXVlOwomIzQzOwkJZ290byB1bmRlcGVuZF9pdGVtOwogCi0JdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7Ci0JdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwotCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKLQltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwljb25maWdfaXRlbV9wdXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiAJcmV0dXJuICZhbXA7dHBnLSZndDtzZV90cGc7CiAKLWZyZWVfd29ya3F1ZXVlOgomIzQzO3VuZGVwZW5kX2l0ZW06CiYjNDM7CWlmICghaGFzX2RlcCkKJiM0MzsJCWNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7cHV0X2l0ZW06CiYjNDM7CWNvbmZpZ19pdGVtX3B1dCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKIAlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiBmcmVlX3RwZzoKIAlrZnJlZSh0cGcpOwogdW5yZWZfZGVwOgotCWlmIChvcHRzLSZndDtoYXNfZGVwKQomIzQzOwlpZiAoaGFzX2RlcCkKIAkJbW9kdWxlX3B1dChvcHRzLSZndDtkZXBlbmRlbnQpOwotCWVsc2UKLQkJY29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKLXVubG9ja19kZXA6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwogdW5sb2NrX2luc3Q6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKIApAQCAtMTc0Myw2ICYjNDM7MTc1Nyw3IEBAIHN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKQogCQkJCXN0cnVjdCB1c2JnX3RwZywgc2VfdHBnKTsKIAl1bnNpZ25lZCBpOwogCXN0cnVjdCBmX3RjbV9vcHRzICpvcHRzOwomIzQzOwlib29sIGhhc19kZXA7CiAKIAl0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7CiAJY29yZV90cGdfZGVyZWdpc3RlcihzZV90cGcpOwpAQCAtMTc1MywxNiAmIzQzOzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpCiAJCWlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpCiAJCQlicmVhazsKIAlpZiAoaSAmbHQ7IFRQR19JTlNUQU5DRVMpIHsKLQkJdHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMOwogCQlvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LAogCQkJc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7CiAJCW11dGV4X2xvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7Ci0JCWlmIChvcHRzLSZndDtoYXNfZGVwKQomIzQzOwkJaGFzX2RlcCA9IG9wdHMtJmd0O2hhc19kZXA7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CiYjNDM7CQljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwomIzQzOwkJaWYgKGhhc19kZXApCiAJCQltb2R1bGVfcHV0KG9wdHMtJmd0O2RlcGVuZGVudCk7CiAJCWVsc2UKIAkJCWNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCiAJCQkJJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7Ci0JCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKJiM0MzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwkJdHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsKJiM0MzsJCWNvbmZpZ19pdGVtX3B1dCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKJiM0MzsJCWtmcmVlKHRwZyk7CiYjNDM7CQlyZXR1cm47CiAJfQogCW11dGV4X3VubG9jaygmYW1wO3RwZ19pbnN0YW5jZXNfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBDb3JlIE1vZHVsZSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaGl0cyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgLiBNeSBzcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmc7IHdlIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgbmVjZXNzaXRhdGVzIGZ1enppbmcuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIHRvdWNoaW5nIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBBaCwgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uISBSaWdodCwgdGhhdCYjMzk7cyBhY2Nlc3NlZCB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIHdhcnJhbnRlZC4KClRoZSBwbGFuIGlzIHNpbXBsZS4gTGV0JiMzOTtzIGlzb2xhdGUgdGhvc2UgZnVuY3Rpb25zLCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCwgYXMgb3VyIGZ1enppbmcgdGFyZ2V0cy4gTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgYW55IHJlcXVpcmVkIGBDT05GSUdgIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGtub2JzIG5lZWQgdG8gYmUgdHVybmVkLiBUaGlzIHNob3VsZG4mIzM5O3QgYmUgdG9vIHRyaWNreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlVTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFVTQl9DT05GSUdGU19GX1RDTWAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudHMgZm9yIHRoaXMgYFVTQl9DT05GSUdGU19GX1RDTWAgZmVhdHVyZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGxpa2VseSBrZXJuZWwgZGVmY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBvdGhlcnMsIHRvIHRyYWNlIGJhY2sgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIHRvIGV2ZW4gKmJlKiBzZWxlY3RhYmxlIG9yIGZ1bmN0aW9uYWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwcmVyZXF1aXNpdGUgc3ltYm9scywgb3RoZXIgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24sIGFuZCBhbnkgYnVpbGQgZmxhZ3Mgb3IgdG9vbGNoYWluIHJlcXVpcmVtZW50cyBpdCBtYXkgaGF2ZS4gVGhpcyBpcyBnb2luZyB0byBiZSBhIG1hdHRlciBvZiBjYXJlZnVsIGNyb3NzLXJlZmVyZW5jaW5nIGFuZCBkaWdnaW5nIGludG8gdGhlIGJ1aWxkIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gdGhlIHRhc2sgYXQgaGFuZCwgSSB0aGluayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBnb2luZyB0byBiZSBmb3VuZCBpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNDk1LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBhIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiwgYW5kIHRoaXMgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG9wdGlvbnMuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGlzIHNlY3Rpb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGFuZCBob3cgdGhlc2Ugc2V0dGluZ3Mgd29yayB3aXRoaW4gdGhlIG92ZXJhbGwgVVNCIGdhZGdldCBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb24gc3dpdGNoZXMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGV0YWlsZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg1Olx0XHRoZWxwXG4gNDg2Olx0XHQgIFRoZSBQcmludGVyIGZ1bmN0aW9uIGNoYW5uZWxzIGRhdGEgYmV0d2VlbiB0aGUgVVNCIGhvc3QgYW5kIGFcbiA0ODc6XHRcdCAgdXNlcnNwYWNlIHByb2dyYW0gZHJpdmluZyB0aGUgcHJpbnQgZW5naW5lLiBUaGUgdXNlciBzcGFjZVxuIDQ4ODpcdFx0ICBwcm9ncmFtIHJlYWRzIGFuZCB3cml0ZXMgdGhlIGRldmljZSBmaWxlIC9kZXYvZ19wcmludGVyXHUwMDNjWFx1MDAzZSB0b1xuIDQ4OTpcdFx0ICByZWNlaXZlIG9yIHNlbmQgcHJpbnRlciBkYXRhLiBJdCBjYW4gdXNlIGlvY3RsIGNhbGxzIHRvXG4gNDkwOlx0XHQgIHRoZSBkZXZpY2UgZmlsZSB0byBnZXQgb3Igc2V0IHByaW50ZXIgc3RhdHVzLlxuIDQ5MTpcdFxuIDQ5MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9wcmludGVyLnJzdFxuIDQ5MzpcdFx0ICB3aGljaCBpbmNsdWRlcyBzYW1wbGUgY29kZSBmb3IgYWNjZXNzaW5nIHRoZSBkZXZpY2UgZmlsZS5cbiA0OTQ6XHRcbiA0OTU6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG4gNDk2Olx0XHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuIDQ5NzpcdFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuIDQ5ODpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0OTk6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNTAwOlx0XHRzZWxlY3QgVVNCX0ZfVENNXG4gNTAxOlx0XHRoZWxwXG4gNTAyOlx0XHQgIFRoaXMgZmFicmljIGlzIGEgVVNCIGdhZGdldCBjb21wb25lbnQuIFR3byBVU0IgcHJvdG9jb2xzIGFyZVxuIDUwMzpcdFx0ICBzdXBwb3J0ZWQgdGhhdCBpcyBCQkIgb3IgQk9UIChCdWxrIE9ubHkgVHJhbnNwb3J0KSBhbmQgVUFTXG4gNTA0Olx0XHQgIChVU0IgQXR0YWNoZWQgU0NTSSkuIEJPVCBpcyBhZHZlcnRpc2VkIG9uIGFsdGVybmF0aXZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZWJ1Z2dpbmcgVVNCIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCwgdGhpcyB3aG9sZSB0aGluZywgaGluZ2VzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgaXMgc2V0LiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGlzLiBBbmQgSSYjMzk7bSBhbHNvIHRoaW5raW5nIHRoYXQgYFVTQl9GX1RDTWAgc2hvdWxkIGJlIHNlbGVjdGVkIHRvby4gR2l2ZW4gdGhhdCBJIG5lZWQgdG8gY2hlY2sgYFVTQl9GX1RDTWAsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGxvY2F0ZSBgVVNCX0ZfVENNYC4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL0tjb25maWdgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGF0IHBhdGgsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdHlwaWNhbGx5IGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzQ1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBmb3IgVVNCIEdhZGdldCBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIGtleSBmbGFnIEkgbmVlZCB0byBlbmFibGUgaGVyZS4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBmb2N1cy4gQnV0LCBJIGtub3cgdGhlcmUmIzM5O3MgYSBkZXBlbmRlbmN5IGNoYWluLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBgVEFSR0VUX0NPUkVgIGFuZCBgVVNCX0NPTkZJR0ZTYCB3aWxsIGFsc28gaGF2ZSB0byBiZSBzZXQuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGUgcmFiYml0IGhvbGUgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBUQVJHRVRfQ09SRWAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvYnZpb3VzIGNvbmZsaWN0cy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNldHRpbmdzIHNvIGV2ZXJ5dGhpbmcgY29tcGlsZXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIERlcGVuZGVuY3kgV2ViKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiBgVEFSR0VUX0NPUkVgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIHRoZSBkZXBlbmRlbmN5LCB3aGF0IG90aGVyIHZhcmlhYmxlcyBtYXkgaW1wYWN0IGl0PyYjMzQ7LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbXBvbmVudCwgb2Z0ZW4gYSBzb3VyY2Ugb2YgaGVhZGFjaGVzIGlmIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIHNlZSB3aGVyZSBgVVNCX0NPTkZJR0ZTYCBmaXRzIGludG8gdGhlIHBpY3R1cmUuIEl0JiMzOTtzIGEga2V5IHBpZWNlIGluIG1hbnkgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucywgYW5kIGEgY29tbW9uIGludGVncmF0aW9uIHBvaW50LiBMZXQgbWUgY2hlY2sgaXRzIHNldHRpbmdzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgYWRkcmVzc2luZy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoaXMgb3V0LCBjb25zaWRlciBhbnkgcG9zc2libGUgY29uZmxpY3RzLCBhbmQgdGhlbiBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzI1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBUYXJnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBVU0IgZ2FkZ2V0IHRhcmdldCBjb25maWd1cmF0aW9uIGNvZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHdlIG5lZWQgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBlbmFibGVkIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhpcyBmYWJyaWMuCgpGaXJzdCwgbGV0IG1lIGNvbmZpcm0gc29tZXRoaW5nIGJhc2ljOiBBcmUgdGhlc2UgZnVuY3Rpb25zIGRlY2xhcmVkIHN0YXRpY2FsbHk/IExldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2jigKYgWXVwLCB0aGV5IGFyZTogYHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKC4uLilgIGFuZCBgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyguLi4pYC4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIFN0YXRpYyBmdW5jdGlvbnMgdHlwaWNhbGx5IGhhdmUgbGltaXRlZCBzY29wZS4gSG93ZXZlciwgdGhleSBhcmUgbGlrZWx5IGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0JiMzOTtzIGhvdyB0aGV5JiMzOTtyZSBnZXR0aW5nIGNhbGxlZCwgSSYjMzk7bSBiZXR0aW5nLCBwcm9iYWJseSBpbiBgZmFicmljX29wc2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnRzIGFuZCBzZWUgaG93IHRoaXMgdGFyZ2V0IGdyb3VwIHBvcnRhbCBzZXR1cCBpcyBhY3R1YWxseSBiZWluZyBtYW5hZ2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JnX21ha2VfdHBnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY0Nj1zdGF0aWMgaW50IHVzYmdfaW5pdF9ub2RlYWNsKHN0cnVjdCBzZV9ub2RlX2FjbCAqc2VfbmFjbCwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY1MzpzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjU0LVx0XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA0OS1cdC5mYWJyaWNfZHJvcF93d25cdFx0PSB1c2JnX2Ryb3BfdHBvcnQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDUwOlx0LmZhYnJpY19tYWtlX3RwZ1x0XHQ9IHVzYmdfbWFrZV90cGcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDUxLVx0LmZhYnJpY19lbmFibGVfdHBnXHRcdD0gdXNiZ19lbmFibGVfdHBnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCB0aGV5IGFyZSBkZWZpbml0ZWx5IGFzc2lnbmVkIHRvIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYC4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXkgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIHVuaXF1ZSBhZGRyZXNzZXMuIEJ1dCBoYW5nIG9uLCB0aGV5JiMzOTtyZSBiZWluZyBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyEgVGhhdCBjb21wbGV0ZWx5IHJ1bGVzIG91dCBpbmxpbmluZzsgdGhleSAqaGF2ZSogdG8gaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKTm93LCBsZXQmIzM5O3MgcmV2aXNpdCB0aGUgcHJvbXB0LiBJdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSYjMzk7bSByZWFzb25hYmx5IGNvbmZpZGVudCB0aGVzZSBmdW5jdGlvbnMsIGJ5IHZpcnR1ZSBvZiB0aGVpciBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQsIGFyZSBub3QgaW5saW5lZC4gQnV0LCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYW5kIGNvbXByZWhlbnNpdmUsIEkgY291bGQgaW5jbHVkZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYXMgd2VsbCwgdG8gYmUgcGVyZmVjdGx5IHNhZmUuCgpXYWl0LCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGNvbmZpZ2ZzIG9wZXJhdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBmYWJyaWMuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuCgpBbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIHV0aWxpemUuIExldCYjMzk7cyBzZWUuLi4gQWgsIGB1c2JnX29wc2AgaXMgcmVnaXN0ZXJlZCBzb21ld2hlcmUuIEdvb2QuIExldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiZ19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMDI4PXN0YXRpYyBpbnQgdXNiZ19jaGVja19zdG9wX2ZyZWUoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDMzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyB1c2JnX29wcyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzQtXHQubW9kdWxlXHRcdFx0XHQ9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI3OTU9c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwMzpcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcdTAwMjZ1c2JnX29wcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yODExPXN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxMi17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyODEzOlx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXHUwMDI2dXNiZ19vcHMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNC1cdHVzYl9mdW5jdGlvbl91bnJlZ2lzdGVyKFx1MDAyNnRjbXVzYl9mdW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBDb25maWdGUyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCDigJMgdGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgcmlnaHQ/IFRoZXkgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHllcywgZGVmaW5pdGVseSByZWFjaGFibGUsIENvbmZpZ0ZTIGlzIHRoZSBwYXRod2F5IHRvIGdldCB0aGVyZS4gVGhlIGJpZyBxdWVzdGlvbiBpcywgYXJlIHRoZXkgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZz8gQWJzb2x1dGVseSEgVGhlIGlzc3VlIGFkZHJlc3NlZCBpcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgc28gaXQmIzM5O3MgcmlwZSBmb3IgZXhwbG9pdGF0aW9uLgoKQmVmb3JlIEkgZGl2ZSBpbiwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgbGluZWQgdXAgY29ycmVjdGx5LiBBbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBpbnZlc3RpZ2F0ZSB0aGUgYFVTQl9DT05GSUdGU2AgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc1MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2AgZGlyZWN0b3J5IGJlZm9yZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBiZSBmb3IgdGhhdC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMjI4IChvciB0aGVyZWFib3V0cykgb2YgdGhhdCBmaWxlLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBnYWRnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IGdyb3VwaW5nIG9mIHRoZW0uIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHZhcmlvdXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdGNvbmZpZyBVU0JfRl9QUklOVEVSXG4gMjIxOlx0XHR0cmlzdGF0ZVxuIDIyMjpcdFxuIDIyMzpcdGNvbmZpZyBVU0JfRl9UQ01cbiAyMjQ6XHRcdHRyaXN0YXRlXG4gMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBGUyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBVU0JfQ09ORklHRlNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyByZWxhdGl2ZWx5IHNlbGYtY29udGFpbmVkLCB3aXRoIHBlcmhhcHMgb25seSBhIGRlcGVuZGVuY3kgb24gYFVTQl9HQURHRVRgLCBhbmQgdGhhdCYjMzk7cyBsaWtlbHkgdGhlIG9ubHkgdGhpbmcgaG9sZGluZyBpdCBiYWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgY2xlYXJseS4KCk5vdywgdGhvdWdoLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGF0IGBUQVJHRVRfQ09SRWAgbWlnaHQgaGF2ZSB0byBzYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBDT05GSUdGU2AgaGFzIGFueSB1bmV4cGVjdGVkIHJlbGF0aW9uc2hpcCB0byBpdC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBjb25uZWN0aW9ucz8gVGltZSB0byBkaWcgaW50byB0aGUgZGVlcGVyIGNvbmZpZ3VyYXRpb24gYXNwZWN0cyBvZiB0aGlzIGdhZGdldCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc4MQoJCQkJCQkJb3V0cHV0OiA3MgoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9ucyBvZiBUQVJHRVRfQ09SRSoqCgpPa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGRlZmluaXRlbHkgZGVwZW5kZW50IG9uIGBCTE9DS2AuIFRoYXQgbWVhbnMgdGhlIGNvbmZpZ3VyYXRpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AuIEhtbSwgYSBxdWljayBsb29rIGFuZCBpdCBzZWVtcyBgdXNiZ19tYWtlX3RwZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgcm9hZGJsb2NrIOKAkyBhcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhIHRoYXQgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jYCB0byBzZWUgd2hhdCBvdGhlciBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTM2PXN0YXRpYyBzdHJ1Y3QgdHBnX2luc3RhbmNlIHRwZ19pbnN0YW5jZXNbVFBHX0lOU1RBTkNFU107XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjM4OnN0YXRpYyBERUZJTkVfTVVURVgodHBnX2luc3RhbmNlc19sb2NrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI2NQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIENvZGUgZm9yIEdsb2JhbCBTeW1ib2wgVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCByZWdhcmRpbmcgc3ltYm9scy4gVGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGRldmVsb3BlciwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gbG9vayBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGF0IG1hY3JvIGlzIGEgY2xhc3NpYyBpbmRpY2F0b3Igb2YgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LCBhIGNvbW1vbiBwYXR0ZXJuIGluIGtlcm5lbCBtb2R1bGVzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zIGRldmVsb3BtZW50IHdoZXJlIHlvdSBuZWVkIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBzeXN0ZW0uIElmIEkgY2FuIGZpbmQgdGhlIHVzZXMgb2YgdGhhdCBtYWNybywgSSYjMzk7bGwgcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBpbnRlbnRpb25hbGx5IGJlaW5nIGV4cG9zZWQuCgpGYWlsaW5nIGEgZGlyZWN0IGhpdCB3aXRoIGBFWFBPUlRfU1lNQk9MYCwgSSYjMzk7bGwgYnJvYWRlbiB0aGUgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBnbG9iYWxseSB2aXNpYmxlIGZ1bmN0aW9ucywgbWF5YmUgdXNpbmcgYSBtb3JlIGdlbmVyYWwgc2VhcmNoIGZvciBnbG9iYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBsaW5rZXIgZmlsZXMgb3Igb3RoZXIgcHJvamVjdCBidWlsZCBtZXRhZGF0YSBpZiB0aGUgaW5pdGlhbCBzZWFyY2ggaXMgdW5zdWNjZXNzZnVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgcHJvamVjdCBpcyBleHBsaWNpdGx5IGNvbnRyb2xsaW5nIHZpc2liaWxpdHkgb3IsIHBlcmhhcHMsIHJlbHlpbmcgb24gZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgYnVpbGQgc3lzdGVtLiBEZXRlcm1pbmluZyB0aGUgbWV0aG9kIGZvciB0aGlzIGNhbiBiZSBjcnVjaWFsIGluIGEgbG90IG9mIHNpdHVhdGlvbnMuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlICYjMzk7cHVibGljIEFQSSYjMzk7IG9mIHRoaXMgY29kZSwgb3IgYXQgbGVhc3QgdGhlIHBhcnRzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2libGUgYnkgb3RoZXIgY29tcG9uZW50cy4gRmluZGluZyBgRVhQT1JUX1NZTUJPTGAgaXMganVzdCB0aGUgZmFzdCB0cmFjazsgSSYjMzk7bSBwcmVwYXJlZCB0byBkaWcgYSBiaXQgZGVlcGVyIGlmIEkgbmVlZCB0by4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NjkKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBDb2RlIGZvciBWb2lkIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCkFscmlnaHQsIG15IGludGVybmFsIGNvbXBpbGVyIGlzIGtpY2tpbmcgaW4uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBhIHZlcnkgc3BlY2lmaWMgdHlwZSBvZiBmdW5jdGlvbiBkZWZpbml0aW9uIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gSSYjMzk7bSB0aGlua2luZyBvZiB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBoZXJlLCBzb21ldGhpbmcgdGhhdCYjMzk7cyBib3RoIGVmZmljaWVudCBhbmQgcHJlY2lzZS4KCkkgd2FudCBhIHBhdHRlcm4gdGhhdCB3aWxsIGxldCBtZSBmaWx0ZXIgcXVpY2tseS4gVGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGB2b2lkYCBrZXl3b3JkIGl0c2VsZiAtIHRoYXQmIzM5O3Mgbm9uLW5lZ290aWFibGUsIGl0JiMzOTtzIHRoZSBzaWduYXR1cmUgSSYjMzk7bSBzZWFyY2hpbmcgZm9yLiBGb2xsb3dpbmcgdGhhdCwgSSBrbm93IEkgbmVlZCB0byBzcGVjaWZ5IHdoYXQgY29tZXMgYWZ0ZXIgdGhlIGB2b2lkYCwgd2hpY2ggaXMgdGhlIGZ1bmN0aW9uIG5hbWUuIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSB0eXBpY2FsIEMvQyYjNDM7JiM0MzsgaWRlbnRpZmllciBydWxlcywgYW5kIGV4cGVjdCB0aGUgZnVuY3Rpb24gbmFtZSB0byBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUsIGFuZCB0aGVuIGFsbG93IGxldHRlcnMsIG51bWJlcnMsIG9yIHVuZGVyc2NvcmVzIHRvIGZvbGxvdy4gVGhlIGVhc2llc3Qgd2F5IHRvIGRlc2NyaWJlIHRoYXQgaXMgd2l0aCBgW2EtekEtWl9dW2EtekEtWjAtOV9dKmAuIEZpbmFsbHksIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lLCBJIG5lZWQgdG8gbG9vayBmb3IgYW4gb3BlbmluZyBwYXJlbnRoZXNpcywgYChgLiBUaGF0JiMzOTtzIHRoZSBlbmQgb2YgdGhlIGRlY2xhcmF0aW9uLCBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZi4KClNvLCB0aGUgcGF0dGVybiBJJiMzOTttIGNvbnN0cnVjdGluZyBpcyBgXnZvaWQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlwoYCwgd2hlcmUgYF5gIGF0IHRoZSBiZWdpbm5pbmcgbWVhbnMgJiMzNDtzdGFydCBvZiBsaW5lJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSB2ZXJ5IGNsZWFuIGFuZCB0YXJnZXRlZCB3YXkgdG8gZmluZCB0aG9zZSBgdm9pZGAgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipSZWdleCBQYXR0ZXJuIEFuYWx5c2lzKioKCkFscmlnaHQsIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzcyBzdGFydHMgd2l0aCBhIHNwZWNpZmljIHJlZ2V4IHBhdHRlcm46IGBeW2Etel0uKlwoYC4gIEkgc2VlIGl0IGltbWVkaWF0ZWx5LiBNeSBtaW5kJiMzOTtzIHdvcmtpbmcgdGhyb3VnaCBpdC4gSSByZWNvZ25pemUgdGhlIGNvbW1vbiBjaGFyYWN0ZXJzIHVzZWQgaGVyZSBhcyB3ZWxsLiBJJiMzOTttIHVzaW5nIHJlZ2V4IHRvIGV4YW1pbmUgYSBzdHJpbmcgb3IgYSBzZXQgb2Ygc3RyaW5ncywgYW5kIG15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgKmZvciouCgpgXmAgVGhpcyBpcyBhbiBhbmNob3IuIEl0IG1lYW5zICYjMzQ7YmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuJiMzNDsgIE9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGZvciBwYXR0ZXJucyBhdCB0aGUgdmVyeSBzdGFydCBvZiB0aGUgdGFyZ2V0IHRleHQuCgpgW2Etel1gIFRoYXQmIzM5O3MgYSBjaGFyYWN0ZXIgY2xhc3MuIENsZWFybHksIHdlJiMzOTtyZSBsb29raW5nIGZvciBhIGxvd2VyY2FzZSBsZXR0ZXIuIFRoZSBgYS16YCBpcyBhIHN0YW5kYXJkIHJhbmdlLgoKYC4qYCAgVGhpcyBpcyB0aGUgaGVhcnQgb2YgaXQuIFRoZSBgLmAgaXMgYW55IGNoYXJhY3RlciAoZXhjZXB0IG5ld2xpbmUsIGRlcGVuZGluZyBvbiB0aGUgcmVnZXggZW5naW5lLCBidXQgSSYjMzk7bGwgYXNzdW1lIHN0YW5kYXJkIGJlaGF2aW9yIGZvciBub3cpLiBUaGUgYCpgIGlzIGEgcXVhbnRpZmllci4gWmVybyBvciBtb3JlIHRpbWVzLiBTbyB0aGlzIG1lYW5zICYjMzQ7bWF0Y2ggYW55IHNlcXVlbmNlIG9mIGFueSBjaGFyYWN0ZXIsIHplcm8gb3IgbW9yZSB0aW1lcy4mIzM0OyBUaGlzIGlzIHVzdWFsbHkgdXNlZCB0byBzZWFyY2ggZm9yIGFueXRoaW5nIGFmdGVyIHRoZSBpbml0aWFsIGNoYXJhY3Rlci4KCmBcKGAgIEFuZCBmaW5hbGx5LCBhIGxpdGVyYWwgb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhlIGJhY2tzbGFzaCBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc2NhcGVzIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgdGhlIHBhcmVudGhlc2lzLCBzbyB3ZSYjMzk7cmUgYWN0dWFsbHkgbG9va2luZyBmb3IgdGhlIGxpdGVyYWwgY2hhcmFjdGVyLgoKU28sIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCBJIGFtIGVzc2VudGlhbGx5IGxvb2tpbmcgZm9yIGxpbmVzIG9yIHN0cmluZ3MgdGhhdCAqYmVnaW4qIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyLCBmb2xsb3dlZCBieSBhbnkgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycywgYW5kICplbmRpbmcqIHdpdGggYW4gb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgc2VhcmNoLiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSBzb21ldGhpbmcgc3BlY2lmaWMuCgpNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHRob3VnaHQgd291bGQgYmUgd2hhdCBJJiMzOTttIHVzaW5nIGl0IGZvci4gQW0gSSBwYXJzaW5nIGNvZGU/IExvb2tpbmcgZm9yIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBvciBtZXRob2QgY2FsbHM/IEFtIEkgc2VhcmNoaW5nIHRocm91Z2ggYSB0ZXh0IGZpbGUgZm9yIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcz8gVGhlIGNvbnRleHQgaXMgd2hhdCBnaXZlcyB0aGlzIHJlZ2V4IHRydWUgbWVhbmluZy4gQnV0IHRoZSBwYXR0ZXJuIGl0c2VsZj8gSXQmIzM5O3MgcHJldHR5IGNsZWFyIGFuZCBjb25jaXNlLCBldmVuIHdpdGhvdXQgYW55IGZ1cnRoZXIgY29udGV4dHVhbCBjbHVlcy4gTm93LCBJIG5lZWQgdG8ga25vdyB0aGUgKndoeSogb2YgdGhlIHF1ZXJ5IHRvIGFjdHVhbGx5IGludGVycHJldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpdLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0zNj1zdGF0aWMgc3RydWN0IHRwZ19pbnN0YW5jZSB0cGdfaW5zdGFuY2VzW1RQR19JTlNUQU5DRVNdO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozODpzdGF0aWMgREVGSU5FX01VVEVYKHRwZ19pbnN0YW5jZXNfbG9jayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGZfdWFzICp0b19mX3VhcyhzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDc6c3RhdGljIGludCBib3RfZW5xdWV1ZV9jbWRfY2J3KHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2MDpzdGF0aWMgdm9pZCBib3Rfc3RhdHVzX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc2OnN0YXRpYyB2b2lkIGJvdF9lbnF1ZXVlX3NlbnNlX2NvZGUoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MTpzdGF0aWMgdm9pZCBib3RfZXJyX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTQ6c3RhdGljIHZvaWQgYm90X3NlbmRfYmFkX3N0YXR1cyhzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTQ3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTQ4OnN0YXRpYyBpbnQgYm90X3NlbmRfc3RhdHVzKHN0cnVjdCB1c2JnX2NtZCAqY21kLCBib29sIG1vdmVkX2RhdGEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4My0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDpzdGF0aWMgaW50IGJvdF9zZW5kX3N0YXR1c19yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzLS8qIFJlYWQgcmVxdWVzdCBjb21wbGV0ZWQsIG5vdyB3ZSBoYXZlIHRvIHNlbmQgdGhlIENTVyAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTk0OnN0YXRpYyB2b2lkIGJvdF9yZWFkX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjA5OnN0YXRpYyBpbnQgYm90X3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIxMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ4OnN0YXRpYyB2b2lkIHVzYmdfZGF0YV93cml0ZV9jbXBsKHN0cnVjdCB1c2JfZXAgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ5OnN0YXRpYyBpbnQgdXNiZ19wcmVwYXJlX3dfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjUxOnN0YXRpYyBpbnQgYm90X3NlbmRfd3JpdGVfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc0OnN0YXRpYyBpbnQgYm90X3N1Ym1pdF9jb21tYW5kKHN0cnVjdCBmX3VhcyAqLCB2b2lkICosIHVuc2lnbmVkIGludCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNzY6c3RhdGljIHZvaWQgYm90X2NtZF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjMwODpzdGF0aWMgaW50IGJvdF9wcmVwYXJlX3JlcXMoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzY1OnN0YXRpYyB2b2lkIGJvdF9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzkwOnN0YXRpYyB2b2lkIGJvdF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zOTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQyMjpzdGF0aWMgaW50IHVzYmdfYm90X3NldHVwKHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00MjMtXHRcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDcxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDcyOnN0YXRpYyBpbnQgdGNtX3RvX3Vhc3BfcmVzcG9uc2UoZW51bSB0Y21fdG1yc3BfdGFibGUgY29kZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ3My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDg4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDg5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIHVhc3BfdG9fdGNtX2Z1bmMoaW50IGNvZGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OTAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUxMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUxMTpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb25lX3N0cmVhbShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdWFzX3N0cmVhbSAqc3RyZWFtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTEyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MjUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1MjY6c3RhdGljIHZvaWQgdWFzcF9mcmVlX2NtZHJlcShzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTI3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1Mzg6c3RhdGljIHZvaWQgdWFzcF9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUzOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTU0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU1OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTU2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU3OnN0YXRpYyBpbnQgdWFzcF9wcmVwYXJlX3JfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTkxOnN0YXRpYyB2b2lkIHVhc3BfcHJlcGFyZV9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjYxNDpzdGF0aWMgdm9pZCB1YXNwX3ByZXBhcmVfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTY2NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjY2NjpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njc6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNjY4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjY5OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NzAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc0OS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc1MDpzdGF0aWMgaW50IHVhc3Bfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc2MjpzdGF0aWMgaW50IHVhc3Bfc2VuZF90bV9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Nzc0OnN0YXRpYyBpbnQgdWFzcF9zZW5kX3JlYWRfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NzUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTgxNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjgxNzpzdGF0aWMgaW50IHVhc3Bfc2VuZF93cml0ZV9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODE4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjA6c3RhdGljIGludCB1c2JnX3N1Ym1pdF9jb21tYW5kKHN0cnVjdCBmX3VhcyAqLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NjEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjI6c3RhdGljIHZvaWQgdWFzcF9jbWRfY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODYzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4Nzc6c3RhdGljIGludCB1YXNwX2FsbG9jX3N0cmVhbV9yZXMoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVhc19zdHJlYW0gKnN0cmVhbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg3OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTA0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6OTA1OnN0YXRpYyBpbnQgdWFzcF9hbGxvY19jbWQoc3RydWN0IGZfdWFzICpmdSwgaW50IGkpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MDYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkyNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjkyNzpzdGF0aWMgaW50IHVhc3BfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05Mjgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjk2NDpzdGF0aWMgdm9pZCB1YXNwX3NldF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTAxMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEwMTM6c3RhdGljIGludCBnZXRfY21kX2Rpcihjb25zdCB1bnNpZ25lZCBjaGFyICpjZGIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDE0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTA3NzpzdGF0aWMgdm9pZCB1c2JnX2RhdGFfd3JpdGVfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDc4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTIyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTEyMzpzdGF0aWMgaW50IHVzYmdfcHJlcGFyZV93X3JlcXVlc3Qoc3RydWN0IHVzYmdfY21kICpjbWQsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTEyNC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE1MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExNTE6c3RhdGljIGludCB1c2JnX3NlbmRfc3RhdHVzX3Jlc3BvbnNlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTYzOnN0YXRpYyBpbnQgdXNiZ19zZW5kX3dyaXRlX3JlcXVlc3Qoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE3NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExNzU6c3RhdGljIGludCB1c2JnX3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTc2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTg2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE4NzpzdGF0aWMgdm9pZCB1c2JnX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExODk6c3RhdGljIHZvaWQgdXNiZ19zdWJtaXRfdG1yKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyMDQ6c3RhdGljIHZvaWQgdXNiZ19zdWJtaXRfY21kKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTI6c3RhdGljIHZvaWQgdXNiZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMjUzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzQyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM0MzpzdGF0aWMgc3RydWN0IHVzYmdfY21kICp1c2JnX2dldF9jbWQoc3RydWN0IGZfdWFzICpmdSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEzNDQtXHRcdHN0cnVjdCB0Y21fdXNiZ19uZXh1cyAqdHZfbmV4dXMsIHUzMiBzY3NpX3RhZylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NTpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NzpzdGF0aWMgaW50IHVzYmdfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTQ3MDpzdGF0aWMgdm9pZCBib3RfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTQ3MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTUxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE1MTk6c3RhdGljIGludCBib3Rfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MjAtXHRcdHZvaWQgKmNtZGJ1ZiwgdW5zaWduZWQgaW50IGxlbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3MDpzdGF0aWMgaW50IHVzYmdfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTcxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTc0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3NTpzdGF0aWMgY2hhciAqdXNiZ19nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTc2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTgzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU4NDpzdGF0aWMgdTE2IHVzYmdfZ2V0X3RhZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTg1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU5MTpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjAyOnN0YXRpYyB2b2lkIHVzYmdfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjA5OnN0YXRpYyB2b2lkIHVzYmdfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MTAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjMxOnN0YXRpYyBjb25zdCBjaGFyICp1c2JnX2NoZWNrX3d3bihjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NDY6c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY1MzpzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjU0LVx0XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE3NTI6c3RhdGljIGludCB0Y21fdXNiZ19kcm9wX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzU0OnN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE3OTk6c3RhdGljIHN0cnVjdCBzZV93d24gKnVzYmdfbWFrZV90cG9ydChcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MDAtXHRzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyAqdGYsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4MjE6c3RhdGljIHZvaWQgdXNiZ19kcm9wX3Rwb3J0KHN0cnVjdCBzZV93d24gKnd3bilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MzAtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODMxOnN0YXRpYyBzc2l6ZV90IHVzYmdfd3duX3ZlcnNpb25fc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sICBjaGFyICpwYWdlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTgzOD1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqdXNiZ193d25fYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODQyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTg0MzpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDQ6c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDY6c3RhdGljIGludCB1c2JnX2VuYWJsZV90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NDcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODYzOnN0YXRpYyBzc2l6ZV90IHRjbV91c2JnX3RwZ19uZXh1c19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4ODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODgzOnN0YXRpYyBpbnQgdXNiZ19hbGxvY19zZXNzX2NiKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZyxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4ODQtXHRcdFx0ICAgICAgc3RydWN0IHNlX3Nlc3Npb24gKnNlX3Nlc3MsIHZvaWQgKnApXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4OTM6c3RhdGljIGludCB0Y21fdXNiZ19tYWtlX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqdHBnLCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkyOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Mjk6c3RhdGljIGludCB0Y21fdXNiZ19kcm9wX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTk2Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Njc6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5NjgtXHRcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMDA1PXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICp1c2JnX2Jhc2VfYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDA5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjAxMDpzdGF0aWMgaW50IHVzYmdfcG9ydF9saW5rKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZywgc3RydWN0IHNlX2x1biAqbHVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMTk6c3RhdGljIHZvaWQgdXNiZ19wb3J0X3VubGluayhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDIwLVx0XHRzdHJ1Y3Qgc2VfbHVuICpzZV9sdW4pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMjg6c3RhdGljIGludCB1c2JnX2NoZWNrX3N0b3BfZnJlZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDI5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMzA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9zdHJpbmdzICp0Y21fc3RyaW5nc1tdID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE0OnN0YXRpYyBpbnQgdGNtX2JpbmQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCBzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMxNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIzOTM6c3RhdGljIHZvaWQgdGNtX2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQwMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0MDI6c3RhdGljIHZvaWQgdGNtX2RlbGF5ZWRfc2V0X2FsdF9kb25lKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDAzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQxMjpzdGF0aWMgYm9vbCB0Y21fZGVsYXllZF9zZXRfYWx0X2NhbmNlbGxlZChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQxMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQyMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0MjQ6c3RhdGljIGJvb2wgdGNtX2NvbXBsZXRlX2RlbGF5ZWRfc3RhdHVzKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDI1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ2NTpzdGF0aWMgYm9vbCB0Y21fY2FuY2VsX2RlbGF5ZWRfc2V0X2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ5Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTc6c3RhdGljIHZvaWQgdGNtX2NhbmNlbF9kZWxheWVkX3NldF9hbHRfc3luYyhzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ5OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1MTQ6c3RhdGljIHZvaWQgdGNtX2RlbGF5ZWRfc2V0X2FsdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NDc6c3RhdGljIGludCB0Y21fZ2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU2MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NjI6c3RhdGljIGludCB0Y21fc2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmLCB1bnNpZ25lZCBhbHQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTYzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTg4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU4OTpzdGF0aWMgdm9pZCB0Y21fZGlzYWJsZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU5Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1OTc6c3RhdGljIGludCB0Y21fc2V0dXAoc3RydWN0IHVzYl9mdW5jdGlvbiAqZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTgtXHRcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MDg6c3RhdGljIGlubGluZSBzdHJ1Y3QgZl90Y21fb3B0cyAqdG9fZl90Y21fb3B0cyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjEzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYxNDpzdGF0aWMgdm9pZCB0Y21fYXR0cl9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRjbV9mdW5jX3R5cGUgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYyOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzA6c3RhdGljIHZvaWQgdGNtX2ZyZWVfaW5zdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYzMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NDg6c3RhdGljIGludCB0Y21fcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjU5OnN0YXRpYyB2b2lkIHRjbV91bnJlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjYwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MDpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2ODE6c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjgyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY5MDpzdGF0aWMgaW50IHRjbV9zZXRfbmFtZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY5MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDM6c3RhdGljIHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKnRjbV9hbGxvY19pbnN0KHZvaWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzA0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjczODpzdGF0aWMgdm9pZCB0Y21fZnJlZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3NDY6c3RhdGljIHZvaWQgdGNtX3VuYmluZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzU0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc1NTpzdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbiAqdGNtX2FsbG9jKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmZpKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc1Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9Mjc5Mz1ERUNMQVJFX1VTQl9GVU5DVElPTih0Y20sIHRjbV9hbGxvY19pbnN0LCB0Y21fYWxsb2MpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3OTU6c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MDgtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwOTptb2R1bGVfaW5pdCh0Y21faW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODEwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxMTpzdGF0aWMgdm9pZCBfX2V4aXQgdGNtX2V4aXQodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxNjptb2R1bGVfZXhpdCh0Y21fZXhpdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA1OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYCBzdHJ1Y3R1cmUgYXMgYGZhYnJpY19tYWtlX3RwZ2AgYW5kIGBmYWJyaWNfZHJvcF90cGdgLiBUaGlzIGltcGxpZXMgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGJ5IHRoZSB0YXJnZXQgY29yZSBDb25maWdGUyBjb2RlLCB3aGljaCBpcyBnb29kLiBGb3IgbXkgYW5hbHlzaXMsIEkmIzM5O2xsIHJlZmVyIHRvIHRoZW0gc2ltcGx5IGFzIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgIGZvciBlYXNlIG9mIHJlZmVyZW5jZSDigJMgRm9jdXNTeW1ib2xzLCBpZiB5b3Ugd2lsbC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdlIGhhdmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gYFVTQl9DT05GSUdGU19GX1RDTWAgc2VlbXMgdG8gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBpcyB3aGF0IHdlIGV4cGVjdC4gYFRBUkdFVF9DT1JFYCBpbiB0dXJuIGlzIHNlbGVjdGluZyBgQ09ORklHRlNfRlNgLiBUaGlzIGxvb2tzLCBhdCBmaXJzdCBnbGFuY2UsIGxpa2UgYSBjb21wcmVoZW5zaXZlIHNldCBvZiBvcHRpb25zLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGNhdXNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IHRoYXQgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzc6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEwMC1cdGludCBcJiMzNDtNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjExNjpjb25maWcgVVNCX0dBREdFVF9TVE9SQUdFX05VTV9CVUZGRVJTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHN0b3JhZ2UgcGlwZWxpbmUgYnVmZmVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI3OTpjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNzE6Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFVTQiBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKlVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiAtIEEgUXVpY2sgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGludGVncmF0aW5nIGEgVVNCIEdhZGdldC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgbmF0dXJhbGx5LCB0aGF0IHdlJiMzOTtsbCBuZWVkIGBVU0JfR0FER0VUYCBlbmFibGVkLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHNwZWNpZmljIGRldmljZSBjb25maWd1cmF0aW9uIG9yIGZ1bmN0aW9uIHNldHVwLCBsZXQmIzM5O3MgdGFrZSBhIGJlYXQgYW5kIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlIGNhbiYjMzk7dCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3NpbmcgY29tcG9uZW50LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIGZvciBgVVNCX0dBREdFVGAgd2lsbCByZXZlYWwgYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzIHRoYXQgbmVlZCBjb25zaWRlcmF0aW9uLiBXZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCB0byBhbGxvdyB0aGUgbmV4dCBzdGFnZSBvZiBjb25maWcgdG8gaGFwcGVuIGFzIHNlYW1sZXNzbHkgYXMgcG9zc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDEwOlx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFwmIzM0O0JcJiMzNDsgamFja3MpLlxuICAxMTpcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cbiAgMTI6XHQjXG4gIDEzOlx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXCYjMzQ7TWluaS1BQlwmIzM0OyBqYWNrLCBzeXN0ZW1zIHdpdGhcbiAgMTQ6XHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFwmIzM0O1VTQiBPbi10aGUtR29cJiMzNDsgKENPTkZJR19VU0JfT1RHKS5cbiAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgR2FkZ2V0IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoYXQgYFVTQl9HQURHRVRgIGl0c2VsZiBpcyBkZXBlbmRlbmN5LWZyZWUuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MsIGJ1dCBkb2VzbiYjMzk7dCB0ZWxsIHRoZSB3aG9sZSBzdG9yeS4gVGhlIHJlbGV2YW50IGNvbmZpZ3MgdGhlbiBhcmUgYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBOb3csIHRvIGFjdHVhbGx5ICp0ZXN0KiB0aGVzZSBnYWRnZXRzIGVmZmVjdGl2ZWx5LCBJIG5lZWQgdG8gY29uc2lkZXIgaG9zdCBjb250cm9sbGVycy4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBkbyBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGZvciB0ZXN0aW5nPyBHaXZlbiBzeXprYWxsZXImIzM5O3MgdHlwaWNhbCBhcHByb2FjaCwgaXQgdXN1YWxseSB1dGlsaXplcyBgVVNCX0RVTU1ZX0hDRGAgb3IgcG90ZW50aWFsbHkgYFVTQl9SQVdfR0FER0VUYCBmb3IgdGhpcyBwdXJwb3NlLiBJIHNob3VsZCBjaGVjayB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgaXMgZGVmaW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlldyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9EVU1NWV9IQ0QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVEQyBLY29uZmlnKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBVU0IgRGV2aWNlIENvbnRyb2xsZXIgKFVEQykgc3VwcG9ydCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYCBmaWxlIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LiBOb3csIHdoZXJlIHdhcyBJIGxhc3QgbG9va2luZz8gQWgsIHllcywgbGluZSA0MjggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgdmFyaW91cyBVREMgZHJpdmVycyBhcmUgYnJvdWdodCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MsIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBsb29rIGxpa2UsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW4gYW5kIHJlbWluZCBteXNlbGYgb2YgdGhlIGRldGFpbHMgb2YgdGhlIFVEQyBzdWJzeXN0ZW0gS2NvbmZpZy4gSG9wZWZ1bGx5LCB0aGlzIHByb3ZpZGVzIHRoZSBjb250ZXh0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQyNTpcdCMgTEFTVCAtLSBkdW1teS9lbXVsYXRlZCBjb250cm9sbGVyXG4gNDI2Olx0I1xuIDQyNzpcdFxuIDQyODpcdGNvbmZpZyBVU0JfRFVNTVlfSENEXG4gNDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuIDQzMDpcdFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXHUwMDI2XHUwMDI2IFVTQl9HQURHRVQ9bSlcbiA0MzE6XHRcdGhlbHBcbiA0MzI6XHRcdCAgVGhpcyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGVtdWxhdGVzIFVTQiwgbG9vcGluZyBhbGwgZGF0YSB0cmFuc2ZlclxuIDQzMzpcdFx0ICByZXF1ZXN0cyBiYWNrIHRvIGEgVVNCIFwmIzM0O2dhZGdldCBkcml2ZXJcJiMzNDsgaW4gdGhlIHNhbWUgaG9zdC4gIFRoZSBob3N0XG4gNDM0Olx0XHQgIHNpZGUgaXMgdGhlIGNvbnRyb2xsZXI7IHRoZSBnYWRnZXQgc2lkZSBpcyB0aGUgZGV2aWNlLiAgR2FkZ2V0IGRyaXZlcnNcbiA0MzU6XHRcdCAgY2FuIGJlIGhpZ2gsIGZ1bGwsIG9yIGxvdyBzcGVlZDsgYW5kIHRoZXkgaGF2ZSBhY2Nlc3MgdG8gZW5kcG9pbnRzXG4gNDM2Olx0XHQgIGxpa2UgdGhvc2UgZnJvbSBORVQyMjgwLCBQWEEyeHgsIG9yIFNBMTEwMCBoYXJkd2FyZS5cbiA0Mzc6XHRcbiA0Mzg6XHRcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXG4gNDM5Olx0XHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XG4gNDQwOlx0XHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxuIDQ0MTpcdFxuIDQ0MjpcdFx0ICBTaW5jZSBzdWNoIGEgZ2FkZ2V0IHNpZGUgZHJpdmVyIG5lZWRzIHRvIGludGVyb3BlcmF0ZSB3aXRoIGEgaG9zdFxuIDQ0MzpcdFx0ICBzaWRlIExpbnV4LVVTQiBkZXZpY2UgZHJpdmVyLCB0aGlzIG1heSBoZWxwIHRvIGRlYnVnIGJvdGggc2lkZXNcbiA0NDQ6XHRcdCAgb2YgYSBVU0IgcHJvdG9jb2wgc3RhY2suXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDE2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgVVNCIEdhZGdldCBUZXN0aW5nIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHRlc3QgZW52aXJvbm1lbnQgZm9yIFVTQiBnYWRnZXRzLCBhbmQgU3l6a2FsbGVyIHNlZW1zIGxpa2UgdGhlIGdvLXRvIHJlc291cmNlIGZvciBhIHNvbGlkIGZvdW5kYXRpb24uIEkgcmVjYWxsIHNlZWluZyB0aGVtIGxldmVyYWdlIGBVU0JfRFVNTVlfSENEYCBxdWl0ZSBvZnRlbiBpbiB0aGVpciB0ZXN0cy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBpdCBhIHN0cm9uZyBjb250ZW5kZXIgZm9yIGluY2x1c2lvbiBpbiBteSBjb25maWd1cmF0aW9uLCBnaXZlbiBpdHMgcHJvdmVuIHRyYWNrIHJlY29yZCBpbiB0aGF0IGNvbnRleHQuIEJ1dCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgc2VlaW5nIGBVU0JfUkFXX0dBREdFVGAgdXNlZCBhbG9uZ3NpZGUgaXQuIEl0JiMzOTtzIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFVTQl9SQVdfR0FER0VUYCBjb25maWd1cmF0aW9uLCBiZWNhdXNlIGlmIGl0JiMzOTtzIGFsc28gYSBzdGFwbGUgaW4gU3l6a2FsbGVy4oCZcyB0ZXN0aW5nIG1ldGhvZG9sb2d5LCBJIGRlZmluaXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgY29tcGxlbWVudHMgYFVTQl9EVU1NWV9IQ0RgLiBBIHRob3JvdWdoIHJldmlldyBvZiBpdHMgZnVuY3Rpb25hbGl0aWVzIGlzIG5vdyB3YXJyYW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUkFXX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MTY6Y29uZmlnIFVTQl9SQVdfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJhdyBHYWRnZXRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzOTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGdvIGRlZXAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBJIHJlbWVtYmVyIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJlc3Rpbmcgc3R1ZmYgYXJvdW5kIHRoZSBsZWdhY3kgZ2FkZ2V0IGltcGxlbWVudGF0aW9uIEkgbmVlZCB0byBjaGVjay4gUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA1MTYuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc3BlY2lmaWMgc2V0dGluZ3MgSSYjMzk7bSBpbnRlcmVzdGVkIGluLiBJJiMzOTttIGFpbWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHRoZSBvcHRpb25zIHByZXNlbnRlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZHJpdmVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUxMDpcdFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXG4gNTExOlx0XHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cbiA1MTI6XHRcbiA1MTM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDUxNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX3dlYmNhbVwmIzM0Oy5cbiA1MTU6XHRcbiA1MTY6XHRjb25maWcgVVNCX1JBV19HQURHRVRcbiA1MTc6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBSYXcgR2FkZ2V0XCYjMzQ7XG4gNTE4Olx0XHRoZWxwXG4gNTE5Olx0XHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcbiA1MjA6XHRcdCAgY29udHJvbCBvdmVyIHRoZSBnYWRnZXQmIzM5O3MgY29tbXVuaWNhdGlvbiBwcm9jZXNzLlxuIDUyMTpcdFxuIDUyMjpcdFx0ICBMaWtlIGFueSBvdGhlciBnYWRnZXQgZHJpdmVyLCBSYXcgR2FkZ2V0IGltcGxlbWVudHMgVVNCIGRldmljZXMgdmlhXG4gNTIzOlx0XHQgIHRoZSBVU0IgZ2FkZ2V0IEFQSS4gVW5saWtlIG1vc3QgZ2FkZ2V0IGRyaXZlcnMsIFJhdyBHYWRnZXQgZG9lcyBub3RcbiA1MjQ6XHRcdCAgaW1wbGVtZW50IGFueSBjb25jcmV0ZSBVU0IgZnVuY3Rpb25zIGl0c2VsZiBidXQgcmVxdWlyZXMgdXNlcnNwYWNlXG4gNTI1Olx0XHQgIHRvIGRvIHRoYXQuXG4gNTI2Olx0XG4gNTI3Olx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL3VzYi9yYXctZ2FkZ2V0LnJzdCBmb3IgZGV0YWlscy5cbiA1Mjg6XHRcbiA1Mjk6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk2MAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiAxMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBUQ00gQ29uZmlnZnMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIGBmX3RjbS5jYCwgd2hpY2ggaXMgYSBDb25maWdGUyBmdW5jdGlvbi4gTXkgbWFpbiBjb25jZXJuIGhlcmUgcmV2b2x2ZXMgYXJvdW5kIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgbmF0dXJhbGx5LiBJdCYjMzk7cyBhIGdvb2QgaWRlYSB0byBpbmNsdWRlIGBVU0JfRFVNTVlfSENEYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UuIExldCYjMzk7cyBzdGFydCBieSBsaXN0aW5nIHRoZSBrZXkgY29uZmlnczoKCiogICBgVVNCX0dBREdFVGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVEFSR0VUX0NPUkVgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYAoqICAgYFVTQl9EVU1NWV9IQ0RgCgpOb3csIGxldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSXQgcmVsaWVzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBgVEFSR0VUX0NPUkVgIGRlcGVuZHMgb24gYEJMT0NLYCwgYW5kIGBVU0JfQ09ORklHRlNgIG5lZWRzIGBVU0JfR0FER0VUYC4gYFVTQl9EVU1NWV9IQ0RgIGhhcyBkZXBlbmRlbmNpZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLiBTbyB0aGUgZnVsbCBzZXQgb2YgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBjb25zaWRlciBhcmU6IGBVU0JgLCBgQkxPQ0tgLCBgVVNCX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYW5kIGBVU0JfRFVNTVlfSENEYC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCwgYW5kIG9ubHkgdGhvc2UgZnVuY3Rpb25zLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBMZXQmIzM5O3MgY29uZmlybSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYy4gWWVzLCB0aGV5IGFyZS4gQW5kIGFyZSB0aGV5IGlubGluZWQ/IE5vLCB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVzYmdfb3BzYC4gVGhpcyBtZWFucyB0aGF0IHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIHdpbGwgbm90IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGF0IG1ha2VzIHRoZW0gcGVyZmVjdCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLgoKSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoZSBjb2RlIGxvZ2ljOyB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBUaGlzIHJhY2UgaW52b2x2ZXMgdGhlIGNoZWNrIG9mIGBvcHRzLSZndDtoYXNfZGVwYCBhbmQgdGhlIHVzZSBvZiBgb3B0cy0mZ3Q7ZGVwZW5kZW50YC4gVGhlIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBieSBpbnRyb2R1Y2luZyBhIGxvY2FsIHZhcmlhYmxlIHRvIHJlYWQgYGhhc19kZXAgPSBvcHRzLSZndDtoYXNfZGVwO2AgYW5kIHVzZXMgdGhhdCBjb3B5IGluc3RlYWQgb2YgdGhlIHZvbGF0aWxlIHZhcmlhYmxlLiBBZGRpdGlvbmFsbHksIGl0IHJlb3JkZXJzIHRoZSBgY29uZmlnX2l0ZW1fZ2V0YCBhbmQgYG11dGV4X3VubG9ja2Agb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBnZW51aW5lIGJ1Zy4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZml4IGlzIHNvbGlkLgoKVG8gc3VtbWFyaXplLCBteSBzdWdnZXN0ZWQgY29uZmlndXJhdGlvbnMgYXJlOgoKKiAgIGBVU0JfR0FER0VUYAoqICAgYFVTQl9DT05GSUdGU2AKKiAgIGBUQVJHRVRfQ09SRWAKKiAgIGBVU0JfQ09ORklHRlNfRl9UQ01gCiogICBgVVNCX0RVTU1ZX0hDRGAKCkFuZCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZToKCiogICBgdXNiZ19tYWtlX3RwZ2AKKiAgIGB1c2JnX2Ryb3BfdHBnYAoKTXkgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7CgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToxMi4wMzE2NjIxMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY1MzMwOTUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjEyLjAzMTY3MjQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MjM3NTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmJiN2E3YjE5ZTg4ZTI1Nzc3NzIzYWRkOTJiOTFhOWUxYzMyN2VlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDE0OjA1OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5lNWZiYjhjYTA5ZDU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4gXFx0dW5zaWduZWQgaTtcXG4rXFx0Ym9vbCBoYXNfZGVwO1xcbiBcXG4gXFx0aWYgKHN0cnN0cihuYW1lLCBcXFwidHBndF9cXFwiKSAhPSBuYW1lKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG5AQCAtMTY3NiwxOSArMTY3NywxOSBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuIFxcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLFxcbiBcXHRcXHRmdW5jX2luc3QpO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuLVxcdGlmICghb3B0cy1cXHUwMDNlcmVhZHkpXFxuLVxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0aWYgKCFvcHRzLVxcdTAwM2VyZWFkeSkge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4rXFx0XFx0Z290byB1bmxvY2tfaW5zdDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZWhhc19kZXApIHtcXG4tXFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpKVxcbi1cXHRcXHRcXHRnb3RvIHVubG9ja19kZXA7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxcbi1cXHRcXHRcXHR3d24tXFx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXFxuLVxcdFxcdFxcdFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0aGFzX2RlcCA9IG9wdHMtXFx1MDAzZWhhc19kZXA7XFxuK1xcdGlmIChoYXNfZGVwKSB7XFxuK1xcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cXHUwMDNlZGVwZW5kZW50KSkge1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4rXFx0XFx0XFx0Z290byB1bmxvY2tfaW5zdDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbiBcXG4gXFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcXG4gXFx0cmV0ID0gLUVOT01FTTtcXG5AQCAtMTcwNCwzMSArMTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuIFxcdHRwZy1cXHUwMDNldHBvcnQgPSB0cG9ydDtcXG4gXFx0dHBnLVxcdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcXG4gXFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xcbitcXHR0cGctXFx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XFxuK1xcbitcXHRjb25maWdfaXRlbV9nZXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXG4rXFx0aWYgKCFoYXNfZGVwKSB7XFxuK1xcdFxcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxcbitcXHRcXHRcXHR3d24tXFx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXFxuK1xcdFxcdFxcdFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdGdvdG8gcHV0X2l0ZW07XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIFNQQyBkb2Vzbid0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxcbiBcXHQgKiBwcmV0ZW5kIHRvIGJlIFNBUy4uXFxuIFxcdCAqL1xcbiBcXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFxcdTAwMjZ0cGctXFx1MDAzZXNlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tXFx0XFx0Z290byBmcmVlX3dvcmtxdWV1ZTtcXG4rXFx0XFx0Z290byB1bmRlcGVuZF9pdGVtO1xcbiBcXG4tXFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XFxuLVxcdHRwZy1cXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0Y29uZmlnX2l0ZW1fcHV0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuIFxcdHJldHVybiBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGc7XFxuIFxcbi1mcmVlX3dvcmtxdWV1ZTpcXG4rdW5kZXBlbmRfaXRlbTpcXG4rXFx0aWYgKCFoYXNfZGVwKVxcbitcXHRcXHRjb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK3B1dF9pdGVtOlxcbitcXHRjb25maWdfaXRlbV9wdXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4gXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuIGZyZWVfdHBnOlxcbiBcXHRrZnJlZSh0cGcpO1xcbiB1bnJlZl9kZXA6XFxuLVxcdGlmIChvcHRzLVxcdTAwM2VoYXNfZGVwKVxcbitcXHRpZiAoaGFzX2RlcClcXG4gXFx0XFx0bW9kdWxlX3B1dChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tdW5sb2NrX2RlcDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuIHVubG9ja19pbnN0OlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XFxuIFxcbkBAIC0xNzQzLDYgKzE3NTcsNyBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG4gXFx0XFx0XFx0XFx0c3RydWN0IHVzYmdfdHBnLCBzZV90cGcpO1xcbiBcXHR1bnNpZ25lZCBpO1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4rXFx0Ym9vbCBoYXNfZGVwO1xcbiBcXG4gXFx0dGNtX3VzYmdfZHJvcF9uZXh1cyh0cGcpO1xcbiBcXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XFxuQEAgLTE3NTMsMTYgKzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuIFxcdFxcdGlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRpZiAoaSBcXHUwMDNjIFRQR19JTlNUQU5DRVMpIHtcXG4tXFx0XFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xcbiBcXHRcXHRvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LFxcbiBcXHRcXHRcXHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbi1cXHRcXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcClcXG4rXFx0XFx0aGFzX2RlcCA9IG9wdHMtXFx1MDAzZWhhc19kZXA7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fZ2V0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChoYXNfZGVwKVxcbiBcXHRcXHRcXHRtb2R1bGVfcHV0KG9wdHMtXFx1MDAzZWRlcGVuZGVudCk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHRcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFxuK1xcdFxcdGNvbmZpZ19pdGVtX3B1dChcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbitcXHRcXHRrZnJlZSh0cGcpO1xcbitcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MTIuNDg4NTU4NTM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI2MDc2MTg5MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVEFSR0VUX0NPUkVcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1RDTVwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIixcbiAgICBcInVzYmdfZHJvcF90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmI3YTdiMTllODhlMjU3Nzc3MjNhZGQ5MmI5MWE5ZTFjMzI3ZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDowNToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbmluZGV4IGIzZmE1YTE3ZmQyZGIuLmU1ZmJiOGNhMDlkNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpbnQgcmV0O1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4gXHR1bnNpZ25lZCBpO1xuK1x0Ym9vbCBoYXNfZGVwO1xuIFxuIFx0aWYgKHN0cnN0cihuYW1lLCBcInRwZ3RfXCIpICE9IG5hbWUpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuQEAgLTE2NzYsMTkgKzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXG4gXHRcdGZ1bmNfaW5zdCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KVxuLVx0XHRnb3RvIHVubG9ja19kZXA7XG4rXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1x0XHRnb3RvIHVubG9ja19pbnN0O1xuK1x0fVxuIFxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcCkge1xuLVx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtXHUwMDNlZGVwZW5kZW50KSlcbi1cdFx0XHRnb3RvIHVubG9ja19kZXA7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbi1cdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbi1cdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIHVubG9ja19kZXA7XG4rXHRoYXNfZGVwID0gb3B0cy1cdTAwM2VoYXNfZGVwO1xuK1x0aWYgKGhhc19kZXApIHtcbitcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpIHtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4rXHRcdFx0Z290byB1bmxvY2tfaW5zdDtcbitcdFx0fVxuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuIFxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbiBcdHJldCA9IC1FTk9NRU07XG5AQCAtMTcwNCwzMSArMTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHR0cGctXHUwMDNldHBvcnQgPSB0cG9ydDtcbiBcdHRwZy1cdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcbiBcbitcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuK1x0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4rXG4rXHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcbitcdGlmICghaGFzX2RlcCkge1xuK1x0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbitcdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbitcdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRnb3RvIHB1dF9pdGVtO1xuK1x0fVxuK1xuIFx0LypcbiBcdCAqIFNQQyBkb2Vzbid0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxuIFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxuIFx0ICovXG4gXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFx1MDAyNnRwZy1cdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGdvdG8gZnJlZV93b3JrcXVldWU7XG4rXHRcdGdvdG8gdW5kZXBlbmRfaXRlbTtcbiBcbi1cdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuLVx0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnO1xuIFxuLWZyZWVfd29ya3F1ZXVlOlxuK3VuZGVwZW5kX2l0ZW06XG4rXHRpZiAoIWhhc19kZXApXG4rXHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rcHV0X2l0ZW06XG4rXHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbitcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBmcmVlX3RwZzpcbiBcdGtmcmVlKHRwZyk7XG4gdW5yZWZfZGVwOlxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbitcdGlmIChoYXNfZGVwKVxuIFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbi1cdGVsc2Vcbi1cdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi11bmxvY2tfZGVwOlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuIHVubG9ja19pbnN0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4gXG5AQCAtMTc0Myw2ICsxNzU3LDcgQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4gXHRcdFx0XHRzdHJ1Y3QgdXNiZ190cGcsIHNlX3RwZyk7XG4gXHR1bnNpZ25lZCBpO1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4rXHRib29sIGhhc19kZXA7XG4gXG4gXHR0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7XG4gXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XG5AQCAtMTc1MywxNiArMTc2OCwyOCBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiBcdFx0aWYgKHRwZ19pbnN0YW5jZXNbaV0udHBnID09IHRwZylcbiBcdFx0XHRicmVhaztcbiBcdGlmIChpIFx1MDAzYyBUUEdfSU5TVEFOQ0VTKSB7XG4tXHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBcdFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCxcbiBcdFx0XHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbi1cdFx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbitcdFx0aGFzX2RlcCA9IG9wdHMtXHUwMDNlaGFzX2RlcDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1xuK1x0XHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuK1xuK1x0XHRpZiAoaGFzX2RlcClcbiBcdFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4gXHRcdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0a2ZyZWUodHBnKTtcbitcdFx0cmV0dXJuO1xuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToxMi40ODg1NTk3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjU0MTEwMzY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBDb3JlIE1vZHVsZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuIE15IHNwaWRleSBzZW5zZSBpcyB0aW5nbGluZzsgd2UgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBuZWNlc3NpdGF0ZXMgZnV6emluZy4gTG9va3MgbGlrZSB3ZSdyZSB0b3VjaGluZyBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYC4gQWgsIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbiEgUmlnaHQsIHRoYXQncyBhY2Nlc3NlZCB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIHdhcnJhbnRlZC5cblxuVGhlIHBsYW4gaXMgc2ltcGxlLiBMZXQncyBpc29sYXRlIHRob3NlIGZ1bmN0aW9ucywgYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AsIGFzIG91ciBmdXp6aW5nIHRhcmdldHMuIE5vdywgbGV0J3MgaWRlbnRpZnkgYW55IHJlcXVpcmVkIGBDT05GSUdgIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGtub2JzIG5lZWQgdG8gYmUgdHVybmVkLiBUaGlzIHNob3VsZG4ndCBiZSB0b28gdHJpY2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MjUuMDI5NjY4MTI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NDQxNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToyNS4wOTYxMTc0NDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU0MzQ0OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBVU0JfQ09ORklHRlNfRl9UQ01gIGZlYXR1cmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGxpa2VseSBrZXJuZWwgZGVmY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBvdGhlcnMsIHRvIHRyYWNlIGJhY2sgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIHRvIGV2ZW4gKmJlKiBzZWxlY3RhYmxlIG9yIGZ1bmN0aW9uYWwuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHByZXJlcXVpc2l0ZSBzeW1ib2xzLCBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgdXBvbiwgYW5kIGFueSBidWlsZCBmbGFncyBvciB0b29sY2hhaW4gcmVxdWlyZW1lbnRzIGl0IG1heSBoYXZlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgbWF0dGVyIG9mIGNhcmVmdWwgY3Jvc3MtcmVmZXJlbmNpbmcgYW5kIGRpZ2dpbmcgaW50byB0aGUgYnVpbGQgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjI5LjQ1MDQ2NTU5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE0Mzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToyOS41MTE2MTY3ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDYyNjIyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHRoZSB0YXNrIGF0IGhhbmQsIEkgdGhpbmsgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZ29pbmcgdG8gYmUgZm91bmQgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ5NS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgb2YgYSBVU0IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24sIGFuZCB0aGlzIGZpbGUgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBvcHRpb25zLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGlzIHNlY3Rpb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyB0aGVzZSBzZXR0aW5ncyB3b3JrIHdpdGhpbiB0aGUgb3ZlcmFsbCBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gTGV0J3Mgc2VlIHdoYXQga2luZCBvZiBjb25maWd1cmF0aW9uIHN3aXRjaGVzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGRldGFpbGVkIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MzQuOTc0MjQzMzQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NTpcXHRcXHRoZWxwXFxuIDQ4NjpcXHRcXHQgIFRoZSBQcmludGVyIGZ1bmN0aW9uIGNoYW5uZWxzIGRhdGEgYmV0d2VlbiB0aGUgVVNCIGhvc3QgYW5kIGFcXG4gNDg3OlxcdFxcdCAgdXNlcnNwYWNlIHByb2dyYW0gZHJpdmluZyB0aGUgcHJpbnQgZW5naW5lLiBUaGUgdXNlciBzcGFjZVxcbiA0ODg6XFx0XFx0ICBwcm9ncmFtIHJlYWRzIGFuZCB3cml0ZXMgdGhlIGRldmljZSBmaWxlIC9kZXYvZ19wcmludGVyXFx1MDAzY1hcXHUwMDNlIHRvXFxuIDQ4OTpcXHRcXHQgIHJlY2VpdmUgb3Igc2VuZCBwcmludGVyIGRhdGEuIEl0IGNhbiB1c2UgaW9jdGwgY2FsbHMgdG9cXG4gNDkwOlxcdFxcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci5yc3RcXG4gNDkzOlxcdFxcdCAgd2hpY2ggaW5jbHVkZXMgc2FtcGxlIGNvZGUgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlIGZpbGUuXFxuIDQ5NDpcXHRcXG4gNDk1OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcXG4gNDk4OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ5OTpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDA6XFx0XFx0c2VsZWN0IFVTQl9GX1RDTVxcbiA1MDE6XFx0XFx0aGVscFxcbiA1MDI6XFx0XFx0ICBUaGlzIGZhYnJpYyBpcyBhIFVTQiBnYWRnZXQgY29tcG9uZW50LiBUd28gVVNCIHByb3RvY29scyBhcmVcXG4gNTAzOlxcdFxcdCAgc3VwcG9ydGVkIHRoYXQgaXMgQkJCIG9yIEJPVCAoQnVsayBPbmx5IFRyYW5zcG9ydCkgYW5kIFVBU1xcbiA1MDQ6XFx0XFx0ICAoVVNCIEF0dGFjaGVkIFNDU0kpLiBCT1QgaXMgYWR2ZXJ0aXNlZCBvbiBhbHRlcm5hdGl2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozNC45NzQzNzI1ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcyNDcyNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGVidWdnaW5nIFVTQiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0LCB0aGlzIHdob2xlIHRoaW5nLCBoaW5nZXMgb24gYFRBUkdFVF9DT1JFYCBhbmQgYFVTQl9DT05GSUdGU2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24sIGBVU0JfQ09ORklHRlNfRl9UQ01gLCBpcyBzZXQuIEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gQW5kIEknbSBhbHNvIHRoaW5raW5nIHRoYXQgYFVTQl9GX1RDTWAgc2hvdWxkIGJlIHNlbGVjdGVkIHRvby4gR2l2ZW4gdGhhdCBJIG5lZWQgdG8gY2hlY2sgYFVTQl9GX1RDTWAsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGxvY2F0ZSBgVVNCX0ZfVENNYC4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoYXQgcGF0aCwgc2luY2UgdGhhdCdzIHdoZXJlIHRoZSBmdW5jdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHR5cGljYWxseSBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTY4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozOS4wNDY4NDc1MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI3MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRl9UQ01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjA9Y29uZmlnIFVTQl9GX1BSSU5URVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMjM6Y29uZmlnIFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozOS4xMDE3ODI5NzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4Mzk1MTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBmb3IgVVNCIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUga2V5IGZsYWcgSSBuZWVkIHRvIGVuYWJsZSBoZXJlLiBUaGF0J3MgdGhlIHByaW1hcnkgZm9jdXMuIEJ1dCwgSSBrbm93IHRoZXJlJ3MgYSBkZXBlbmRlbmN5IGNoYWluLCBhbmQgSSdtIHByZXR0eSBzdXJlIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgIHdpbGwgYWxzbyBoYXZlIHRvIGJlIHNldC4gQmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZSBJJ2xsIGRvdWJsZS1jaGVjayBgVEFSR0VUX0NPUkVgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNldHRpbmdzIHNvIGV2ZXJ5dGhpbmcgY29tcGlsZXMgcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTo0NS40ODU3MzgyOTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjYzNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUQVJHRVRfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3RhcmdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWc6MzptZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjQ1LjUzODAwOTc4MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkyNzE2NTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFdlYioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiBgVEFSR0VUX0NPUkVgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhlIGRlcGVuZGVuY3ksIHdoYXQgb3RoZXIgdmFyaWFibGVzIG1heSBpbXBhY3QgaXQ/XCIuIExldCdzIHN0YXJ0IHdpdGggYSBwb3RlbnRpYWxseSByZWxldmFudCBjb21wb25lbnQsIG9mdGVuIGEgc291cmNlIG9mIGhlYWRhY2hlcyBpZiBub3QgY29uZmlndXJlZCBjb3JyZWN0bHksIGFuZCBzZWUgd2hlcmUgYFVTQl9DT05GSUdGU2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBJdCdzIGEga2V5IHBpZWNlIGluIG1hbnkgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucywgYW5kIGEgY29tbW9uIGludGVncmF0aW9uIHBvaW50LiBMZXQgbWUgY2hlY2sgaXRzIHNldHRpbmdzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgYWRkcmVzc2luZy4gSSdsbCBtZW50YWxseSBtYXAgdGhpcyBvdXQsIGNvbnNpZGVyIGFueSBwb3NzaWJsZSBjb25mbGljdHMsIGFuZCB0aGVuIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNjo0Ni40NjUxNzc5MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTg4OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDY6NDYuNTM1MzcyODk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTE0ODI2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0IFRhcmdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBVU0IgZ2FkZ2V0IHRhcmdldCBjb25maWd1cmF0aW9uIGNvZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHdlIG5lZWQgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBlbmFibGVkIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSdyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGZhYnJpYy5cblxuRmlyc3QsIGxldCBtZSBjb25maXJtIHNvbWV0aGluZyBiYXNpYzogQXJlIHRoZXNlIGZ1bmN0aW9ucyBkZWNsYXJlZCBzdGF0aWNhbGx5PyBMZXQncyBjaGVjayB0aGUgcGF0Y2jigKYgWXVwLCB0aGV5IGFyZTogYHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKC4uLilgIGFuZCBgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyguLi4pYC4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIFN0YXRpYyBmdW5jdGlvbnMgdHlwaWNhbGx5IGhhdmUgbGltaXRlZCBzY29wZS4gSG93ZXZlciwgdGhleSBhcmUgbGlrZWx5IGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0J3MgaG93IHRoZXkncmUgZ2V0dGluZyBjYWxsZWQsIEknbSBiZXR0aW5nLCBwcm9iYWJseSBpbiBgZmFicmljX29wc2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnRzIGFuZCBzZWUgaG93IHRoaXMgdGFyZ2V0IGdyb3VwIHBvcnRhbCBzZXR1cCBpcyBhY3R1YWxseSBiZWluZyBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA2OjUxLjEyNjg1OTQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU5MDgwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JnX21ha2VfdHBnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDQ5LVxcdC5mYWJyaWNfZHJvcF93d25cXHRcXHQ9IHVzYmdfZHJvcF90cG9ydCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDUwOlxcdC5mYWJyaWNfbWFrZV90cGdcXHRcXHQ9IHVzYmdfbWFrZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MS1cXHQuZmFicmljX2VuYWJsZV90cGdcXHRcXHQ9IHVzYmdfZW5hYmxlX3RwZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDY6NTEuMTc3NDU2NTQ3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTQ0OTY4NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhleSBhcmUgZGVmaW5pdGVseSBhc3NpZ25lZCB0byBgdGFyZ2V0X2NvcmVfZmFicmljX29wc2AuIFNpbmNlIHRoZXkncmUgc3RhdGljLCBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXkgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIHVuaXF1ZSBhZGRyZXNzZXMuIEJ1dCBoYW5nIG9uLCB0aGV5J3JlIGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzISBUaGF0IGNvbXBsZXRlbHkgcnVsZXMgb3V0IGlubGluaW5nOyB0aGV5ICpoYXZlKiB0byBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcHJvbXB0LiBJdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IHRoZXNlIGZ1bmN0aW9ucywgYnkgdmlydHVlIG9mIHRoZWlyIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudCwgYXJlIG5vdCBpbmxpbmVkLiBCdXQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgY29tcHJlaGVuc2l2ZSwgSSBjb3VsZCBpbmNsdWRlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBhcyB3ZWxsLCB0byBiZSBwZXJmZWN0bHkgc2FmZS5cblxuV2FpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25maWdmcyBvcGVyYXRpb25zIHNwZWNpZmljIHRvIHRoaXMgZmFicmljLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIHV0aWxpemUuIExldCdzIHNlZS4uLiBBaCwgYHVzYmdfb3BzYCBpcyByZWdpc3RlcmVkIHNvbWV3aGVyZS4gR29vZC4gTGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NDMuMTIyNDI4OTAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTk4NjA1OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiZ19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAyOD1zdGF0aWMgaW50IHVzYmdfY2hlY2tfc3RvcF9mcmVlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjAzMzpzdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAzNC1cXHQubW9kdWxlXFx0XFx0XFx0XFx0PSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI3OTU9c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwMzpcXHRyZXQgPSB0YXJnZXRfcmVnaXN0ZXJfdGVtcGxhdGUoXFx1MDAyNnVzYmdfb3BzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yODExPXN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI4MTM6XFx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXFx1MDAyNnVzYmdfb3BzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODE0LVxcdHVzYl9mdW5jdGlvbl91bnJlZ2lzdGVyKFxcdTAwMjZ0Y211c2JfZnVuYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjQzLjQ4MjI5NjI0OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM5MTI2Mzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIENvbmZpZ0ZTIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZ290IG15IGV5ZSBvbiBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCDigJMgdGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgcmlnaHQ/IFRoZXkgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHllcywgZGVmaW5pdGVseSByZWFjaGFibGUsIENvbmZpZ0ZTIGlzIHRoZSBwYXRod2F5IHRvIGdldCB0aGVyZS4gVGhlIGJpZyBxdWVzdGlvbiBpcywgYXJlIHRoZXkgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZz8gQWJzb2x1dGVseSEgVGhlIGlzc3VlIGFkZHJlc3NlZCBpcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgc28gaXQncyByaXBlIGZvciBleHBsb2l0YXRpb24uXG5cbkJlZm9yZSBJIGRpdmUgaW4sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBMb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBHb3R0YSBtYWtlIHN1cmUgSSd2ZSBnb3QgZXZlcnl0aGluZyBsaW5lZCB1cCBjb3JyZWN0bHkuIEFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBtaWdodCBiZSBtaXNzaW5nPyBUaW1lIHRvIGludmVzdGlnYXRlIHRoZSBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NDguMjIxNDI2Mzc1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEyMDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjIzPWNvbmZpZyBVU0JfRl9UQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMjg6Y29uZmlnIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMzktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1MC1cXHRib29sIFxcXCJBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNTk6Y29uZmlnIFVTQl9DT05GSUdGU19PQkVYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVxcdGJvb2wgXFxcIk9iamVjdCBFeGNoYW5nZSBNb2RlbCAoQ0RDIE9CRVgpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTM6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzNTpjb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzY5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MDAtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxMjpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAyLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0Ni1cXHRib29sIFxcXCJNSURJIDIuMCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NTg6Y29uZmlnIFVTQl9DT05GSUdGU19GX0hJRFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cXHRib29sIFxcXCJISUQgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXFx0Ym9vbCBcXFwiVVNCIFdlYmNhbSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODItXFx0Ym9vbCBcXFwiUHJpbnRlciBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTU6Y29uZmlnIFVTQl9DT05GSUdGU19GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cXHRib29sIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjQ4LjMwNDU1MjExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjQ4MDk0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHdoYXQgSSdtIGxvb2tpbmcgYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2AgZGlyZWN0b3J5IGJlZm9yZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBiZSBmb3IgdGhhdC4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjggKG9yIHRoZXJlYWJvdXRzKSBvZiB0aGF0IGZpbGUuIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWdpbiwgb3IgYXQgbGVhc3QgYSBzaWduaWZpY2FudCBncm91cGluZyBvZiB0aGVtLiBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHZhcmlvdXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NTEuODY5MzY1NjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjUxLjg2OTQ2MzA3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTgxMjMyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBGUyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSdtIHRoaW5raW5nIGFib3V0IGBVU0JfQ09ORklHRlNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHJlbGF0aXZlbHkgc2VsZi1jb250YWluZWQsIHdpdGggcGVyaGFwcyBvbmx5IGEgZGVwZW5kZW5jeSBvbiBgVVNCX0dBREdFVGAsIGFuZCB0aGF0J3MgbGlrZWx5IHRoZSBvbmx5IHRoaW5nIGhvbGRpbmcgaXQgYmFjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHRoaW5raW5nIGNsZWFybHkuXG5cbk5vdywgdGhvdWdoLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGF0IGBUQVJHRVRfQ09SRWAgbWlnaHQgaGF2ZSB0byBzYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBDT05GSUdGU2AgaGFzIGFueSB1bmV4cGVjdGVkIHJlbGF0aW9uc2hpcCB0byBpdC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGNvbm5lY3Rpb25zPyBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkZWVwZXIgY29uZmlndXJhdGlvbiBhc3BlY3RzIG9mIHRoaXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNzo1Ny41ODc1ODk1MzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA2OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQ19UMTBESUZcXG4gICA4OlxcdFxcdHNlbGVjdCBTQ1NJX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcXG4gIDEzOlxcdFxcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xcbiAgMTQ6XFx0XFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBUQVJHRVRfQ09SRVxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgVENNX0lCTE9DS1xcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIlRDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgQkxLX0RFVl9JTlRFR1JJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NTcuNTg3Njk2NDA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzM1NzAxMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbnMgb2YgVEFSR0VUX0NPUkUqKlxuXG5Pa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGRlZmluaXRlbHkgZGVwZW5kZW50IG9uIGBCTE9DS2AuIFRoYXQgbWVhbnMgdGhlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGFyZSBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBMZXQncyBzdGFydCB3aXRoIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBIbW0sIGEgcXVpY2sgbG9vayBhbmQgaXQgc2VlbXMgYHVzYmdfbWFrZV90cGdgIGlzIGRlY2xhcmVkIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrIOKAkyBhcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhIHRoYXQgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24/IEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgIHRvIHNlZSB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc4MSwiT3V0cHV0VG9rZW5zIjo3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjAxLjY2MTI3MDk3NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1OTg0ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTM2PXN0YXRpYyBzdHJ1Y3QgdHBnX2luc3RhbmNlIHRwZ19pbnN0YW5jZXNbVFBHX0lOU1RBTkNFU107XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mzg6c3RhdGljIERFRklORV9NVVRFWCh0cGdfaW5zdGFuY2VzX2xvY2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODowMS43MTk4Nzc5NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU4MDcyODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBDb2RlIGZvciBHbG9iYWwgU3ltYm9sIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCByZWdhcmRpbmcgc3ltYm9scy4gVGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGRldmVsb3BlciwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gbG9vayBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGF0IG1hY3JvIGlzIGEgY2xhc3NpYyBpbmRpY2F0b3Igb2YgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LCBhIGNvbW1vbiBwYXR0ZXJuIGluIGtlcm5lbCBtb2R1bGVzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zIGRldmVsb3BtZW50IHdoZXJlIHlvdSBuZWVkIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBzeXN0ZW0uIElmIEkgY2FuIGZpbmQgdGhlIHVzZXMgb2YgdGhhdCBtYWNybywgSSdsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaW50ZW50aW9uYWxseSBiZWluZyBleHBvc2VkLlxuXG5GYWlsaW5nIGEgZGlyZWN0IGhpdCB3aXRoIGBFWFBPUlRfU1lNQk9MYCwgSSdsbCBicm9hZGVuIHRoZSBzZWFyY2guIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgZ2xvYmFsbHkgdmlzaWJsZSBmdW5jdGlvbnMsIG1heWJlIHVzaW5nIGEgbW9yZSBnZW5lcmFsIHNlYXJjaCBmb3IgZ2xvYmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gSSdsbCBiZSBsb29raW5nIGF0IHRoZSBsaW5rZXIgZmlsZXMgb3Igb3RoZXIgcHJvamVjdCBidWlsZCBtZXRhZGF0YSBpZiB0aGUgaW5pdGlhbCBzZWFyY2ggaXMgdW5zdWNjZXNzZnVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgcHJvamVjdCBpcyBleHBsaWNpdGx5IGNvbnRyb2xsaW5nIHZpc2liaWxpdHkgb3IsIHBlcmhhcHMsIHJlbHlpbmcgb24gZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgYnVpbGQgc3lzdGVtLiBEZXRlcm1pbmluZyB0aGUgbWV0aG9kIGZvciB0aGlzIGNhbiBiZSBjcnVjaWFsIGluIGEgbG90IG9mIHNpdHVhdGlvbnMuXG5cbkVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSAncHVibGljIEFQSScgb2YgdGhpcyBjb2RlLCBvciBhdCBsZWFzdCB0aGUgcGFydHMgZGVzaWduZWQgdG8gYmUgYWNjZXNzaWJsZSBieSBvdGhlciBjb21wb25lbnRzLiBGaW5kaW5nIGBFWFBPUlRfU1lNQk9MYCBpcyBqdXN0IHRoZSBmYXN0IHRyYWNrOyBJJ20gcHJlcGFyZWQgdG8gZGlnIGEgYml0IGRlZXBlciBpZiBJIG5lZWQgdG8uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2NSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjA2LjE3Nzk1MzU0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTcyODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODowNi4yMjg2ODAyNDlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNzQ3NDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgQ29kZSBmb3IgVm9pZCBGdW5jdGlvbiBEZWZpbml0aW9ucyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIGNvbXBpbGVyIGlzIGtpY2tpbmcgaW4uIEknbSBnb2luZyB0byBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgdmVyeSBzcGVjaWZpYyB0eXBlIG9mIGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoaXMgY29kZWJhc2UuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYHZvaWRgLiBJJ20gdGhpbmtpbmcgb2YgdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gaGVyZSwgc29tZXRoaW5nIHRoYXQncyBib3RoIGVmZmljaWVudCBhbmQgcHJlY2lzZS5cblxuSSB3YW50IGEgcGF0dGVybiB0aGF0IHdpbGwgbGV0IG1lIGZpbHRlciBxdWlja2x5LiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgYHZvaWRgIGtleXdvcmQgaXRzZWxmIC0gdGhhdCdzIG5vbi1uZWdvdGlhYmxlLCBpdCdzIHRoZSBzaWduYXR1cmUgSSdtIHNlYXJjaGluZyBmb3IuIEZvbGxvd2luZyB0aGF0LCBJIGtub3cgSSBuZWVkIHRvIHNwZWNpZnkgd2hhdCBjb21lcyBhZnRlciB0aGUgYHZvaWRgLCB3aGljaCBpcyB0aGUgZnVuY3Rpb24gbmFtZS4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCBDL0MrKyBpZGVudGlmaWVyIHJ1bGVzLCBhbmQgZXhwZWN0IHRoZSBmdW5jdGlvbiBuYW1lIHRvIHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSwgYW5kIHRoZW4gYWxsb3cgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXMgdG8gZm9sbG93LiBUaGUgZWFzaWVzdCB3YXkgdG8gZGVzY3JpYmUgdGhhdCBpcyB3aXRoIGBbYS16QS1aX11bYS16QS1aMC05X10qYC4gRmluYWxseSwgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUsIEkgbmVlZCB0byBsb29rIGZvciBhbiBvcGVuaW5nIHBhcmVudGhlc2lzLCBgKGAuIFRoYXQncyB0aGUgZW5kIG9mIHRoZSBkZWNsYXJhdGlvbiwgYW5kIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpdHNlbGYuXG5cblNvLCB0aGUgcGF0dGVybiBJJ20gY29uc3RydWN0aW5nIGlzIGBedm9pZCBbYS16QS1aX11bYS16QS1aMC05X10qXFwoYCwgd2hlcmUgYF5gIGF0IHRoZSBiZWdpbm5pbmcgbWVhbnMgXCJzdGFydCBvZiBsaW5lXCIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSB2ZXJ5IGNsZWFuIGFuZCB0YXJnZXRlZCB3YXkgdG8gZmluZCB0aG9zZSBgdm9pZGAgZnVuY3Rpb25zLiBMZXQncyBzZWUgaG93IHRoYXQgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjY5LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MTIuNTQ2MTYwMTMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjI2ODM4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoxMi41OTg0MzkwMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk4MjU2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqUmVnZXggUGF0dGVybiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzcyBzdGFydHMgd2l0aCBhIHNwZWNpZmljIHJlZ2V4IHBhdHRlcm46IGBeW2Etel0uKlxcKGAuICBJIHNlZSBpdCBpbW1lZGlhdGVseS4gTXkgbWluZCdzIHdvcmtpbmcgdGhyb3VnaCBpdC4gSSByZWNvZ25pemUgdGhlIGNvbW1vbiBjaGFyYWN0ZXJzIHVzZWQgaGVyZSBhcyB3ZWxsLiBJJ20gdXNpbmcgcmVnZXggdG8gZXhhbWluZSBhIHN0cmluZyBvciBhIHNldCBvZiBzdHJpbmdzLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IEknbSBsb29raW5nICpmb3IqLlxuXG5gXmAgVGhpcyBpcyBhbiBhbmNob3IuIEl0IG1lYW5zIFwiYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuXCIgIE9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgZm9yIHBhdHRlcm5zIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSB0YXJnZXQgdGV4dC5cblxuYFthLXpdYCBUaGF0J3MgYSBjaGFyYWN0ZXIgY2xhc3MuIENsZWFybHksIHdlJ3JlIGxvb2tpbmcgZm9yIGEgbG93ZXJjYXNlIGxldHRlci4gVGhlIGBhLXpgIGlzIGEgc3RhbmRhcmQgcmFuZ2UuXG5cbmAuKmAgIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGl0LiBUaGUgYC5gIGlzIGFueSBjaGFyYWN0ZXIgKGV4Y2VwdCBuZXdsaW5lLCBkZXBlbmRpbmcgb24gdGhlIHJlZ2V4IGVuZ2luZSwgYnV0IEknbGwgYXNzdW1lIHN0YW5kYXJkIGJlaGF2aW9yIGZvciBub3cpLiBUaGUgYCpgIGlzIGEgcXVhbnRpZmllci4gWmVybyBvciBtb3JlIHRpbWVzLiBTbyB0aGlzIG1lYW5zIFwibWF0Y2ggYW55IHNlcXVlbmNlIG9mIGFueSBjaGFyYWN0ZXIsIHplcm8gb3IgbW9yZSB0aW1lcy5cIiBUaGlzIGlzIHVzdWFsbHkgdXNlZCB0byBzZWFyY2ggZm9yIGFueXRoaW5nIGFmdGVyIHRoZSBpbml0aWFsIGNoYXJhY3Rlci5cblxuYFxcKGAgIEFuZCBmaW5hbGx5LCBhIGxpdGVyYWwgb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhlIGJhY2tzbGFzaCBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc2NhcGVzIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgdGhlIHBhcmVudGhlc2lzLCBzbyB3ZSdyZSBhY3R1YWxseSBsb29raW5nIGZvciB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIuXG5cblNvLCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgSSBhbSBlc3NlbnRpYWxseSBsb29raW5nIGZvciBsaW5lcyBvciBzdHJpbmdzIHRoYXQgKmJlZ2luKiB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciwgZm9sbG93ZWQgYnkgYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMsIGFuZCAqZW5kaW5nKiB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIHNlYXJjaC4gSSdtIHRyeWluZyB0byBpZGVudGlmeSBzb21ldGhpbmcgc3BlY2lmaWMuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCB3b3VsZCBiZSB3aGF0IEknbSB1c2luZyBpdCBmb3IuIEFtIEkgcGFyc2luZyBjb2RlPyBMb29raW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgb3IgbWV0aG9kIGNhbGxzPyBBbSBJIHNlYXJjaGluZyB0aHJvdWdoIGEgdGV4dCBmaWxlIGZvciBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXM/IFRoZSBjb250ZXh0IGlzIHdoYXQgZ2l2ZXMgdGhpcyByZWdleCB0cnVlIG1lYW5pbmcuIEJ1dCB0aGUgcGF0dGVybiBpdHNlbGY/IEl0J3MgcHJldHR5IGNsZWFyIGFuZCBjb25jaXNlLCBldmVuIHdpdGhvdXQgYW55IGZ1cnRoZXIgY29udGV4dHVhbCBjbHVlcy4gTm93LCBJIG5lZWQgdG8ga25vdyB0aGUgKndoeSogb2YgdGhlIHF1ZXJ5IHRvIGFjdHVhbGx5IGludGVycHJldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoxNy4wOTY2OTg5MDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzE4Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16XS4qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MzY9c3RhdGljIHN0cnVjdCB0cGdfaW5zdGFuY2UgdHBnX2luc3RhbmNlc1tUUEdfSU5TVEFOQ0VTXTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozODpzdGF0aWMgREVGSU5FX01VVEVYKHRwZ19pbnN0YW5jZXNfbG9jayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZl91YXMgKnRvX2ZfdWFzKHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDc6c3RhdGljIGludCBib3RfZW5xdWV1ZV9jbWRfY2J3KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjA6c3RhdGljIHZvaWQgYm90X3N0YXR1c19jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NzY6c3RhdGljIHZvaWQgYm90X2VucXVldWVfc2Vuc2VfY29kZShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MTpzdGF0aWMgdm9pZCBib3RfZXJyX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE0OnN0YXRpYyB2b2lkIGJvdF9zZW5kX2JhZF9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNDg6c3RhdGljIGludCBib3Rfc2VuZF9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQsIGJvb2wgbW92ZWRfZGF0YSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDpzdGF0aWMgaW50IGJvdF9zZW5kX3N0YXR1c19yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzLS8qIFJlYWQgcmVxdWVzdCBjb21wbGV0ZWQsIG5vdyB3ZSBoYXZlIHRvIHNlbmQgdGhlIENTVyAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5NDpzdGF0aWMgdm9pZCBib3RfcmVhZF9jb21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwOC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDk6c3RhdGljIGludCBib3Rfc2VuZF9yZWFkX3Jlc3BvbnNlKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ4OnN0YXRpYyB2b2lkIHVzYmdfZGF0YV93cml0ZV9jbXBsKHN0cnVjdCB1c2JfZXAgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTpzdGF0aWMgaW50IHVzYmdfcHJlcGFyZV93X3JlcXVlc3Qoc3RydWN0IHVzYmdfY21kICosIHN0cnVjdCB1c2JfcmVxdWVzdCAqKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjUxOnN0YXRpYyBpbnQgYm90X3NlbmRfd3JpdGVfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3NDpzdGF0aWMgaW50IGJvdF9zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKiwgdm9pZCAqLCB1bnNpZ25lZCBpbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNzY6c3RhdGljIHZvaWQgYm90X2NtZF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozMDg6c3RhdGljIGludCBib3RfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozNjU6c3RhdGljIHZvaWQgYm90X2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzkwOnN0YXRpYyB2b2lkIGJvdF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzkxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo0MjI6c3RhdGljIGludCB1c2JnX2JvdF9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMy1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDcxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQ3MjpzdGF0aWMgaW50IHRjbV90b191YXNwX3Jlc3BvbnNlKGVudW0gdGNtX3RtcnNwX3RhYmxlIGNvZGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ4OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo0ODk6c3RhdGljIHVuc2lnbmVkIGNoYXIgdWFzcF90b190Y21fZnVuYyhpbnQgY29kZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OTAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTEwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUxMTpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb25lX3N0cmVhbShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdWFzX3N0cmVhbSAqc3RyZWFtKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUxMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MjUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTI2OnN0YXRpYyB2b2lkIHVhc3BfZnJlZV9jbWRyZXEoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01Mjcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTM3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUzODpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUzOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01NTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU1OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1NTc6c3RhdGljIGludCB1YXNwX3ByZXBhcmVfcl9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTkxOnN0YXRpYyB2b2lkIHVhc3BfcHJlcGFyZV9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2MTQ6c3RhdGljIHZvaWQgdWFzcF9wcmVwYXJlX3Jlc3BvbnNlKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NjUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjY2OnN0YXRpYyB2b2lkIHVzYmdfcmVsZWFzZV9jbWQoc3RydWN0IHNlX2NtZCAqc2VfY21kKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njc6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTY2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njk6c3RhdGljIHZvaWQgdWFzcF9zdGF0dXNfZGF0YV9jbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NzAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzQ5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc1MDpzdGF0aWMgaW50IHVhc3Bfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzUxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3NjI6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzYzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc3My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3NzQ6c3RhdGljIGludCB1YXNwX3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NzUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODE2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjgxNzpzdGF0aWMgaW50IHVhc3Bfc2VuZF93cml0ZV9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTgxOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NTktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6ODYwOnN0YXRpYyBpbnQgdXNiZ19zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg2MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjI6c3RhdGljIHZvaWQgdWFzcF9jbWRfY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg2My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NzYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6ODc3OnN0YXRpYyBpbnQgdWFzcF9hbGxvY19zdHJlYW1fcmVzKHN0cnVjdCBmX3VhcyAqZnUsIHN0cnVjdCB1YXNfc3RyZWFtICpzdHJlYW0pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODc4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkwNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MDU6c3RhdGljIGludCB1YXNwX2FsbG9jX2NtZChzdHJ1Y3QgZl91YXMgKmZ1LCBpbnQgaSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MDYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTI2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjkyNzpzdGF0aWMgaW50IHVhc3BfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5NjQ6c3RhdGljIHZvaWQgdWFzcF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTY1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEwMTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTAxMzpzdGF0aWMgaW50IGdldF9jbWRfZGlyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNkYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDE0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEwNzYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTA3NzpzdGF0aWMgdm9pZCB1c2JnX2RhdGFfd3JpdGVfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTA3OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExMjM6c3RhdGljIGludCB1c2JnX3ByZXBhcmVfd19yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTI0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE1MTpzdGF0aWMgaW50IHVzYmdfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE2Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTYzOnN0YXRpYyBpbnQgdXNiZ19zZW5kX3dyaXRlX3JlcXVlc3Qoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE3NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTc1OnN0YXRpYyBpbnQgdXNiZ19zZW5kX3JlYWRfcmVzcG9uc2Uoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNzYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTg3OnN0YXRpYyB2b2lkIHVzYmdfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTg5OnN0YXRpYyB2b2lkIHVzYmdfc3VibWl0X3RtcihzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEyMDMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTIwNDpzdGF0aWMgdm9pZCB1c2JnX3N1Ym1pdF9jbWQoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMjUxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTI6c3RhdGljIHZvaWQgdXNiZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzQyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEzNDM6c3RhdGljIHN0cnVjdCB1c2JnX2NtZCAqdXNiZ19nZXRfY21kKHN0cnVjdCBmX3VhcyAqZnUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTM0NC1cXHRcXHRzdHJ1Y3QgdGNtX3VzYmdfbmV4dXMgKnR2X25leHVzLCB1MzIgc2NzaV90YWcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEzNjU6c3RhdGljIHZvaWQgdXNiZ19yZWxlYXNlX2NtZChzdHJ1Y3Qgc2VfY21kICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEzNjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NzpzdGF0aWMgaW50IHVzYmdfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTM2OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDY5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE0NzA6c3RhdGljIHZvaWQgYm90X2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDcxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTUxOTpzdGF0aWMgaW50IGJvdF9zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKmZ1LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MjAtXFx0XFx0dm9pZCAqY21kYnVmLCB1bnNpZ25lZCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNTcwOnN0YXRpYyBpbnQgdXNiZ19jaGVja190cnVlKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTcxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1NzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3NTpzdGF0aWMgY2hhciAqdXNiZ19nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU3Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTgzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE1ODQ6c3RhdGljIHUxNiB1c2JnX2dldF90YWcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1ODUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU5MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNTkxOnN0YXRpYyB2b2lkIHVzYmdfcmVsZWFzZV9jbWQoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1OTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYwMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjAyOnN0YXRpYyB2b2lkIHVzYmdfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTYwOTpzdGF0aWMgdm9pZCB1c2JnX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2MzE6c3RhdGljIGNvbnN0IGNoYXIgKnVzYmdfY2hlY2tfd3duKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjQ1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NDY6c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY0Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzUyOnN0YXRpYyBpbnQgdGNtX3VzYmdfZHJvcF9uZXh1cyhzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzU0OnN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzk5OnN0YXRpYyBzdHJ1Y3Qgc2Vfd3duICp1c2JnX21ha2VfdHBvcnQoXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgwMC1cXHRzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyAqdGYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4MjE6c3RhdGljIHZvaWQgdXNiZ19kcm9wX3Rwb3J0KHN0cnVjdCBzZV93d24gKnd3bilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MzAtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTgzMTpzdGF0aWMgc3NpemVfdCB1c2JnX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCAgY2hhciAqcGFnZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODMyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE4Mzg9c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnVzYmdfd3duX2F0dHJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODQyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDM6c3RhdGljIGludCB1c2JnX2F0dGFjaChzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTg0NDpzdGF0aWMgdm9pZCB1c2JnX2RldGFjaChzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODQ2OnN0YXRpYyBpbnQgdXNiZ19lbmFibGVfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODYyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NjM6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg4Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODgzOnN0YXRpYyBpbnQgdXNiZ19hbGxvY19zZXNzX2NiKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODg0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBzZV9zZXNzaW9uICpzZV9zZXNzLCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODkzOnN0YXRpYyBpbnQgdGNtX3VzYmdfbWFrZV9uZXh1cyhzdHJ1Y3QgdXNiZ190cGcgKnRwZywgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODk0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5MjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTkyOTpzdGF0aWMgaW50IHRjbV91c2JnX2Ryb3BfbmV4dXMoc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xOTY2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Njc6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xOTY4LVxcdFxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIwMDU9c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnVzYmdfYmFzZV9hdHRyc1tdID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAwOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDEwOnN0YXRpYyBpbnQgdXNiZ19wb3J0X2xpbmsoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnLCBzdHJ1Y3Qgc2VfbHVuICpsdW4pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMTk6c3RhdGljIHZvaWQgdXNiZ19wb3J0X3VubGluayhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyMC1cXHRcXHRzdHJ1Y3Qgc2VfbHVuICpzZV9sdW4pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMjg6c3RhdGljIGludCB1c2JnX2NoZWNrX3N0b3BfZnJlZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMzA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9zdHJpbmdzICp0Y21fc3RyaW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE0OnN0YXRpYyBpbnQgdGNtX2JpbmQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCBzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzkzOnN0YXRpYyB2b2lkIHRjbV9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQwMjpzdGF0aWMgdm9pZCB0Y21fZGVsYXllZF9zZXRfYWx0X2RvbmUoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQxMjpzdGF0aWMgYm9vbCB0Y21fZGVsYXllZF9zZXRfYWx0X2NhbmNlbGxlZChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQyMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNDI0OnN0YXRpYyBib29sIHRjbV9jb21wbGV0ZV9kZWxheWVkX3N0YXR1cyhzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MjUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNDY1OnN0YXRpYyBib29sIHRjbV9jYW5jZWxfZGVsYXllZF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDk2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTc6c3RhdGljIHZvaWQgdGNtX2NhbmNlbF9kZWxheWVkX3NldF9hbHRfc3luYyhzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0OTgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNTE0OnN0YXRpYyB2b2lkIHRjbV9kZWxheWVkX3NldF9hbHQoc3RydWN0IHdvcmtfc3RydWN0ICp3cSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1NDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU0NzpzdGF0aWMgaW50IHRjbV9nZXRfYWx0KHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsIHVuc2lnbmVkIGludGYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTYxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NjI6c3RhdGljIGludCB0Y21fc2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmLCB1bnNpZ25lZCBhbHQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU2My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1ODk6c3RhdGljIHZvaWQgdGNtX2Rpc2FibGUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU5NzpzdGF0aWMgaW50IHRjbV9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTgtXFx0XFx0Y29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYwODpzdGF0aWMgaW5saW5lIHN0cnVjdCBmX3RjbV9vcHRzICp0b19mX3RjbV9vcHRzKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYxNDpzdGF0aWMgdm9pZCB0Y21fYXR0cl9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRjbV9mdW5jX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzA6c3RhdGljIHZvaWQgdGNtX2ZyZWVfaW5zdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjQ4OnN0YXRpYyBpbnQgdGNtX3JlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NTk6c3RhdGljIHZvaWQgdGNtX3VucmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjYwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MDpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NzEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjgxOnN0YXRpYyB2b2lkIHVzYmdfZGV0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2ODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjkwOnN0YXRpYyBpbnQgdGNtX3NldF9uYW1lKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYsIGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY5MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDM6c3RhdGljIHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKnRjbV9hbGxvY19pbnN0KHZvaWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3Mzg6c3RhdGljIHZvaWQgdGNtX2ZyZWUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NDUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc0NjpzdGF0aWMgdm9pZCB0Y21fdW5iaW5kKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzQ3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc1NTpzdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbiAqdGNtX2FsbG9jKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmZpKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NTYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9Mjc5Mz1ERUNMQVJFX1VTQl9GVU5DVElPTih0Y20sIHRjbV9hbGxvY19pbnN0LCB0Y21fYWxsb2MpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc5NTpzdGF0aWMgaW50IF9faW5pdCB0Y21faW5pdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgwOC19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwOTptb2R1bGVfaW5pdCh0Y21faW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyODExOnN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxNjptb2R1bGVfZXhpdCh0Y21fZXhpdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MTcuMTU0MDI5MTA1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODU2MjM5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYCBzdHJ1Y3R1cmUgYXMgYGZhYnJpY19tYWtlX3RwZ2AgYW5kIGBmYWJyaWNfZHJvcF90cGdgLiBUaGlzIGltcGxpZXMgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGJ5IHRoZSB0YXJnZXQgY29yZSBDb25maWdGUyBjb2RlLCB3aGljaCBpcyBnb29kLiBGb3IgbXkgYW5hbHlzaXMsIEknbGwgcmVmZXIgdG8gdGhlbSBzaW1wbHkgYXMgYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AgZm9yIGVhc2Ugb2YgcmVmZXJlbmNlIOKAkyBGb2N1c1N5bWJvbHMsIGlmIHlvdSB3aWxsLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdlIGhhdmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gYFVTQl9DT05GSUdGU19GX1RDTWAgc2VlbXMgdG8gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBpcyB3aGF0IHdlIGV4cGVjdC4gYFRBUkdFVF9DT1JFYCBpbiB0dXJuIGlzIHNlbGVjdGluZyBgQ09ORklHRlNfRlNgLiBUaGlzIGxvb2tzLCBhdCBmaXJzdCBnbGFuY2UsIGxpa2UgYSBjb21wcmVoZW5zaXZlIHNldCBvZiBvcHRpb25zLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIGBVU0JfQ09ORklHRlNgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24ndCBnb2luZyB0byBjYXVzZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IHRoYXQgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA1OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyMi4yMzk2NTU5ODdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzYwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MjIuMjk0NDI1OTYzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ5NDg2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIC0gQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGludGVncmF0aW5nIGEgVVNCIEdhZGdldC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgbmF0dXJhbGx5LCB0aGF0IHdlJ2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3IgZnVuY3Rpb24gc2V0dXAsIGxldCdzIHRha2UgYSBiZWF0IGFuZCBxdWlja2x5IHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBjYW4ndCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3NpbmcgY29tcG9uZW50LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIGZvciBgVVNCX0dBREdFVGAgd2lsbCByZXZlYWwgYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzIHRoYXQgbmVlZCBjb25zaWRlcmF0aW9uLiBXZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCB0byBhbGxvdyB0aGUgbmV4dCBzdGFnZSBvZiBjb25maWcgdG8gaGFwcGVuIGFzIHNlYW1sZXNzbHkgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzY3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MjUuNDE5Mzc3NzI4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdCMgIC0gUGVyaXBoZXJhbHMgKGxpa2UgUERBcykgbmVlZCBDT05GSUdfVVNCX0dBREdFVCAod2l0aCBcXFwiQlxcXCIgamFja3MpLlxcbiAgMTE6XFx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxcbiAgMTI6XFx0I1xcbiAgMTM6XFx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXFxcIk1pbmktQUJcXFwiIGphY2ssIHN5c3RlbXMgd2l0aFxcbiAgMTQ6XFx0IyBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXIgY2FuIGFsc28gc3VwcG9ydCBcXFwiVVNCIE9uLXRoZS1Hb1xcXCIgKENPTkZJR19VU0JfT1RHKS5cXG4gIDE1OlxcdCNcXG4gIDE2OlxcdFxcbiAgMTc6XFx0bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IFVTQl9DT01NT05cXG4gIDIwOlxcdFxcdHNlbGVjdCBOTFNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgIFVTQiBpcyBhIGhvc3QvZGV2aWNlIHByb3RvY29sLCBvcmdhbml6ZWQgd2l0aCBvbmUgaG9zdCAoc3VjaCBhcyBhXFxuICAyMzpcXHRcXHQgICBQQykgY29udHJvbGxpbmcgdXAgdG8gMTI3IHBlcmlwaGVyYWwgZGV2aWNlcy5cXG4gIDI0OlxcdFxcdCAgIFRoZSBVU0IgaGFyZHdhcmUgaXMgYXN5bW1ldHJpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHNldCB1cDpcXG4gIDI1OlxcdFxcdCAgIHlvdSBjYW4ndCBjb25uZWN0IGEgXFxcInRvLXRoZS1ob3N0XFxcIiBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgICBMaW51eCBjYW4gcnVuIGluIHRoZSBob3N0LCBvciBpbiB0aGUgcGVyaXBoZXJhbC4gIEluIGJvdGggY2FzZXNcXG4gIDI4OlxcdFxcdCAgIHlvdSBuZWVkIGEgbG93IGxldmVsIGJ1cyBjb250cm9sbGVyIGRyaXZlciwgYW5kIHNvbWUgc29mdHdhcmVcXG4gIDI5OlxcdFxcdCAgIHRhbGtpbmcgdG8gaXQuICBQZXJpcGhlcmFsIGNvbnRyb2xsZXJzIGFyZSBvZnRlbiBkaXNjcmV0ZSBzaWxpY29uLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyNS40MTk0NjU4OTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzMTA2MTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBHYWRnZXQgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucy4gVGhlIGZpcnN0IHRoaW5nIEknbSBub3RpbmcgaXMgdGhhdCBgVVNCX0dBREdFVGAgaXRzZWxmIGlzIGRlcGVuZGVuY3ktZnJlZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IGRvZXNuJ3QgdGVsbCB0aGUgd2hvbGUgc3RvcnkuIFRoZSByZWxldmFudCBjb25maWdzIHRoZW4gYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gTm93LCB0byBhY3R1YWxseSAqdGVzdCogdGhlc2UgZ2FkZ2V0cyBlZmZlY3RpdmVseSwgSSBuZWVkIHRvIGNvbnNpZGVyIGhvc3QgY29udHJvbGxlcnMuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgZG8gSSBuZWVkIGBVU0JfRFVNTVlfSENEYCBmb3IgdGVzdGluZz8gR2l2ZW4gc3l6a2FsbGVyJ3MgdHlwaWNhbCBhcHByb2FjaCwgaXQgdXN1YWxseSB1dGlsaXplcyBgVVNCX0RVTU1ZX0hDRGAgb3IgcG90ZW50aWFsbHkgYFVTQl9SQVdfR0FER0VUYCBmb3IgdGhpcyBwdXJwb3NlLiBJIHNob3VsZCBjaGVjayB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgaXMgZGVmaW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlldyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyOS41NTA1MzMwMjlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzY1NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRFVNTVlfSENEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXFxcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyOS42MDg5MDY5NDVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1MTE2NDU5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFVEQyBLY29uZmlnKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFVTQiBEZXZpY2UgQ29udHJvbGxlciAoVURDKSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gTm93LCB3aGVyZSB3YXMgSSBsYXN0IGxvb2tpbmc/IEFoLCB5ZXMsIGxpbmUgNDI4IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgVURDIGRyaXZlcnMgYXJlIGJyb3VnaHQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIHJlbWluZCBteXNlbGYgb2YgdGhlIGRldGFpbHMgb2YgdGhlIFVEQyBzdWJzeXN0ZW0gS2NvbmZpZy4gSG9wZWZ1bGx5LCB0aGlzIHByb3ZpZGVzIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODozMi44NjAwNzQ3NTJaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuIDQ0MDpcXHRcXHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHQgIFNpbmNlIHN1Y2ggYSBnYWRnZXQgc2lkZSBkcml2ZXIgbmVlZHMgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBob3N0XFxuIDQ0MzpcXHRcXHQgIHNpZGUgTGludXgtVVNCIGRldmljZSBkcml2ZXIsIHRoaXMgbWF5IGhlbHAgdG8gZGVidWcgYm90aCBzaWRlc1xcbiA0NDQ6XFx0XFx0ICBvZiBhIFVTQiBwcm90b2NvbCBzdGFjay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MzIuODYwMTcxNjAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjc4ODI2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgVVNCIEdhZGdldCBUZXN0aW5nIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBjb25maWd1cmUgdGhpcyB0ZXN0IGVudmlyb25tZW50IGZvciBVU0IgZ2FkZ2V0cywgYW5kIFN5emthbGxlciBzZWVtcyBsaWtlIHRoZSBnby10byByZXNvdXJjZSBmb3IgYSBzb2xpZCBmb3VuZGF0aW9uLiBJIHJlY2FsbCBzZWVpbmcgdGhlbSBsZXZlcmFnZSBgVVNCX0RVTU1ZX0hDRGAgcXVpdGUgb2Z0ZW4gaW4gdGhlaXIgdGVzdHMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBzdHJvbmcgY29udGVuZGVyIGZvciBpbmNsdXNpb24gaW4gbXkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gaXRzIHByb3ZlbiB0cmFjayByZWNvcmQgaW4gdGhhdCBjb250ZXh0LiBCdXQgaG9sZCBvbiwgSSBzZWVtIHRvIHJlbWVtYmVyIHNlZWluZyBgVVNCX1JBV19HQURHRVRgIHVzZWQgYWxvbmdzaWRlIGl0LiBJdCdzIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFVTQl9SQVdfR0FER0VUYCBjb25maWd1cmF0aW9uLCBiZWNhdXNlIGlmIGl0J3MgYWxzbyBhIHN0YXBsZSBpbiBTeXprYWxsZXLigJlzIHRlc3RpbmcgbWV0aG9kb2xvZ3ksIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGhvdyBpdCBjb21wbGVtZW50cyBgVVNCX0RVTU1ZX0hDRGAuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIGl0cyBmdW5jdGlvbmFsaXRpZXMgaXMgbm93IHdhcnJhbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwMTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjM2Ljg4ODA1NzI3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU4NzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MzYuOTQ3NjUzOTI2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODkyOTExODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGdvIGRlZXAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIEkgcmVtZW1iZXIgdGhlcmUncyBzb21lIGludGVyZXN0aW5nIHN0dWZmIGFyb3VuZCB0aGUgbGVnYWN5IGdhZGdldCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gY2hlY2suIFJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA1MTYuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc3BlY2lmaWMgc2V0dGluZ3MgSSdtIGludGVyZXN0ZWQgaW4uIEknbSBhaW1pbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgb3B0aW9ucyBwcmVzZW50ZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mzk4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6NDQuNjM2OTQ4MDA1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTA6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDUxMTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNTEyOlxcdFxcbiA1MTM6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiA1MTQ6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ193ZWJjYW1cXFwiLlxcbiA1MTU6XFx0XFxuIDUxNjpcXHRjb25maWcgVVNCX1JBV19HQURHRVRcXG4gNTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG4gNTE4OlxcdFxcdGhlbHBcXG4gNTE5OlxcdFxcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxcbiA1MjA6XFx0XFx0ICBjb250cm9sIG92ZXIgdGhlIGdhZGdldCdzIGNvbW11bmljYXRpb24gcHJvY2Vzcy5cXG4gNTIxOlxcdFxcbiA1MjI6XFx0XFx0ICBMaWtlIGFueSBvdGhlciBnYWRnZXQgZHJpdmVyLCBSYXcgR2FkZ2V0IGltcGxlbWVudHMgVVNCIGRldmljZXMgdmlhXFxuIDUyMzpcXHRcXHQgIHRoZSBVU0IgZ2FkZ2V0IEFQSS4gVW5saWtlIG1vc3QgZ2FkZ2V0IGRyaXZlcnMsIFJhdyBHYWRnZXQgZG9lcyBub3RcXG4gNTI0OlxcdFxcdCAgaW1wbGVtZW50IGFueSBjb25jcmV0ZSBVU0IgZnVuY3Rpb25zIGl0c2VsZiBidXQgcmVxdWlyZXMgdXNlcnNwYWNlXFxuIDUyNTpcXHRcXHQgIHRvIGRvIHRoYXQuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vdXNiL3Jhdy1nYWRnZXQucnN0IGZvciBkZXRhaWxzLlxcbiA1Mjg6XFx0XFxuIDUyOTpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjQ0LjYzNzA0MDQ0NVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzgzMjA0NDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVENNIENvbmZpZ2ZzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIGBmX3RjbS5jYCwgd2hpY2ggaXMgYSBDb25maWdGUyBmdW5jdGlvbi4gTXkgbWFpbiBjb25jZXJuIGhlcmUgcmV2b2x2ZXMgYXJvdW5kIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgbmF0dXJhbGx5LiBJdCdzIGEgZ29vZCBpZGVhIHRvIGluY2x1ZGUgYFVTQl9EVU1NWV9IQ0RgIGFzIHdlbGwsIGp1c3QgaW4gY2FzZS4gTGV0J3Mgc3RhcnQgYnkgbGlzdGluZyB0aGUga2V5IGNvbmZpZ3M6XG5cbiogICBgVVNCX0dBREdFVGBcbiogICBgVVNCX0NPTkZJR0ZTYFxuKiAgIGBUQVJHRVRfQ09SRWBcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYFxuKiAgIGBVU0JfRFVNTVlfSENEYFxuXG5Ob3csIGxldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSXQgcmVsaWVzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBgVEFSR0VUX0NPUkVgIGRlcGVuZHMgb24gYEJMT0NLYCwgYW5kIGBVU0JfQ09ORklHRlNgIG5lZWRzIGBVU0JfR0FER0VUYC4gYFVTQl9EVU1NWV9IQ0RgIGhhcyBkZXBlbmRlbmNpZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLiBTbyB0aGUgZnVsbCBzZXQgb2YgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBjb25zaWRlciBhcmU6IGBVU0JgLCBgQkxPQ0tgLCBgVVNCX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYW5kIGBVU0JfRFVNTVlfSENEYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLCBhbmQgb25seSB0aG9zZSBmdW5jdGlvbnMuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIExldCdzIGNvbmZpcm0gaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMuIFllcywgdGhleSBhcmUuIEFuZCBhcmUgdGhleSBpbmxpbmVkPyBObywgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGB1c2JnX29wc2AuIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCB3aWxsIG5vdCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgY2FuZGlkYXRlcyBmb3IgZm9jdXMgc3ltYm9scy5cblxuSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIGNvZGUgbG9naWM7IHRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AuIFRoaXMgcmFjZSBpbnZvbHZlcyB0aGUgY2hlY2sgb2YgYG9wdHMtXHUwMDNlaGFzX2RlcGAgYW5kIHRoZSB1c2Ugb2YgYG9wdHMtXHUwMDNlZGVwZW5kZW50YC4gVGhlIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBieSBpbnRyb2R1Y2luZyBhIGxvY2FsIHZhcmlhYmxlIHRvIHJlYWQgYGhhc19kZXAgPSBvcHRzLVx1MDAzZWhhc19kZXA7YCBhbmQgdXNlcyB0aGF0IGNvcHkgaW5zdGVhZCBvZiB0aGUgdm9sYXRpbGUgdmFyaWFibGUuIEFkZGl0aW9uYWxseSwgaXQgcmVvcmRlcnMgdGhlIGBjb25maWdfaXRlbV9nZXRgIGFuZCBgbXV0ZXhfdW5sb2NrYCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGdlbnVpbmUgYnVnLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBmaXggaXMgc29saWQuXG5cblRvIHN1bW1hcml6ZSwgbXkgc3VnZ2VzdGVkIGNvbmZpZ3VyYXRpb25zIGFyZTpcblxuKiAgIGBVU0JfR0FER0VUYFxuKiAgIGBVU0JfQ09ORklHRlNgXG4qICAgYFRBUkdFVF9DT1JFYFxuKiAgIGBVU0JfQ09ORklHRlNfRl9UQ01gXG4qICAgYFVTQl9EVU1NWV9IQ0RgXG5cbkFuZCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTpcblxuKiAgIGB1c2JnX21ha2VfdHBnYFxuKiAgIGB1c2JnX2Ryb3BfdHBnYFxuXG5NeSBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCJcblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTYwLCJPdXRwdXRUb2tlbnMiOjE0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODo1OC40NjkwOTEwMjlaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTY1MjA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 14:02:56 +0000 UTC FinishedAt: 2026-08-03 14:09:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_DUMMY_HCD" ], "series_id": "07ad05d8-2f62-492d-bffe-16bd6f11caed" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usbg_make_tpg", "usbg_drop_tpg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmI3YTdiMTllODhlMjU3Nzc3MjNhZGQ5MmI5MWE5ZTFjMzI3ZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDowNToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5lNWZiYjhjYTA5ZDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5AQCAtMTY2MCw2ICYjNDM7MTY2MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3bixcbiBcdGludCByZXQ7XG4gXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcbiBcdHVuc2lnbmVkIGk7XG4mIzQzO1x0Ym9vbCBoYXNfZGVwO1xuIFxuIFx0aWYgKHN0cnN0cihuYW1lLCBcJiMzNDt0cGd0X1wmIzM0OykgIT0gbmFtZSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG5AQCAtMTY3NiwxOSAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXG4gXHRcdGZ1bmNfaW5zdCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KVxuLVx0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0XHRnb3RvIHVubG9ja19pbnN0O1xuJiM0MztcdH1cbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuJiM0MztcdGhhc19kZXAgPSBvcHRzLVx1MDAzZWhhc19kZXA7XG4mIzQzO1x0aWYgKGhhc19kZXApIHtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2tfaW5zdDtcbiYjNDM7XHRcdH1cbiBcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gXG4gXHR0cGcgPSBremFsbG9jX29iaihzdHJ1Y3QgdXNiZ190cGcpO1xuIFx0cmV0ID0gLUVOT01FTTtcbkBAIC0xNzA0LDMxICYjNDM7MTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHR0cGctXHUwMDNldHBvcnQgPSB0cG9ydDtcbiBcdHRwZy1cdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcbiBcbiYjNDM7XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZztcbiYjNDM7XHR0cGctXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcbiYjNDM7XG4mIzQzO1x0Y29uZmlnX2l0ZW1fZ2V0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoIWhhc19kZXApIHtcbiYjNDM7XHRcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxuJiM0MztcdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbiYjNDM7XHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRnb3RvIHB1dF9pdGVtO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKlxuIFx0ICogU1BDIGRvZXNuJiMzOTt0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxuIFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxuIFx0ICovXG4gXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFx1MDAyNnRwZy1cdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGdvdG8gZnJlZV93b3JrcXVldWU7XG4mIzQzO1x0XHRnb3RvIHVuZGVwZW5kX2l0ZW07XG4gXG4tXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZztcbi1cdHRwZy1cdTAwM2VmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0O1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4mIzQzO1x0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuIFx0cmV0dXJuIFx1MDAyNnRwZy1cdTAwM2VzZV90cGc7XG4gXG4tZnJlZV93b3JrcXVldWU6XG4mIzQzO3VuZGVwZW5kX2l0ZW06XG4mIzQzO1x0aWYgKCFoYXNfZGVwKVxuJiM0MztcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7cHV0X2l0ZW06XG4mIzQzO1x0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuIFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBmcmVlX3RwZzpcbiBcdGtmcmVlKHRwZyk7XG4gdW5yZWZfZGVwOlxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbiYjNDM7XHRpZiAoaGFzX2RlcClcbiBcdFx0bW9kdWxlX3B1dChvcHRzLVx1MDAzZWRlcGVuZGVudCk7XG4tXHRlbHNlXG4tXHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tdW5sb2NrX2RlcDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiB1bmxvY2tfaW5zdDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuIFxuQEAgLTE3NDMsNiAmIzQzOzE3NTcsNyBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiBcdFx0XHRcdHN0cnVjdCB1c2JnX3RwZywgc2VfdHBnKTtcbiBcdHVuc2lnbmVkIGk7XG4gXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcbiYjNDM7XHRib29sIGhhc19kZXA7XG4gXG4gXHR0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7XG4gXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XG5AQCAtMTc1MywxNiAmIzQzOzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4gXHRcdGlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpXG4gXHRcdFx0YnJlYWs7XG4gXHRpZiAoaSBcdTAwM2MgVFBHX0lOU1RBTkNFUykge1xuLVx0XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XG4gXHRcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsXG4gXHRcdFx0c3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tXHRcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApXG4mIzQzO1x0XHRoYXNfZGVwID0gb3B0cy1cdTAwM2VoYXNfZGVwO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZ19pdGVtX2dldChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdGlmIChoYXNfZGVwKVxuIFx0XHRcdG1vZHVsZV9wdXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpO1xuIFx0XHRlbHNlXG4gXHRcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcbiBcdFx0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdFx0a2ZyZWUodHBnKTtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYmdfbWFrZV90cGcmIzM0OywKICAgICYjMzQ7dXNiZ19kcm9wX3RwZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJiN2E3YjE5ZTg4ZTI1Nzc3NzIzYWRkOTJiOTFhOWUxYzMyN2VlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTQ6MDU6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCmluZGV4IGIzZmE1YTE3ZmQyZGIuLmU1ZmJiOGNhMDlkNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jCkBAIC0xNjYwLDYgJiM0MzsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCWludCByZXQ7CiAJc3RydWN0IGZfdGNtX29wdHMgKm9wdHM7CiAJdW5zaWduZWQgaTsKJiM0MzsJYm9vbCBoYXNfZGVwOwogCiAJaWYgKHN0cnN0cihuYW1lLCAmIzM0O3RwZ3RfJiMzNDspICE9IG5hbWUpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwpAQCAtMTY3NiwxOSAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCW9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLAogCQlmdW5jX2luc3QpOwogCW11dGV4X2xvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7Ci0JaWYgKCFvcHRzLSZndDtyZWFkeSkKLQkJZ290byB1bmxvY2tfZGVwOwomIzQzOwlpZiAoIW9wdHMtJmd0O3JlYWR5KSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CQlnb3RvIHVubG9ja19pbnN0OwomIzQzOwl9CiAKLQlpZiAob3B0cy0mZ3Q7aGFzX2RlcCkgewotCQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpCi0JCQlnb3RvIHVubG9ja19kZXA7Ci0JfSBlbHNlIHsKLQkJcmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCi0JCQl3d24tJmd0O3d3bl9ncm91cC5jZ19zdWJzeXMsCi0JCQkmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gdW5sb2NrX2RlcDsKJiM0MzsJaGFzX2RlcCA9IG9wdHMtJmd0O2hhc19kZXA7CiYjNDM7CWlmIChoYXNfZGVwKSB7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CQkJZ290byB1bmxvY2tfaW5zdDsKJiM0MzsJCX0KIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKIAogCXRwZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB1c2JnX3RwZyk7CiAJcmV0ID0gLUVOT01FTTsKQEAgLTE3MDQsMzEgJiM0MzsxNzA1LDQ0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3biwKIAl0cGctJmd0O3Rwb3J0ID0gdHBvcnQ7CiAJdHBnLSZndDt0cG9ydF90cGd0ID0gdHBndDsKIAomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IHRwZzsKJiM0MzsJdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwomIzQzOwomIzQzOwljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3RwZ19pbnN0YW5jZXNfbG9jayk7CiYjNDM7CiYjNDM7CWlmICghaGFzX2RlcCkgewomIzQzOwkJcmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCiYjNDM7CQkJd3duLSZndDt3d25fZ3JvdXAuY2dfc3Vic3lzLAomIzQzOwkJCSZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlnb3RvIHB1dF9pdGVtOwomIzQzOwl9CiYjNDM7CiAJLyoKIAkgKiBTUEMgZG9lc24mIzM5O3QgYXNzaWduIGEgcHJvdG9jb2wgaWRlbnRpZmllciBmb3IgVVNCLVNDU0ksIHNvIHdlCiAJICogcHJldGVuZCB0byBiZSBTQVMuLgogCSAqLwogCXJldCA9IGNvcmVfdHBnX3JlZ2lzdGVyKHd3biwgJmFtcDt0cGctJmd0O3NlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpOwogCWlmIChyZXQgJmx0OyAwKQotCQlnb3RvIGZyZWVfd29ya3F1ZXVlOwomIzQzOwkJZ290byB1bmRlcGVuZF9pdGVtOwogCi0JdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7Ci0JdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwotCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKLQltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwljb25maWdfaXRlbV9wdXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiAJcmV0dXJuICZhbXA7dHBnLSZndDtzZV90cGc7CiAKLWZyZWVfd29ya3F1ZXVlOgomIzQzO3VuZGVwZW5kX2l0ZW06CiYjNDM7CWlmICghaGFzX2RlcCkKJiM0MzsJCWNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7cHV0X2l0ZW06CiYjNDM7CWNvbmZpZ19pdGVtX3B1dCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKIAlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiBmcmVlX3RwZzoKIAlrZnJlZSh0cGcpOwogdW5yZWZfZGVwOgotCWlmIChvcHRzLSZndDtoYXNfZGVwKQomIzQzOwlpZiAoaGFzX2RlcCkKIAkJbW9kdWxlX3B1dChvcHRzLSZndDtkZXBlbmRlbnQpOwotCWVsc2UKLQkJY29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKLXVubG9ja19kZXA6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwogdW5sb2NrX2luc3Q6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKIApAQCAtMTc0Myw2ICYjNDM7MTc1Nyw3IEBAIHN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKQogCQkJCXN0cnVjdCB1c2JnX3RwZywgc2VfdHBnKTsKIAl1bnNpZ25lZCBpOwogCXN0cnVjdCBmX3RjbV9vcHRzICpvcHRzOwomIzQzOwlib29sIGhhc19kZXA7CiAKIAl0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7CiAJY29yZV90cGdfZGVyZWdpc3RlcihzZV90cGcpOwpAQCAtMTc1MywxNiAmIzQzOzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpCiAJCWlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpCiAJCQlicmVhazsKIAlpZiAoaSAmbHQ7IFRQR19JTlNUQU5DRVMpIHsKLQkJdHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMOwogCQlvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LAogCQkJc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7CiAJCW11dGV4X2xvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7Ci0JCWlmIChvcHRzLSZndDtoYXNfZGVwKQomIzQzOwkJaGFzX2RlcCA9IG9wdHMtJmd0O2hhc19kZXA7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtkZXBfbG9jayk7CiYjNDM7CiYjNDM7CQljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwomIzQzOwkJaWYgKGhhc19kZXApCiAJCQltb2R1bGVfcHV0KG9wdHMtJmd0O2RlcGVuZGVudCk7CiAJCWVsc2UKIAkJCWNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoCiAJCQkJJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7Ci0JCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKJiM0MzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwkJdHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsKJiM0MzsJCWNvbmZpZ19pdGVtX3B1dCgmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKJiM0MzsJCWtmcmVlKHRwZyk7CiYjNDM7CQlyZXR1cm47CiAJfQogCW11dGV4X3VubG9jaygmYW1wO3RwZ19pbnN0YW5jZXNfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBDb3JlIE1vZHVsZSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaGl0cyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgLiBNeSBzcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmc7IHdlIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgbmVjZXNzaXRhdGVzIGZ1enppbmcuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIHRvdWNoaW5nIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBBaCwgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uISBSaWdodCwgdGhhdCYjMzk7cyBhY2Nlc3NlZCB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIHdhcnJhbnRlZC4KClRoZSBwbGFuIGlzIHNpbXBsZS4gTGV0JiMzOTtzIGlzb2xhdGUgdGhvc2UgZnVuY3Rpb25zLCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCwgYXMgb3VyIGZ1enppbmcgdGFyZ2V0cy4gTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgYW55IHJlcXVpcmVkIGBDT05GSUdgIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGtub2JzIG5lZWQgdG8gYmUgdHVybmVkLiBUaGlzIHNob3VsZG4mIzM5O3QgYmUgdG9vIHRyaWNreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlVTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFVTQl9DT05GSUdGU19GX1RDTWAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudHMgZm9yIHRoaXMgYFVTQl9DT05GSUdGU19GX1RDTWAgZmVhdHVyZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGxpa2VseSBrZXJuZWwgZGVmY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBvdGhlcnMsIHRvIHRyYWNlIGJhY2sgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIHRvIGV2ZW4gKmJlKiBzZWxlY3RhYmxlIG9yIGZ1bmN0aW9uYWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwcmVyZXF1aXNpdGUgc3ltYm9scywgb3RoZXIgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24sIGFuZCBhbnkgYnVpbGQgZmxhZ3Mgb3IgdG9vbGNoYWluIHJlcXVpcmVtZW50cyBpdCBtYXkgaGF2ZS4gVGhpcyBpcyBnb2luZyB0byBiZSBhIG1hdHRlciBvZiBjYXJlZnVsIGNyb3NzLXJlZmVyZW5jaW5nIGFuZCBkaWdnaW5nIGludG8gdGhlIGJ1aWxkIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gdGhlIHRhc2sgYXQgaGFuZCwgSSB0aGluayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBnb2luZyB0byBiZSBmb3VuZCBpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNDk1LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBhIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiwgYW5kIHRoaXMgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG9wdGlvbnMuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGlzIHNlY3Rpb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGFuZCBob3cgdGhlc2Ugc2V0dGluZ3Mgd29yayB3aXRoaW4gdGhlIG92ZXJhbGwgVVNCIGdhZGdldCBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb24gc3dpdGNoZXMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZGV0YWlsZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg1Olx0XHRoZWxwXG4gNDg2Olx0XHQgIFRoZSBQcmludGVyIGZ1bmN0aW9uIGNoYW5uZWxzIGRhdGEgYmV0d2VlbiB0aGUgVVNCIGhvc3QgYW5kIGFcbiA0ODc6XHRcdCAgdXNlcnNwYWNlIHByb2dyYW0gZHJpdmluZyB0aGUgcHJpbnQgZW5naW5lLiBUaGUgdXNlciBzcGFjZVxuIDQ4ODpcdFx0ICBwcm9ncmFtIHJlYWRzIGFuZCB3cml0ZXMgdGhlIGRldmljZSBmaWxlIC9kZXYvZ19wcmludGVyXHUwMDNjWFx1MDAzZSB0b1xuIDQ4OTpcdFx0ICByZWNlaXZlIG9yIHNlbmQgcHJpbnRlciBkYXRhLiBJdCBjYW4gdXNlIGlvY3RsIGNhbGxzIHRvXG4gNDkwOlx0XHQgIHRoZSBkZXZpY2UgZmlsZSB0byBnZXQgb3Igc2V0IHByaW50ZXIgc3RhdHVzLlxuIDQ5MTpcdFxuIDQ5MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9wcmludGVyLnJzdFxuIDQ5MzpcdFx0ICB3aGljaCBpbmNsdWRlcyBzYW1wbGUgY29kZSBmb3IgYWNjZXNzaW5nIHRoZSBkZXZpY2UgZmlsZS5cbiA0OTQ6XHRcbiA0OTU6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG4gNDk2Olx0XHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuIDQ5NzpcdFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuIDQ5ODpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0OTk6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNTAwOlx0XHRzZWxlY3QgVVNCX0ZfVENNXG4gNTAxOlx0XHRoZWxwXG4gNTAyOlx0XHQgIFRoaXMgZmFicmljIGlzIGEgVVNCIGdhZGdldCBjb21wb25lbnQuIFR3byBVU0IgcHJvdG9jb2xzIGFyZVxuIDUwMzpcdFx0ICBzdXBwb3J0ZWQgdGhhdCBpcyBCQkIgb3IgQk9UIChCdWxrIE9ubHkgVHJhbnNwb3J0KSBhbmQgVUFTXG4gNTA0Olx0XHQgIChVU0IgQXR0YWNoZWQgU0NTSSkuIEJPVCBpcyBhZHZlcnRpc2VkIG9uIGFsdGVybmF0aXZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZWJ1Z2dpbmcgVVNCIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCwgdGhpcyB3aG9sZSB0aGluZywgaGluZ2VzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgaXMgc2V0LiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGlzLiBBbmQgSSYjMzk7bSBhbHNvIHRoaW5raW5nIHRoYXQgYFVTQl9GX1RDTWAgc2hvdWxkIGJlIHNlbGVjdGVkIHRvby4gR2l2ZW4gdGhhdCBJIG5lZWQgdG8gY2hlY2sgYFVTQl9GX1RDTWAsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGxvY2F0ZSBgVVNCX0ZfVENNYC4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL0tjb25maWdgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGF0IHBhdGgsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdHlwaWNhbGx5IGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzQ1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBmb3IgVVNCIEdhZGdldCBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIGtleSBmbGFnIEkgbmVlZCB0byBlbmFibGUgaGVyZS4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBmb2N1cy4gQnV0LCBJIGtub3cgdGhlcmUmIzM5O3MgYSBkZXBlbmRlbmN5IGNoYWluLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBgVEFSR0VUX0NPUkVgIGFuZCBgVVNCX0NPTkZJR0ZTYCB3aWxsIGFsc28gaGF2ZSB0byBiZSBzZXQuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGUgcmFiYml0IGhvbGUgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBUQVJHRVRfQ09SRWAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvYnZpb3VzIGNvbmZsaWN0cy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNldHRpbmdzIHNvIGV2ZXJ5dGhpbmcgY29tcGlsZXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIERlcGVuZGVuY3kgV2ViKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiBgVEFSR0VUX0NPUkVgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIHRoZSBkZXBlbmRlbmN5LCB3aGF0IG90aGVyIHZhcmlhYmxlcyBtYXkgaW1wYWN0IGl0PyYjMzQ7LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbXBvbmVudCwgb2Z0ZW4gYSBzb3VyY2Ugb2YgaGVhZGFjaGVzIGlmIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIHNlZSB3aGVyZSBgVVNCX0NPTkZJR0ZTYCBmaXRzIGludG8gdGhlIHBpY3R1cmUuIEl0JiMzOTtzIGEga2V5IHBpZWNlIGluIG1hbnkgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucywgYW5kIGEgY29tbW9uIGludGVncmF0aW9uIHBvaW50LiBMZXQgbWUgY2hlY2sgaXRzIHNldHRpbmdzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgYWRkcmVzc2luZy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoaXMgb3V0LCBjb25zaWRlciBhbnkgcG9zc2libGUgY29uZmxpY3RzLCBhbmQgdGhlbiBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzI1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBUYXJnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBVU0IgZ2FkZ2V0IHRhcmdldCBjb25maWd1cmF0aW9uIGNvZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHdlIG5lZWQgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBlbmFibGVkIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhpcyBmYWJyaWMuCgpGaXJzdCwgbGV0IG1lIGNvbmZpcm0gc29tZXRoaW5nIGJhc2ljOiBBcmUgdGhlc2UgZnVuY3Rpb25zIGRlY2xhcmVkIHN0YXRpY2FsbHk/IExldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2jigKYgWXVwLCB0aGV5IGFyZTogYHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKC4uLilgIGFuZCBgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyguLi4pYC4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIFN0YXRpYyBmdW5jdGlvbnMgdHlwaWNhbGx5IGhhdmUgbGltaXRlZCBzY29wZS4gSG93ZXZlciwgdGhleSBhcmUgbGlrZWx5IGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0JiMzOTtzIGhvdyB0aGV5JiMzOTtyZSBnZXR0aW5nIGNhbGxlZCwgSSYjMzk7bSBiZXR0aW5nLCBwcm9iYWJseSBpbiBgZmFicmljX29wc2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnRzIGFuZCBzZWUgaG93IHRoaXMgdGFyZ2V0IGdyb3VwIHBvcnRhbCBzZXR1cCBpcyBhY3R1YWxseSBiZWluZyBtYW5hZ2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JnX21ha2VfdHBnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY0Nj1zdGF0aWMgaW50IHVzYmdfaW5pdF9ub2RlYWNsKHN0cnVjdCBzZV9ub2RlX2FjbCAqc2VfbmFjbCwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY1MzpzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjU0LVx0XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA0OS1cdC5mYWJyaWNfZHJvcF93d25cdFx0PSB1c2JnX2Ryb3BfdHBvcnQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDUwOlx0LmZhYnJpY19tYWtlX3RwZ1x0XHQ9IHVzYmdfbWFrZV90cGcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDUxLVx0LmZhYnJpY19lbmFibGVfdHBnXHRcdD0gdXNiZ19lbmFibGVfdHBnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCB0aGV5IGFyZSBkZWZpbml0ZWx5IGFzc2lnbmVkIHRvIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYC4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXkgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIHVuaXF1ZSBhZGRyZXNzZXMuIEJ1dCBoYW5nIG9uLCB0aGV5JiMzOTtyZSBiZWluZyBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyEgVGhhdCBjb21wbGV0ZWx5IHJ1bGVzIG91dCBpbmxpbmluZzsgdGhleSAqaGF2ZSogdG8gaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKTm93LCBsZXQmIzM5O3MgcmV2aXNpdCB0aGUgcHJvbXB0LiBJdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSYjMzk7bSByZWFzb25hYmx5IGNvbmZpZGVudCB0aGVzZSBmdW5jdGlvbnMsIGJ5IHZpcnR1ZSBvZiB0aGVpciBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQsIGFyZSBub3QgaW5saW5lZC4gQnV0LCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYW5kIGNvbXByZWhlbnNpdmUsIEkgY291bGQgaW5jbHVkZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgYXMgd2VsbCwgdG8gYmUgcGVyZmVjdGx5IHNhZmUuCgpXYWl0LCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGNvbmZpZ2ZzIG9wZXJhdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBmYWJyaWMuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuCgpBbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIHV0aWxpemUuIExldCYjMzk7cyBzZWUuLi4gQWgsIGB1c2JnX29wc2AgaXMgcmVnaXN0ZXJlZCBzb21ld2hlcmUuIEdvb2QuIExldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiZ19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMDI4PXN0YXRpYyBpbnQgdXNiZ19jaGVja19zdG9wX2ZyZWUoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDMzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyB1c2JnX29wcyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzQtXHQubW9kdWxlXHRcdFx0XHQ9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI3OTU9c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwMzpcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcdTAwMjZ1c2JnX29wcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yODExPXN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxMi17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyODEzOlx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXHUwMDI2dXNiZ19vcHMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNC1cdHVzYl9mdW5jdGlvbl91bnJlZ2lzdGVyKFx1MDAyNnRjbXVzYl9mdW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBDb25maWdGUyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCDigJMgdGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgcmlnaHQ/IFRoZXkgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHllcywgZGVmaW5pdGVseSByZWFjaGFibGUsIENvbmZpZ0ZTIGlzIHRoZSBwYXRod2F5IHRvIGdldCB0aGVyZS4gVGhlIGJpZyBxdWVzdGlvbiBpcywgYXJlIHRoZXkgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZz8gQWJzb2x1dGVseSEgVGhlIGlzc3VlIGFkZHJlc3NlZCBpcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgc28gaXQmIzM5O3MgcmlwZSBmb3IgZXhwbG9pdGF0aW9uLgoKQmVmb3JlIEkgZGl2ZSBpbiwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgbGluZWQgdXAgY29ycmVjdGx5LiBBbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgbWlnaHQgYmUgbWlzc2luZz8gVGltZSB0byBpbnZlc3RpZ2F0ZSB0aGUgYFVTQl9DT05GSUdGU2AgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc1MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2AgZGlyZWN0b3J5IGJlZm9yZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBiZSBmb3IgdGhhdC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMjI4IChvciB0aGVyZWFib3V0cykgb2YgdGhhdCBmaWxlLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBnYWRnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IGdyb3VwaW5nIG9mIHRoZW0uIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHZhcmlvdXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdGNvbmZpZyBVU0JfRl9QUklOVEVSXG4gMjIxOlx0XHR0cmlzdGF0ZVxuIDIyMjpcdFxuIDIyMzpcdGNvbmZpZyBVU0JfRl9UQ01cbiAyMjQ6XHRcdHRyaXN0YXRlXG4gMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBGUyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBVU0JfQ09ORklHRlNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyByZWxhdGl2ZWx5IHNlbGYtY29udGFpbmVkLCB3aXRoIHBlcmhhcHMgb25seSBhIGRlcGVuZGVuY3kgb24gYFVTQl9HQURHRVRgLCBhbmQgdGhhdCYjMzk7cyBsaWtlbHkgdGhlIG9ubHkgdGhpbmcgaG9sZGluZyBpdCBiYWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgY2xlYXJseS4KCk5vdywgdGhvdWdoLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGF0IGBUQVJHRVRfQ09SRWAgbWlnaHQgaGF2ZSB0byBzYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBDT05GSUdGU2AgaGFzIGFueSB1bmV4cGVjdGVkIHJlbGF0aW9uc2hpcCB0byBpdC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBjb25uZWN0aW9ucz8gVGltZSB0byBkaWcgaW50byB0aGUgZGVlcGVyIGNvbmZpZ3VyYXRpb24gYXNwZWN0cyBvZiB0aGlzIGdhZGdldCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc4MQoJCQkJCQkJb3V0cHV0OiA3MgoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9ucyBvZiBUQVJHRVRfQ09SRSoqCgpPa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGRlZmluaXRlbHkgZGVwZW5kZW50IG9uIGBCTE9DS2AuIFRoYXQgbWVhbnMgdGhlIGNvbmZpZ3VyYXRpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AuIEhtbSwgYSBxdWljayBsb29rIGFuZCBpdCBzZWVtcyBgdXNiZ19tYWtlX3RwZ2AgaXMgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgcm9hZGJsb2NrIOKAkyBhcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhIHRoYXQgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jYCB0byBzZWUgd2hhdCBvdGhlciBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTM2PXN0YXRpYyBzdHJ1Y3QgdHBnX2luc3RhbmNlIHRwZ19pbnN0YW5jZXNbVFBHX0lOU1RBTkNFU107XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjM4OnN0YXRpYyBERUZJTkVfTVVURVgodHBnX2luc3RhbmNlc19sb2NrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI2NQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIENvZGUgZm9yIEdsb2JhbCBTeW1ib2wgVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCByZWdhcmRpbmcgc3ltYm9scy4gVGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGRldmVsb3BlciwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gbG9vayBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGF0IG1hY3JvIGlzIGEgY2xhc3NpYyBpbmRpY2F0b3Igb2YgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LCBhIGNvbW1vbiBwYXR0ZXJuIGluIGtlcm5lbCBtb2R1bGVzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zIGRldmVsb3BtZW50IHdoZXJlIHlvdSBuZWVkIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBzeXN0ZW0uIElmIEkgY2FuIGZpbmQgdGhlIHVzZXMgb2YgdGhhdCBtYWNybywgSSYjMzk7bGwgcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBpbnRlbnRpb25hbGx5IGJlaW5nIGV4cG9zZWQuCgpGYWlsaW5nIGEgZGlyZWN0IGhpdCB3aXRoIGBFWFBPUlRfU1lNQk9MYCwgSSYjMzk7bGwgYnJvYWRlbiB0aGUgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBnbG9iYWxseSB2aXNpYmxlIGZ1bmN0aW9ucywgbWF5YmUgdXNpbmcgYSBtb3JlIGdlbmVyYWwgc2VhcmNoIGZvciBnbG9iYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBsaW5rZXIgZmlsZXMgb3Igb3RoZXIgcHJvamVjdCBidWlsZCBtZXRhZGF0YSBpZiB0aGUgaW5pdGlhbCBzZWFyY2ggaXMgdW5zdWNjZXNzZnVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgcHJvamVjdCBpcyBleHBsaWNpdGx5IGNvbnRyb2xsaW5nIHZpc2liaWxpdHkgb3IsIHBlcmhhcHMsIHJlbHlpbmcgb24gZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgYnVpbGQgc3lzdGVtLiBEZXRlcm1pbmluZyB0aGUgbWV0aG9kIGZvciB0aGlzIGNhbiBiZSBjcnVjaWFsIGluIGEgbG90IG9mIHNpdHVhdGlvbnMuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlICYjMzk7cHVibGljIEFQSSYjMzk7IG9mIHRoaXMgY29kZSwgb3IgYXQgbGVhc3QgdGhlIHBhcnRzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2libGUgYnkgb3RoZXIgY29tcG9uZW50cy4gRmluZGluZyBgRVhQT1JUX1NZTUJPTGAgaXMganVzdCB0aGUgZmFzdCB0cmFjazsgSSYjMzk7bSBwcmVwYXJlZCB0byBkaWcgYSBiaXQgZGVlcGVyIGlmIEkgbmVlZCB0by4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NjkKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBDb2RlIGZvciBWb2lkIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCkFscmlnaHQsIG15IGludGVybmFsIGNvbXBpbGVyIGlzIGtpY2tpbmcgaW4uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBhIHZlcnkgc3BlY2lmaWMgdHlwZSBvZiBmdW5jdGlvbiBkZWZpbml0aW9uIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gSSYjMzk7bSB0aGlua2luZyBvZiB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBoZXJlLCBzb21ldGhpbmcgdGhhdCYjMzk7cyBib3RoIGVmZmljaWVudCBhbmQgcHJlY2lzZS4KCkkgd2FudCBhIHBhdHRlcm4gdGhhdCB3aWxsIGxldCBtZSBmaWx0ZXIgcXVpY2tseS4gVGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGB2b2lkYCBrZXl3b3JkIGl0c2VsZiAtIHRoYXQmIzM5O3Mgbm9uLW5lZ290aWFibGUsIGl0JiMzOTtzIHRoZSBzaWduYXR1cmUgSSYjMzk7bSBzZWFyY2hpbmcgZm9yLiBGb2xsb3dpbmcgdGhhdCwgSSBrbm93IEkgbmVlZCB0byBzcGVjaWZ5IHdoYXQgY29tZXMgYWZ0ZXIgdGhlIGB2b2lkYCwgd2hpY2ggaXMgdGhlIGZ1bmN0aW9uIG5hbWUuIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSB0eXBpY2FsIEMvQyYjNDM7JiM0MzsgaWRlbnRpZmllciBydWxlcywgYW5kIGV4cGVjdCB0aGUgZnVuY3Rpb24gbmFtZSB0byBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUsIGFuZCB0aGVuIGFsbG93IGxldHRlcnMsIG51bWJlcnMsIG9yIHVuZGVyc2NvcmVzIHRvIGZvbGxvdy4gVGhlIGVhc2llc3Qgd2F5IHRvIGRlc2NyaWJlIHRoYXQgaXMgd2l0aCBgW2EtekEtWl9dW2EtekEtWjAtOV9dKmAuIEZpbmFsbHksIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lLCBJIG5lZWQgdG8gbG9vayBmb3IgYW4gb3BlbmluZyBwYXJlbnRoZXNpcywgYChgLiBUaGF0JiMzOTtzIHRoZSBlbmQgb2YgdGhlIGRlY2xhcmF0aW9uLCBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZi4KClNvLCB0aGUgcGF0dGVybiBJJiMzOTttIGNvbnN0cnVjdGluZyBpcyBgXnZvaWQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlwoYCwgd2hlcmUgYF5gIGF0IHRoZSBiZWdpbm5pbmcgbWVhbnMgJiMzNDtzdGFydCBvZiBsaW5lJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSB2ZXJ5IGNsZWFuIGFuZCB0YXJnZXRlZCB3YXkgdG8gZmluZCB0aG9zZSBgdm9pZGAgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipSZWdleCBQYXR0ZXJuIEFuYWx5c2lzKioKCkFscmlnaHQsIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzcyBzdGFydHMgd2l0aCBhIHNwZWNpZmljIHJlZ2V4IHBhdHRlcm46IGBeW2Etel0uKlwoYC4gIEkgc2VlIGl0IGltbWVkaWF0ZWx5LiBNeSBtaW5kJiMzOTtzIHdvcmtpbmcgdGhyb3VnaCBpdC4gSSByZWNvZ25pemUgdGhlIGNvbW1vbiBjaGFyYWN0ZXJzIHVzZWQgaGVyZSBhcyB3ZWxsLiBJJiMzOTttIHVzaW5nIHJlZ2V4IHRvIGV4YW1pbmUgYSBzdHJpbmcgb3IgYSBzZXQgb2Ygc3RyaW5ncywgYW5kIG15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgKmZvciouCgpgXmAgVGhpcyBpcyBhbiBhbmNob3IuIEl0IG1lYW5zICYjMzQ7YmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuJiMzNDsgIE9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGZvciBwYXR0ZXJucyBhdCB0aGUgdmVyeSBzdGFydCBvZiB0aGUgdGFyZ2V0IHRleHQuCgpgW2Etel1gIFRoYXQmIzM5O3MgYSBjaGFyYWN0ZXIgY2xhc3MuIENsZWFybHksIHdlJiMzOTtyZSBsb29raW5nIGZvciBhIGxvd2VyY2FzZSBsZXR0ZXIuIFRoZSBgYS16YCBpcyBhIHN0YW5kYXJkIHJhbmdlLgoKYC4qYCAgVGhpcyBpcyB0aGUgaGVhcnQgb2YgaXQuIFRoZSBgLmAgaXMgYW55IGNoYXJhY3RlciAoZXhjZXB0IG5ld2xpbmUsIGRlcGVuZGluZyBvbiB0aGUgcmVnZXggZW5naW5lLCBidXQgSSYjMzk7bGwgYXNzdW1lIHN0YW5kYXJkIGJlaGF2aW9yIGZvciBub3cpLiBUaGUgYCpgIGlzIGEgcXVhbnRpZmllci4gWmVybyBvciBtb3JlIHRpbWVzLiBTbyB0aGlzIG1lYW5zICYjMzQ7bWF0Y2ggYW55IHNlcXVlbmNlIG9mIGFueSBjaGFyYWN0ZXIsIHplcm8gb3IgbW9yZSB0aW1lcy4mIzM0OyBUaGlzIGlzIHVzdWFsbHkgdXNlZCB0byBzZWFyY2ggZm9yIGFueXRoaW5nIGFmdGVyIHRoZSBpbml0aWFsIGNoYXJhY3Rlci4KCmBcKGAgIEFuZCBmaW5hbGx5LCBhIGxpdGVyYWwgb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhlIGJhY2tzbGFzaCBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc2NhcGVzIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgdGhlIHBhcmVudGhlc2lzLCBzbyB3ZSYjMzk7cmUgYWN0dWFsbHkgbG9va2luZyBmb3IgdGhlIGxpdGVyYWwgY2hhcmFjdGVyLgoKU28sIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCBJIGFtIGVzc2VudGlhbGx5IGxvb2tpbmcgZm9yIGxpbmVzIG9yIHN0cmluZ3MgdGhhdCAqYmVnaW4qIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyLCBmb2xsb3dlZCBieSBhbnkgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycywgYW5kICplbmRpbmcqIHdpdGggYW4gb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgc2VhcmNoLiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSBzb21ldGhpbmcgc3BlY2lmaWMuCgpNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHRob3VnaHQgd291bGQgYmUgd2hhdCBJJiMzOTttIHVzaW5nIGl0IGZvci4gQW0gSSBwYXJzaW5nIGNvZGU/IExvb2tpbmcgZm9yIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBvciBtZXRob2QgY2FsbHM/IEFtIEkgc2VhcmNoaW5nIHRocm91Z2ggYSB0ZXh0IGZpbGUgZm9yIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcz8gVGhlIGNvbnRleHQgaXMgd2hhdCBnaXZlcyB0aGlzIHJlZ2V4IHRydWUgbWVhbmluZy4gQnV0IHRoZSBwYXR0ZXJuIGl0c2VsZj8gSXQmIzM5O3MgcHJldHR5IGNsZWFyIGFuZCBjb25jaXNlLCBldmVuIHdpdGhvdXQgYW55IGZ1cnRoZXIgY29udGV4dHVhbCBjbHVlcy4gTm93LCBJIG5lZWQgdG8ga25vdyB0aGUgKndoeSogb2YgdGhlIHF1ZXJ5IHRvIGFjdHVhbGx5IGludGVycHJldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpdLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0zNj1zdGF0aWMgc3RydWN0IHRwZ19pbnN0YW5jZSB0cGdfaW5zdGFuY2VzW1RQR19JTlNUQU5DRVNdO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozODpzdGF0aWMgREVGSU5FX01VVEVYKHRwZ19pbnN0YW5jZXNfbG9jayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGZfdWFzICp0b19mX3VhcyhzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDc6c3RhdGljIGludCBib3RfZW5xdWV1ZV9jbWRfY2J3KHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2MDpzdGF0aWMgdm9pZCBib3Rfc3RhdHVzX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc2OnN0YXRpYyB2b2lkIGJvdF9lbnF1ZXVlX3NlbnNlX2NvZGUoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MTpzdGF0aWMgdm9pZCBib3RfZXJyX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTQ6c3RhdGljIHZvaWQgYm90X3NlbmRfYmFkX3N0YXR1cyhzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTQ3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTQ4OnN0YXRpYyBpbnQgYm90X3NlbmRfc3RhdHVzKHN0cnVjdCB1c2JnX2NtZCAqY21kLCBib29sIG1vdmVkX2RhdGEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4My0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDpzdGF0aWMgaW50IGJvdF9zZW5kX3N0YXR1c19yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzLS8qIFJlYWQgcmVxdWVzdCBjb21wbGV0ZWQsIG5vdyB3ZSBoYXZlIHRvIHNlbmQgdGhlIENTVyAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTk0OnN0YXRpYyB2b2lkIGJvdF9yZWFkX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjA5OnN0YXRpYyBpbnQgYm90X3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIxMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ4OnN0YXRpYyB2b2lkIHVzYmdfZGF0YV93cml0ZV9jbXBsKHN0cnVjdCB1c2JfZXAgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ5OnN0YXRpYyBpbnQgdXNiZ19wcmVwYXJlX3dfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjUxOnN0YXRpYyBpbnQgYm90X3NlbmRfd3JpdGVfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc0OnN0YXRpYyBpbnQgYm90X3N1Ym1pdF9jb21tYW5kKHN0cnVjdCBmX3VhcyAqLCB2b2lkICosIHVuc2lnbmVkIGludCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNzY6c3RhdGljIHZvaWQgYm90X2NtZF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjMwODpzdGF0aWMgaW50IGJvdF9wcmVwYXJlX3JlcXMoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzY1OnN0YXRpYyB2b2lkIGJvdF9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzkwOnN0YXRpYyB2b2lkIGJvdF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zOTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQyMjpzdGF0aWMgaW50IHVzYmdfYm90X3NldHVwKHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00MjMtXHRcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDcxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDcyOnN0YXRpYyBpbnQgdGNtX3RvX3Vhc3BfcmVzcG9uc2UoZW51bSB0Y21fdG1yc3BfdGFibGUgY29kZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ3My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDg4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDg5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIHVhc3BfdG9fdGNtX2Z1bmMoaW50IGNvZGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OTAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUxMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUxMTpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb25lX3N0cmVhbShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdWFzX3N0cmVhbSAqc3RyZWFtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTEyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MjUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1MjY6c3RhdGljIHZvaWQgdWFzcF9mcmVlX2NtZHJlcShzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTI3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1Mzg6c3RhdGljIHZvaWQgdWFzcF9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUzOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTU0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU1OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTU2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU3OnN0YXRpYyBpbnQgdWFzcF9wcmVwYXJlX3JfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTkxOnN0YXRpYyB2b2lkIHVhc3BfcHJlcGFyZV9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjYxNDpzdGF0aWMgdm9pZCB1YXNwX3ByZXBhcmVfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTY2NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjY2NjpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njc6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNjY4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjY5OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NzAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc0OS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc1MDpzdGF0aWMgaW50IHVhc3Bfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc2MjpzdGF0aWMgaW50IHVhc3Bfc2VuZF90bV9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Nzc0OnN0YXRpYyBpbnQgdWFzcF9zZW5kX3JlYWRfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NzUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTgxNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjgxNzpzdGF0aWMgaW50IHVhc3Bfc2VuZF93cml0ZV9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODE4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjA6c3RhdGljIGludCB1c2JnX3N1Ym1pdF9jb21tYW5kKHN0cnVjdCBmX3VhcyAqLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NjEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjI6c3RhdGljIHZvaWQgdWFzcF9jbWRfY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODYzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4Nzc6c3RhdGljIGludCB1YXNwX2FsbG9jX3N0cmVhbV9yZXMoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVhc19zdHJlYW0gKnN0cmVhbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg3OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTA0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6OTA1OnN0YXRpYyBpbnQgdWFzcF9hbGxvY19jbWQoc3RydWN0IGZfdWFzICpmdSwgaW50IGkpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MDYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkyNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjkyNzpzdGF0aWMgaW50IHVhc3BfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05Mjgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjk2NDpzdGF0aWMgdm9pZCB1YXNwX3NldF9hbHQoc3RydWN0IGZfdWFzICpmdSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTAxMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEwMTM6c3RhdGljIGludCBnZXRfY21kX2Rpcihjb25zdCB1bnNpZ25lZCBjaGFyICpjZGIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDE0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTA3NzpzdGF0aWMgdm9pZCB1c2JnX2RhdGFfd3JpdGVfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDc4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTIyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTEyMzpzdGF0aWMgaW50IHVzYmdfcHJlcGFyZV93X3JlcXVlc3Qoc3RydWN0IHVzYmdfY21kICpjbWQsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTEyNC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE1MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExNTE6c3RhdGljIGludCB1c2JnX3NlbmRfc3RhdHVzX3Jlc3BvbnNlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTYzOnN0YXRpYyBpbnQgdXNiZ19zZW5kX3dyaXRlX3JlcXVlc3Qoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE3NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExNzU6c3RhdGljIGludCB1c2JnX3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTc2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTg2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE4NzpzdGF0aWMgdm9pZCB1c2JnX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExODk6c3RhdGljIHZvaWQgdXNiZ19zdWJtaXRfdG1yKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyMDQ6c3RhdGljIHZvaWQgdXNiZ19zdWJtaXRfY21kKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTI6c3RhdGljIHZvaWQgdXNiZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMjUzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzQyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM0MzpzdGF0aWMgc3RydWN0IHVzYmdfY21kICp1c2JnX2dldF9jbWQoc3RydWN0IGZfdWFzICpmdSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEzNDQtXHRcdHN0cnVjdCB0Y21fdXNiZ19uZXh1cyAqdHZfbmV4dXMsIHUzMiBzY3NpX3RhZylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NTpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NzpzdGF0aWMgaW50IHVzYmdfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTQ3MDpzdGF0aWMgdm9pZCBib3RfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTQ3MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTUxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE1MTk6c3RhdGljIGludCBib3Rfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MjAtXHRcdHZvaWQgKmNtZGJ1ZiwgdW5zaWduZWQgaW50IGxlbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3MDpzdGF0aWMgaW50IHVzYmdfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTcxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTc0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3NTpzdGF0aWMgY2hhciAqdXNiZ19nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTc2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTgzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU4NDpzdGF0aWMgdTE2IHVzYmdfZ2V0X3RhZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTg1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU5MTpzdGF0aWMgdm9pZCB1c2JnX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjAyOnN0YXRpYyB2b2lkIHVzYmdfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjA5OnN0YXRpYyB2b2lkIHVzYmdfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MTAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjMxOnN0YXRpYyBjb25zdCBjaGFyICp1c2JnX2NoZWNrX3d3bihjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NDY6c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY1MzpzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjU0LVx0XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE3NTI6c3RhdGljIGludCB0Y21fdXNiZ19kcm9wX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzU0OnN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE3OTk6c3RhdGljIHN0cnVjdCBzZV93d24gKnVzYmdfbWFrZV90cG9ydChcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MDAtXHRzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyAqdGYsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4MjE6c3RhdGljIHZvaWQgdXNiZ19kcm9wX3Rwb3J0KHN0cnVjdCBzZV93d24gKnd3bilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MzAtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODMxOnN0YXRpYyBzc2l6ZV90IHVzYmdfd3duX3ZlcnNpb25fc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sICBjaGFyICpwYWdlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTgzOD1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqdXNiZ193d25fYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODQyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTg0MzpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDQ6c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICopO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDY6c3RhdGljIGludCB1c2JnX2VuYWJsZV90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NDcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODYzOnN0YXRpYyBzc2l6ZV90IHRjbV91c2JnX3RwZ19uZXh1c19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4ODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODgzOnN0YXRpYyBpbnQgdXNiZ19hbGxvY19zZXNzX2NiKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZyxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4ODQtXHRcdFx0ICAgICAgc3RydWN0IHNlX3Nlc3Npb24gKnNlX3Nlc3MsIHZvaWQgKnApXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4OTM6c3RhdGljIGludCB0Y21fdXNiZ19tYWtlX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqdHBnLCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkyOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Mjk6c3RhdGljIGludCB0Y21fdXNiZ19kcm9wX25leHVzKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTk2Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Njc6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5NjgtXHRcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMDA1PXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICp1c2JnX2Jhc2VfYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDA5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjAxMDpzdGF0aWMgaW50IHVzYmdfcG9ydF9saW5rKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZywgc3RydWN0IHNlX2x1biAqbHVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMTk6c3RhdGljIHZvaWQgdXNiZ19wb3J0X3VubGluayhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDIwLVx0XHRzdHJ1Y3Qgc2VfbHVuICpzZV9sdW4pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMjg6c3RhdGljIGludCB1c2JnX2NoZWNrX3N0b3BfZnJlZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDI5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMzA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9zdHJpbmdzICp0Y21fc3RyaW5nc1tdID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE0OnN0YXRpYyBpbnQgdGNtX2JpbmQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCBzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMxNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIzOTM6c3RhdGljIHZvaWQgdGNtX2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQwMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0MDI6c3RhdGljIHZvaWQgdGNtX2RlbGF5ZWRfc2V0X2FsdF9kb25lKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDAzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQxMjpzdGF0aWMgYm9vbCB0Y21fZGVsYXllZF9zZXRfYWx0X2NhbmNlbGxlZChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQxMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQyMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0MjQ6c3RhdGljIGJvb2wgdGNtX2NvbXBsZXRlX2RlbGF5ZWRfc3RhdHVzKHN0cnVjdCBmX3VhcyAqZnUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDI1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ2NTpzdGF0aWMgYm9vbCB0Y21fY2FuY2VsX2RlbGF5ZWRfc2V0X2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ5Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTc6c3RhdGljIHZvaWQgdGNtX2NhbmNlbF9kZWxheWVkX3NldF9hbHRfc3luYyhzdHJ1Y3QgZl91YXMgKmZ1KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ5OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1MTQ6c3RhdGljIHZvaWQgdGNtX2RlbGF5ZWRfc2V0X2FsdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NDc6c3RhdGljIGludCB0Y21fZ2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU2MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NjI6c3RhdGljIGludCB0Y21fc2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmLCB1bnNpZ25lZCBhbHQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTYzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTg4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU4OTpzdGF0aWMgdm9pZCB0Y21fZGlzYWJsZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU5Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1OTc6c3RhdGljIGludCB0Y21fc2V0dXAoc3RydWN0IHVzYl9mdW5jdGlvbiAqZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTgtXHRcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MDg6c3RhdGljIGlubGluZSBzdHJ1Y3QgZl90Y21fb3B0cyAqdG9fZl90Y21fb3B0cyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjEzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYxNDpzdGF0aWMgdm9pZCB0Y21fYXR0cl9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRjbV9mdW5jX3R5cGUgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYyOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzA6c3RhdGljIHZvaWQgdGNtX2ZyZWVfaW5zdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYzMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NDg6c3RhdGljIGludCB0Y21fcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjU5OnN0YXRpYyB2b2lkIHRjbV91bnJlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjYwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MDpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2ODE6c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjgyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY5MDpzdGF0aWMgaW50IHRjbV9zZXRfbmFtZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY5MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDM6c3RhdGljIHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKnRjbV9hbGxvY19pbnN0KHZvaWQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzA0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjczODpzdGF0aWMgdm9pZCB0Y21fZnJlZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc0NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3NDY6c3RhdGljIHZvaWQgdGNtX3VuYmluZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzU0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc1NTpzdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbiAqdGNtX2FsbG9jKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmZpKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc1Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9Mjc5Mz1ERUNMQVJFX1VTQl9GVU5DVElPTih0Y20sIHRjbV9hbGxvY19pbnN0LCB0Y21fYWxsb2MpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3OTU6c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MDgtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwOTptb2R1bGVfaW5pdCh0Y21faW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODEwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxMTpzdGF0aWMgdm9pZCBfX2V4aXQgdGNtX2V4aXQodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxNjptb2R1bGVfZXhpdCh0Y21fZXhpdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA1OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYCBzdHJ1Y3R1cmUgYXMgYGZhYnJpY19tYWtlX3RwZ2AgYW5kIGBmYWJyaWNfZHJvcF90cGdgLiBUaGlzIGltcGxpZXMgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGJ5IHRoZSB0YXJnZXQgY29yZSBDb25maWdGUyBjb2RlLCB3aGljaCBpcyBnb29kLiBGb3IgbXkgYW5hbHlzaXMsIEkmIzM5O2xsIHJlZmVyIHRvIHRoZW0gc2ltcGx5IGFzIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgIGZvciBlYXNlIG9mIHJlZmVyZW5jZSDigJMgRm9jdXNTeW1ib2xzLCBpZiB5b3Ugd2lsbC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdlIGhhdmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gYFVTQl9DT05GSUdGU19GX1RDTWAgc2VlbXMgdG8gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBpcyB3aGF0IHdlIGV4cGVjdC4gYFRBUkdFVF9DT1JFYCBpbiB0dXJuIGlzIHNlbGVjdGluZyBgQ09ORklHRlNfRlNgLiBUaGlzIGxvb2tzLCBhdCBmaXJzdCBnbGFuY2UsIGxpa2UgYSBjb21wcmVoZW5zaXZlIHNldCBvZiBvcHRpb25zLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGNhdXNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IHRoYXQgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzc6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEwMC1cdGludCBcJiMzNDtNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjExNjpjb25maWcgVVNCX0dBREdFVF9TVE9SQUdFX05VTV9CVUZGRVJTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHN0b3JhZ2UgcGlwZWxpbmUgYnVmZmVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI3OTpjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNzE6Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFVTQiBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKlVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiAtIEEgUXVpY2sgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGludGVncmF0aW5nIGEgVVNCIEdhZGdldC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgbmF0dXJhbGx5LCB0aGF0IHdlJiMzOTtsbCBuZWVkIGBVU0JfR0FER0VUYCBlbmFibGVkLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHNwZWNpZmljIGRldmljZSBjb25maWd1cmF0aW9uIG9yIGZ1bmN0aW9uIHNldHVwLCBsZXQmIzM5O3MgdGFrZSBhIGJlYXQgYW5kIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlIGNhbiYjMzk7dCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3NpbmcgY29tcG9uZW50LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIGZvciBgVVNCX0dBREdFVGAgd2lsbCByZXZlYWwgYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzIHRoYXQgbmVlZCBjb25zaWRlcmF0aW9uLiBXZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCB0byBhbGxvdyB0aGUgbmV4dCBzdGFnZSBvZiBjb25maWcgdG8gaGFwcGVuIGFzIHNlYW1sZXNzbHkgYXMgcG9zc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDEwOlx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFwmIzM0O0JcJiMzNDsgamFja3MpLlxuICAxMTpcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cbiAgMTI6XHQjXG4gIDEzOlx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXCYjMzQ7TWluaS1BQlwmIzM0OyBqYWNrLCBzeXN0ZW1zIHdpdGhcbiAgMTQ6XHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFwmIzM0O1VTQiBPbi10aGUtR29cJiMzNDsgKENPTkZJR19VU0JfT1RHKS5cbiAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgR2FkZ2V0IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoYXQgYFVTQl9HQURHRVRgIGl0c2VsZiBpcyBkZXBlbmRlbmN5LWZyZWUuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MsIGJ1dCBkb2VzbiYjMzk7dCB0ZWxsIHRoZSB3aG9sZSBzdG9yeS4gVGhlIHJlbGV2YW50IGNvbmZpZ3MgdGhlbiBhcmUgYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBOb3csIHRvIGFjdHVhbGx5ICp0ZXN0KiB0aGVzZSBnYWRnZXRzIGVmZmVjdGl2ZWx5LCBJIG5lZWQgdG8gY29uc2lkZXIgaG9zdCBjb250cm9sbGVycy4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBkbyBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGZvciB0ZXN0aW5nPyBHaXZlbiBzeXprYWxsZXImIzM5O3MgdHlwaWNhbCBhcHByb2FjaCwgaXQgdXN1YWxseSB1dGlsaXplcyBgVVNCX0RVTU1ZX0hDRGAgb3IgcG90ZW50aWFsbHkgYFVTQl9SQVdfR0FER0VUYCBmb3IgdGhpcyBwdXJwb3NlLiBJIHNob3VsZCBjaGVjayB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgaXMgZGVmaW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlldyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9EVU1NWV9IQ0QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVEQyBLY29uZmlnKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBVU0IgRGV2aWNlIENvbnRyb2xsZXIgKFVEQykgc3VwcG9ydCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYCBmaWxlIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LiBOb3csIHdoZXJlIHdhcyBJIGxhc3QgbG9va2luZz8gQWgsIHllcywgbGluZSA0MjggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgdmFyaW91cyBVREMgZHJpdmVycyBhcmUgYnJvdWdodCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MsIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBsb29rIGxpa2UsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW4gYW5kIHJlbWluZCBteXNlbGYgb2YgdGhlIGRldGFpbHMgb2YgdGhlIFVEQyBzdWJzeXN0ZW0gS2NvbmZpZy4gSG9wZWZ1bGx5LCB0aGlzIHByb3ZpZGVzIHRoZSBjb250ZXh0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQyNTpcdCMgTEFTVCAtLSBkdW1teS9lbXVsYXRlZCBjb250cm9sbGVyXG4gNDI2Olx0I1xuIDQyNzpcdFxuIDQyODpcdGNvbmZpZyBVU0JfRFVNTVlfSENEXG4gNDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuIDQzMDpcdFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXHUwMDI2XHUwMDI2IFVTQl9HQURHRVQ9bSlcbiA0MzE6XHRcdGhlbHBcbiA0MzI6XHRcdCAgVGhpcyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGVtdWxhdGVzIFVTQiwgbG9vcGluZyBhbGwgZGF0YSB0cmFuc2ZlclxuIDQzMzpcdFx0ICByZXF1ZXN0cyBiYWNrIHRvIGEgVVNCIFwmIzM0O2dhZGdldCBkcml2ZXJcJiMzNDsgaW4gdGhlIHNhbWUgaG9zdC4gIFRoZSBob3N0XG4gNDM0Olx0XHQgIHNpZGUgaXMgdGhlIGNvbnRyb2xsZXI7IHRoZSBnYWRnZXQgc2lkZSBpcyB0aGUgZGV2aWNlLiAgR2FkZ2V0IGRyaXZlcnNcbiA0MzU6XHRcdCAgY2FuIGJlIGhpZ2gsIGZ1bGwsIG9yIGxvdyBzcGVlZDsgYW5kIHRoZXkgaGF2ZSBhY2Nlc3MgdG8gZW5kcG9pbnRzXG4gNDM2Olx0XHQgIGxpa2UgdGhvc2UgZnJvbSBORVQyMjgwLCBQWEEyeHgsIG9yIFNBMTEwMCBoYXJkd2FyZS5cbiA0Mzc6XHRcbiA0Mzg6XHRcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXG4gNDM5Olx0XHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XG4gNDQwOlx0XHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxuIDQ0MTpcdFxuIDQ0MjpcdFx0ICBTaW5jZSBzdWNoIGEgZ2FkZ2V0IHNpZGUgZHJpdmVyIG5lZWRzIHRvIGludGVyb3BlcmF0ZSB3aXRoIGEgaG9zdFxuIDQ0MzpcdFx0ICBzaWRlIExpbnV4LVVTQiBkZXZpY2UgZHJpdmVyLCB0aGlzIG1heSBoZWxwIHRvIGRlYnVnIGJvdGggc2lkZXNcbiA0NDQ6XHRcdCAgb2YgYSBVU0IgcHJvdG9jb2wgc3RhY2suXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDE2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgVVNCIEdhZGdldCBUZXN0aW5nIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHRlc3QgZW52aXJvbm1lbnQgZm9yIFVTQiBnYWRnZXRzLCBhbmQgU3l6a2FsbGVyIHNlZW1zIGxpa2UgdGhlIGdvLXRvIHJlc291cmNlIGZvciBhIHNvbGlkIGZvdW5kYXRpb24uIEkgcmVjYWxsIHNlZWluZyB0aGVtIGxldmVyYWdlIGBVU0JfRFVNTVlfSENEYCBxdWl0ZSBvZnRlbiBpbiB0aGVpciB0ZXN0cy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBpdCBhIHN0cm9uZyBjb250ZW5kZXIgZm9yIGluY2x1c2lvbiBpbiBteSBjb25maWd1cmF0aW9uLCBnaXZlbiBpdHMgcHJvdmVuIHRyYWNrIHJlY29yZCBpbiB0aGF0IGNvbnRleHQuIEJ1dCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgc2VlaW5nIGBVU0JfUkFXX0dBREdFVGAgdXNlZCBhbG9uZ3NpZGUgaXQuIEl0JiMzOTtzIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFVTQl9SQVdfR0FER0VUYCBjb25maWd1cmF0aW9uLCBiZWNhdXNlIGlmIGl0JiMzOTtzIGFsc28gYSBzdGFwbGUgaW4gU3l6a2FsbGVy4oCZcyB0ZXN0aW5nIG1ldGhvZG9sb2d5LCBJIGRlZmluaXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQgY29tcGxlbWVudHMgYFVTQl9EVU1NWV9IQ0RgLiBBIHRob3JvdWdoIHJldmlldyBvZiBpdHMgZnVuY3Rpb25hbGl0aWVzIGlzIG5vdyB3YXJyYW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUkFXX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MTY6Y29uZmlnIFVTQl9SQVdfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJhdyBHYWRnZXRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzOTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGdvIGRlZXAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBJIHJlbWVtYmVyIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJlc3Rpbmcgc3R1ZmYgYXJvdW5kIHRoZSBsZWdhY3kgZ2FkZ2V0IGltcGxlbWVudGF0aW9uIEkgbmVlZCB0byBjaGVjay4gUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA1MTYuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc3BlY2lmaWMgc2V0dGluZ3MgSSYjMzk7bSBpbnRlcmVzdGVkIGluLiBJJiMzOTttIGFpbWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHRoZSBvcHRpb25zIHByZXNlbnRlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZHJpdmVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUxMDpcdFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXG4gNTExOlx0XHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cbiA1MTI6XHRcbiA1MTM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDUxNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX3dlYmNhbVwmIzM0Oy5cbiA1MTU6XHRcbiA1MTY6XHRjb25maWcgVVNCX1JBV19HQURHRVRcbiA1MTc6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBSYXcgR2FkZ2V0XCYjMzQ7XG4gNTE4Olx0XHRoZWxwXG4gNTE5Olx0XHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcbiA1MjA6XHRcdCAgY29udHJvbCBvdmVyIHRoZSBnYWRnZXQmIzM5O3MgY29tbXVuaWNhdGlvbiBwcm9jZXNzLlxuIDUyMTpcdFxuIDUyMjpcdFx0ICBMaWtlIGFueSBvdGhlciBnYWRnZXQgZHJpdmVyLCBSYXcgR2FkZ2V0IGltcGxlbWVudHMgVVNCIGRldmljZXMgdmlhXG4gNTIzOlx0XHQgIHRoZSBVU0IgZ2FkZ2V0IEFQSS4gVW5saWtlIG1vc3QgZ2FkZ2V0IGRyaXZlcnMsIFJhdyBHYWRnZXQgZG9lcyBub3RcbiA1MjQ6XHRcdCAgaW1wbGVtZW50IGFueSBjb25jcmV0ZSBVU0IgZnVuY3Rpb25zIGl0c2VsZiBidXQgcmVxdWlyZXMgdXNlcnNwYWNlXG4gNTI1Olx0XHQgIHRvIGRvIHRoYXQuXG4gNTI2Olx0XG4gNTI3Olx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL3VzYi9yYXctZ2FkZ2V0LnJzdCBmb3IgZGV0YWlscy5cbiA1Mjg6XHRcbiA1Mjk6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk2MAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiAxMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBUQ00gQ29uZmlnZnMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIGBmX3RjbS5jYCwgd2hpY2ggaXMgYSBDb25maWdGUyBmdW5jdGlvbi4gTXkgbWFpbiBjb25jZXJuIGhlcmUgcmV2b2x2ZXMgYXJvdW5kIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgbmF0dXJhbGx5LiBJdCYjMzk7cyBhIGdvb2QgaWRlYSB0byBpbmNsdWRlIGBVU0JfRFVNTVlfSENEYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UuIExldCYjMzk7cyBzdGFydCBieSBsaXN0aW5nIHRoZSBrZXkgY29uZmlnczoKCiogICBgVVNCX0dBREdFVGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVEFSR0VUX0NPUkVgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYAoqICAgYFVTQl9EVU1NWV9IQ0RgCgpOb3csIGxldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSXQgcmVsaWVzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBgVEFSR0VUX0NPUkVgIGRlcGVuZHMgb24gYEJMT0NLYCwgYW5kIGBVU0JfQ09ORklHRlNgIG5lZWRzIGBVU0JfR0FER0VUYC4gYFVTQl9EVU1NWV9IQ0RgIGhhcyBkZXBlbmRlbmNpZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLiBTbyB0aGUgZnVsbCBzZXQgb2YgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBjb25zaWRlciBhcmU6IGBVU0JgLCBgQkxPQ0tgLCBgVVNCX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYW5kIGBVU0JfRFVNTVlfSENEYC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCwgYW5kIG9ubHkgdGhvc2UgZnVuY3Rpb25zLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLiBMZXQmIzM5O3MgY29uZmlybSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYy4gWWVzLCB0aGV5IGFyZS4gQW5kIGFyZSB0aGV5IGlubGluZWQ/IE5vLCB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHVzYmdfb3BzYC4gVGhpcyBtZWFucyB0aGF0IHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIHdpbGwgbm90IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGF0IG1ha2VzIHRoZW0gcGVyZmVjdCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLgoKSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoZSBjb2RlIGxvZ2ljOyB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBUaGlzIHJhY2UgaW52b2x2ZXMgdGhlIGNoZWNrIG9mIGBvcHRzLSZndDtoYXNfZGVwYCBhbmQgdGhlIHVzZSBvZiBgb3B0cy0mZ3Q7ZGVwZW5kZW50YC4gVGhlIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBieSBpbnRyb2R1Y2luZyBhIGxvY2FsIHZhcmlhYmxlIHRvIHJlYWQgYGhhc19kZXAgPSBvcHRzLSZndDtoYXNfZGVwO2AgYW5kIHVzZXMgdGhhdCBjb3B5IGluc3RlYWQgb2YgdGhlIHZvbGF0aWxlIHZhcmlhYmxlLiBBZGRpdGlvbmFsbHksIGl0IHJlb3JkZXJzIHRoZSBgY29uZmlnX2l0ZW1fZ2V0YCBhbmQgYG11dGV4X3VubG9ja2Agb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBnZW51aW5lIGJ1Zy4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZml4IGlzIHNvbGlkLgoKVG8gc3VtbWFyaXplLCBteSBzdWdnZXN0ZWQgY29uZmlndXJhdGlvbnMgYXJlOgoKKiAgIGBVU0JfR0FER0VUYAoqICAgYFVTQl9DT05GSUdGU2AKKiAgIGBUQVJHRVRfQ09SRWAKKiAgIGBVU0JfQ09ORklHRlNfRl9UQ01gCiogICBgVVNCX0RVTU1ZX0hDRGAKCkFuZCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZToKCiogICBgdXNiZ19tYWtlX3RwZ2AKKiAgIGB1c2JnX2Ryb3BfdHBnYAoKTXkgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7CgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICAgJiMzNDt1c2JnX2Ryb3BfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToxMi4wMzE2NjIxMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY1MzMwOTUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjEyLjAzMTY3MjQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MjM3NTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmJiN2E3YjE5ZTg4ZTI1Nzc3NzIzYWRkOTJiOTFhOWUxYzMyN2VlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDE0OjA1OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5lNWZiYjhjYTA5ZDU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4gXFx0dW5zaWduZWQgaTtcXG4rXFx0Ym9vbCBoYXNfZGVwO1xcbiBcXG4gXFx0aWYgKHN0cnN0cihuYW1lLCBcXFwidHBndF9cXFwiKSAhPSBuYW1lKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG5AQCAtMTY3NiwxOSArMTY3NywxOSBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuIFxcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLFxcbiBcXHRcXHRmdW5jX2luc3QpO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuLVxcdGlmICghb3B0cy1cXHUwMDNlcmVhZHkpXFxuLVxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0aWYgKCFvcHRzLVxcdTAwM2VyZWFkeSkge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4rXFx0XFx0Z290byB1bmxvY2tfaW5zdDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZWhhc19kZXApIHtcXG4tXFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpKVxcbi1cXHRcXHRcXHRnb3RvIHVubG9ja19kZXA7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxcbi1cXHRcXHRcXHR3d24tXFx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXFxuLVxcdFxcdFxcdFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0aGFzX2RlcCA9IG9wdHMtXFx1MDAzZWhhc19kZXA7XFxuK1xcdGlmIChoYXNfZGVwKSB7XFxuK1xcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cXHUwMDNlZGVwZW5kZW50KSkge1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4rXFx0XFx0XFx0Z290byB1bmxvY2tfaW5zdDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbiBcXG4gXFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcXG4gXFx0cmV0ID0gLUVOT01FTTtcXG5AQCAtMTcwNCwzMSArMTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuIFxcdHRwZy1cXHUwMDNldHBvcnQgPSB0cG9ydDtcXG4gXFx0dHBnLVxcdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcXG4gXFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xcbitcXHR0cGctXFx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XFxuK1xcbitcXHRjb25maWdfaXRlbV9nZXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXG4rXFx0aWYgKCFoYXNfZGVwKSB7XFxuK1xcdFxcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxcbitcXHRcXHRcXHR3d24tXFx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXFxuK1xcdFxcdFxcdFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdGdvdG8gcHV0X2l0ZW07XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIFNQQyBkb2Vzbid0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxcbiBcXHQgKiBwcmV0ZW5kIHRvIGJlIFNBUy4uXFxuIFxcdCAqL1xcbiBcXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFxcdTAwMjZ0cGctXFx1MDAzZXNlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tXFx0XFx0Z290byBmcmVlX3dvcmtxdWV1ZTtcXG4rXFx0XFx0Z290byB1bmRlcGVuZF9pdGVtO1xcbiBcXG4tXFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XFxuLVxcdHRwZy1cXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0Y29uZmlnX2l0ZW1fcHV0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuIFxcdHJldHVybiBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGc7XFxuIFxcbi1mcmVlX3dvcmtxdWV1ZTpcXG4rdW5kZXBlbmRfaXRlbTpcXG4rXFx0aWYgKCFoYXNfZGVwKVxcbitcXHRcXHRjb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK3B1dF9pdGVtOlxcbitcXHRjb25maWdfaXRlbV9wdXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4gXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuIGZyZWVfdHBnOlxcbiBcXHRrZnJlZSh0cGcpO1xcbiB1bnJlZl9kZXA6XFxuLVxcdGlmIChvcHRzLVxcdTAwM2VoYXNfZGVwKVxcbitcXHRpZiAoaGFzX2RlcClcXG4gXFx0XFx0bW9kdWxlX3B1dChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tdW5sb2NrX2RlcDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuIHVubG9ja19pbnN0OlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XFxuIFxcbkBAIC0xNzQzLDYgKzE3NTcsNyBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG4gXFx0XFx0XFx0XFx0c3RydWN0IHVzYmdfdHBnLCBzZV90cGcpO1xcbiBcXHR1bnNpZ25lZCBpO1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4rXFx0Ym9vbCBoYXNfZGVwO1xcbiBcXG4gXFx0dGNtX3VzYmdfZHJvcF9uZXh1cyh0cGcpO1xcbiBcXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XFxuQEAgLTE3NTMsMTYgKzE3NjgsMjggQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuIFxcdFxcdGlmICh0cGdfaW5zdGFuY2VzW2ldLnRwZyA9PSB0cGcpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRpZiAoaSBcXHUwMDNjIFRQR19JTlNUQU5DRVMpIHtcXG4tXFx0XFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xcbiBcXHRcXHRvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LFxcbiBcXHRcXHRcXHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbi1cXHRcXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcClcXG4rXFx0XFx0aGFzX2RlcCA9IG9wdHMtXFx1MDAzZWhhc19kZXA7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fZ2V0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChoYXNfZGVwKVxcbiBcXHRcXHRcXHRtb2R1bGVfcHV0KG9wdHMtXFx1MDAzZWRlcGVuZGVudCk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHRcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFxuK1xcdFxcdGNvbmZpZ19pdGVtX3B1dChcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbitcXHRcXHRrZnJlZSh0cGcpO1xcbitcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MTIuNDg4NTU4NTM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI2MDc2MTg5MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVEFSR0VUX0NPUkVcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1RDTVwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIixcbiAgICBcInVzYmdfZHJvcF90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmZpZ2ZzIGRlcGVuZGVuY3kgaGFuZGxpbmcgZm9yIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbi4gSXQgbW9kaWZpZXMgdXNiZ19tYWtlX3RwZyBhbmQgdXNiZ19kcm9wX3RwZyB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBjb25maWdmcy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmI3YTdiMTllODhlMjU3Nzc3MjNhZGQ5MmI5MWE5ZTFjMzI3ZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDowNToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbmluZGV4IGIzZmE1YTE3ZmQyZGIuLmU1ZmJiOGNhMDlkNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpbnQgcmV0O1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4gXHR1bnNpZ25lZCBpO1xuK1x0Ym9vbCBoYXNfZGVwO1xuIFxuIFx0aWYgKHN0cnN0cihuYW1lLCBcInRwZ3RfXCIpICE9IG5hbWUpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuQEAgLTE2NzYsMTkgKzE2NzcsMTkgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXG4gXHRcdGZ1bmNfaW5zdCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuLVx0aWYgKCFvcHRzLVx1MDAzZXJlYWR5KVxuLVx0XHRnb3RvIHVubG9ja19kZXA7XG4rXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1x0XHRnb3RvIHVubG9ja19pbnN0O1xuK1x0fVxuIFxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcCkge1xuLVx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtXHUwMDNlZGVwZW5kZW50KSlcbi1cdFx0XHRnb3RvIHVubG9ja19kZXA7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbi1cdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbi1cdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIHVubG9ja19kZXA7XG4rXHRoYXNfZGVwID0gb3B0cy1cdTAwM2VoYXNfZGVwO1xuK1x0aWYgKGhhc19kZXApIHtcbitcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpIHtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4rXHRcdFx0Z290byB1bmxvY2tfaW5zdDtcbitcdFx0fVxuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuIFxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbiBcdHJldCA9IC1FTk9NRU07XG5AQCAtMTcwNCwzMSArMTcwNSw0NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHR0cGctXHUwMDNldHBvcnQgPSB0cG9ydDtcbiBcdHRwZy1cdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcbiBcbitcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuK1x0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4rXG4rXHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcbitcdGlmICghaGFzX2RlcCkge1xuK1x0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbitcdFx0XHR3d24tXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcbitcdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRnb3RvIHB1dF9pdGVtO1xuK1x0fVxuK1xuIFx0LypcbiBcdCAqIFNQQyBkb2Vzbid0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZVxuIFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxuIFx0ICovXG4gXHRyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sIFx1MDAyNnRwZy1cdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGdvdG8gZnJlZV93b3JrcXVldWU7XG4rXHRcdGdvdG8gdW5kZXBlbmRfaXRlbTtcbiBcbi1cdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuLVx0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnO1xuIFxuLWZyZWVfd29ya3F1ZXVlOlxuK3VuZGVwZW5kX2l0ZW06XG4rXHRpZiAoIWhhc19kZXApXG4rXHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rcHV0X2l0ZW06XG4rXHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbitcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBmcmVlX3RwZzpcbiBcdGtmcmVlKHRwZyk7XG4gdW5yZWZfZGVwOlxuLVx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbitcdGlmIChoYXNfZGVwKVxuIFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbi1cdGVsc2Vcbi1cdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi11bmxvY2tfZGVwOlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuIHVubG9ja19pbnN0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4gXG5AQCAtMTc0Myw2ICsxNzU3LDcgQEAgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4gXHRcdFx0XHRzdHJ1Y3QgdXNiZ190cGcsIHNlX3RwZyk7XG4gXHR1bnNpZ25lZCBpO1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4rXHRib29sIGhhc19kZXA7XG4gXG4gXHR0Y21fdXNiZ19kcm9wX25leHVzKHRwZyk7XG4gXHRjb3JlX3RwZ19kZXJlZ2lzdGVyKHNlX3RwZyk7XG5AQCAtMTc1MywxNiArMTc2OCwyOCBAQCBzdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiBcdFx0aWYgKHRwZ19pbnN0YW5jZXNbaV0udHBnID09IHRwZylcbiBcdFx0XHRicmVhaztcbiBcdGlmIChpIFx1MDAzYyBUUEdfSU5TVEFOQ0VTKSB7XG4tXHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbiBcdFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCxcbiBcdFx0XHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbi1cdFx0aWYgKG9wdHMtXHUwMDNlaGFzX2RlcClcbitcdFx0aGFzX2RlcCA9IG9wdHMtXHUwMDNlaGFzX2RlcDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1xuK1x0XHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuK1xuK1x0XHRpZiAoaGFzX2RlcClcbiBcdFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4gXHRcdFx0XHRcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlZGVwX2xvY2spO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0a2ZyZWUodHBnKTtcbitcdFx0cmV0dXJuO1xuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToxMi40ODg1NTk3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjU0MTEwMzY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBDb3JlIE1vZHVsZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuIE15IHNwaWRleSBzZW5zZSBpcyB0aW5nbGluZzsgd2UgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBuZWNlc3NpdGF0ZXMgZnV6emluZy4gTG9va3MgbGlrZSB3ZSdyZSB0b3VjaGluZyBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYC4gQWgsIHRoZSBVU0IgZ2FkZ2V0IFRDTSBmdW5jdGlvbiEgUmlnaHQsIHRoYXQncyBhY2Nlc3NlZCB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIHdhcnJhbnRlZC5cblxuVGhlIHBsYW4gaXMgc2ltcGxlLiBMZXQncyBpc29sYXRlIHRob3NlIGZ1bmN0aW9ucywgYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AsIGFzIG91ciBmdXp6aW5nIHRhcmdldHMuIE5vdywgbGV0J3MgaWRlbnRpZnkgYW55IHJlcXVpcmVkIGBDT05GSUdgIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGtub2JzIG5lZWQgdG8gYmUgdHVybmVkLiBUaGlzIHNob3VsZG4ndCBiZSB0b28gdHJpY2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MjUuMDI5NjY4MTI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NDQxNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToyNS4wOTYxMTc0NDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU0MzQ0OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBVU0JfQ09ORklHRlNfRl9UQ01gIGZlYXR1cmUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGxpa2VseSBrZXJuZWwgZGVmY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBvdGhlcnMsIHRvIHRyYWNlIGJhY2sgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIHRvIGV2ZW4gKmJlKiBzZWxlY3RhYmxlIG9yIGZ1bmN0aW9uYWwuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHByZXJlcXVpc2l0ZSBzeW1ib2xzLCBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgdXBvbiwgYW5kIGFueSBidWlsZCBmbGFncyBvciB0b29sY2hhaW4gcmVxdWlyZW1lbnRzIGl0IG1heSBoYXZlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgbWF0dGVyIG9mIGNhcmVmdWwgY3Jvc3MtcmVmZXJlbmNpbmcgYW5kIGRpZ2dpbmcgaW50byB0aGUgYnVpbGQgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjI5LjQ1MDQ2NTU5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE0Mzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNToyOS41MTE2MTY3ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDYyNjIyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHRoZSB0YXNrIGF0IGhhbmQsIEkgdGhpbmsgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZ29pbmcgdG8gYmUgZm91bmQgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ5NS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgb2YgYSBVU0IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24sIGFuZCB0aGlzIGZpbGUgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBvcHRpb25zLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGlzIHNlY3Rpb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyB0aGVzZSBzZXR0aW5ncyB3b3JrIHdpdGhpbiB0aGUgb3ZlcmFsbCBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gTGV0J3Mgc2VlIHdoYXQga2luZCBvZiBjb25maWd1cmF0aW9uIHN3aXRjaGVzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGRldGFpbGVkIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDU6MzQuOTc0MjQzMzQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NTpcXHRcXHRoZWxwXFxuIDQ4NjpcXHRcXHQgIFRoZSBQcmludGVyIGZ1bmN0aW9uIGNoYW5uZWxzIGRhdGEgYmV0d2VlbiB0aGUgVVNCIGhvc3QgYW5kIGFcXG4gNDg3OlxcdFxcdCAgdXNlcnNwYWNlIHByb2dyYW0gZHJpdmluZyB0aGUgcHJpbnQgZW5naW5lLiBUaGUgdXNlciBzcGFjZVxcbiA0ODg6XFx0XFx0ICBwcm9ncmFtIHJlYWRzIGFuZCB3cml0ZXMgdGhlIGRldmljZSBmaWxlIC9kZXYvZ19wcmludGVyXFx1MDAzY1hcXHUwMDNlIHRvXFxuIDQ4OTpcXHRcXHQgIHJlY2VpdmUgb3Igc2VuZCBwcmludGVyIGRhdGEuIEl0IGNhbiB1c2UgaW9jdGwgY2FsbHMgdG9cXG4gNDkwOlxcdFxcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci5yc3RcXG4gNDkzOlxcdFxcdCAgd2hpY2ggaW5jbHVkZXMgc2FtcGxlIGNvZGUgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlIGZpbGUuXFxuIDQ5NDpcXHRcXG4gNDk1OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcXG4gNDk4OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ5OTpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDA6XFx0XFx0c2VsZWN0IFVTQl9GX1RDTVxcbiA1MDE6XFx0XFx0aGVscFxcbiA1MDI6XFx0XFx0ICBUaGlzIGZhYnJpYyBpcyBhIFVTQiBnYWRnZXQgY29tcG9uZW50LiBUd28gVVNCIHByb3RvY29scyBhcmVcXG4gNTAzOlxcdFxcdCAgc3VwcG9ydGVkIHRoYXQgaXMgQkJCIG9yIEJPVCAoQnVsayBPbmx5IFRyYW5zcG9ydCkgYW5kIFVBU1xcbiA1MDQ6XFx0XFx0ICAoVVNCIEF0dGFjaGVkIFNDU0kpLiBCT1QgaXMgYWR2ZXJ0aXNlZCBvbiBhbHRlcm5hdGl2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozNC45NzQzNzI1ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcyNDcyNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGVidWdnaW5nIFVTQiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0LCB0aGlzIHdob2xlIHRoaW5nLCBoaW5nZXMgb24gYFRBUkdFVF9DT1JFYCBhbmQgYFVTQl9DT05GSUdGU2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24sIGBVU0JfQ09ORklHRlNfRl9UQ01gLCBpcyBzZXQuIEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gQW5kIEknbSBhbHNvIHRoaW5raW5nIHRoYXQgYFVTQl9GX1RDTWAgc2hvdWxkIGJlIHNlbGVjdGVkIHRvby4gR2l2ZW4gdGhhdCBJIG5lZWQgdG8gY2hlY2sgYFVTQl9GX1RDTWAsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGxvY2F0ZSBgVVNCX0ZfVENNYC4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoYXQgcGF0aCwgc2luY2UgdGhhdCdzIHdoZXJlIHRoZSBmdW5jdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHR5cGljYWxseSBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTY4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozOS4wNDY4NDc1MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI3MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRl9UQ01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjA9Y29uZmlnIFVTQl9GX1BSSU5URVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMjM6Y29uZmlnIFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTozOS4xMDE3ODI5NzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4Mzk1MTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBmb3IgVVNCIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUga2V5IGZsYWcgSSBuZWVkIHRvIGVuYWJsZSBoZXJlLiBUaGF0J3MgdGhlIHByaW1hcnkgZm9jdXMuIEJ1dCwgSSBrbm93IHRoZXJlJ3MgYSBkZXBlbmRlbmN5IGNoYWluLCBhbmQgSSdtIHByZXR0eSBzdXJlIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgIHdpbGwgYWxzbyBoYXZlIHRvIGJlIHNldC4gQmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoZSByYWJiaXQgaG9sZSBJJ2xsIGRvdWJsZS1jaGVjayBgVEFSR0VUX0NPUkVgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIHNldHRpbmdzIHNvIGV2ZXJ5dGhpbmcgY29tcGlsZXMgcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNDUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNTo0NS40ODU3MzgyOTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjYzNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUQVJHRVRfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3RhcmdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWc6MzptZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA1OjQ1LjUzODAwOTc4MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkyNzE2NTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFdlYioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiBgVEFSR0VUX0NPUkVgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlJ3MgdGhlIGRlcGVuZGVuY3ksIHdoYXQgb3RoZXIgdmFyaWFibGVzIG1heSBpbXBhY3QgaXQ/XCIuIExldCdzIHN0YXJ0IHdpdGggYSBwb3RlbnRpYWxseSByZWxldmFudCBjb21wb25lbnQsIG9mdGVuIGEgc291cmNlIG9mIGhlYWRhY2hlcyBpZiBub3QgY29uZmlndXJlZCBjb3JyZWN0bHksIGFuZCBzZWUgd2hlcmUgYFVTQl9DT05GSUdGU2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBJdCdzIGEga2V5IHBpZWNlIGluIG1hbnkgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucywgYW5kIGEgY29tbW9uIGludGVncmF0aW9uIHBvaW50LiBMZXQgbWUgY2hlY2sgaXRzIHNldHRpbmdzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgYWRkcmVzc2luZy4gSSdsbCBtZW50YWxseSBtYXAgdGhpcyBvdXQsIGNvbnNpZGVyIGFueSBwb3NzaWJsZSBjb25mbGljdHMsIGFuZCB0aGVuIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNjo0Ni40NjUxNzc5MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTg4OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDY6NDYuNTM1MzcyODk0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTE0ODI2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0IFRhcmdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBVU0IgZ2FkZ2V0IHRhcmdldCBjb25maWd1cmF0aW9uIGNvZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHdlIG5lZWQgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBlbmFibGVkIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSdyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGZhYnJpYy5cblxuRmlyc3QsIGxldCBtZSBjb25maXJtIHNvbWV0aGluZyBiYXNpYzogQXJlIHRoZXNlIGZ1bmN0aW9ucyBkZWNsYXJlZCBzdGF0aWNhbGx5PyBMZXQncyBjaGVjayB0aGUgcGF0Y2jigKYgWXVwLCB0aGV5IGFyZTogYHN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICp1c2JnX21ha2VfdHBnKC4uLilgIGFuZCBgc3RhdGljIHZvaWQgdXNiZ19kcm9wX3RwZyguLi4pYC4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIFN0YXRpYyBmdW5jdGlvbnMgdHlwaWNhbGx5IGhhdmUgbGltaXRlZCBzY29wZS4gSG93ZXZlciwgdGhleSBhcmUgbGlrZWx5IGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0J3MgaG93IHRoZXkncmUgZ2V0dGluZyBjYWxsZWQsIEknbSBiZXR0aW5nLCBwcm9iYWJseSBpbiBgZmFicmljX29wc2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gdHJhY2UgdGhlIGFzc2lnbm1lbnRzIGFuZCBzZWUgaG93IHRoaXMgdGFyZ2V0IGdyb3VwIHBvcnRhbCBzZXR1cCBpcyBhY3R1YWxseSBiZWluZyBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA2OjUxLjEyNjg1OTQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU5MDgwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JnX21ha2VfdHBnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDQ5LVxcdC5mYWJyaWNfZHJvcF93d25cXHRcXHQ9IHVzYmdfZHJvcF90cG9ydCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDUwOlxcdC5mYWJyaWNfbWFrZV90cGdcXHRcXHQ9IHVzYmdfbWFrZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MS1cXHQuZmFicmljX2VuYWJsZV90cGdcXHRcXHQ9IHVzYmdfZW5hYmxlX3RwZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDY6NTEuMTc3NDU2NTQ3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTQ0OTY4NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIEVudHJ5cG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhleSBhcmUgZGVmaW5pdGVseSBhc3NpZ25lZCB0byBgdGFyZ2V0X2NvcmVfZmFicmljX29wc2AuIFNpbmNlIHRoZXkncmUgc3RhdGljLCBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXkgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIHVuaXF1ZSBhZGRyZXNzZXMuIEJ1dCBoYW5nIG9uLCB0aGV5J3JlIGJlaW5nIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzISBUaGF0IGNvbXBsZXRlbHkgcnVsZXMgb3V0IGlubGluaW5nOyB0aGV5ICpoYXZlKiB0byBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcHJvbXB0LiBJdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IHRoZXNlIGZ1bmN0aW9ucywgYnkgdmlydHVlIG9mIHRoZWlyIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudCwgYXJlIG5vdCBpbmxpbmVkLiBCdXQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgY29tcHJlaGVuc2l2ZSwgSSBjb3VsZCBpbmNsdWRlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBhcyB3ZWxsLCB0byBiZSBwZXJmZWN0bHkgc2FmZS5cblxuV2FpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25maWdmcyBvcGVyYXRpb25zIHNwZWNpZmljIHRvIHRoaXMgZmFicmljLiBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIHV0aWxpemUuIExldCdzIHNlZS4uLiBBaCwgYHVzYmdfb3BzYCBpcyByZWdpc3RlcmVkIHNvbWV3aGVyZS4gR29vZC4gTGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NDMuMTIyNDI4OTAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTk4NjA1OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiZ19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAyOD1zdGF0aWMgaW50IHVzYmdfY2hlY2tfc3RvcF9mcmVlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwMzItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjAzMzpzdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAzNC1cXHQubW9kdWxlXFx0XFx0XFx0XFx0PSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI3OTU9c3RhdGljIGludCBfX2luaXQgdGNtX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwMzpcXHRyZXQgPSB0YXJnZXRfcmVnaXN0ZXJfdGVtcGxhdGUoXFx1MDAyNnVzYmdfb3BzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yODExPXN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI4MTM6XFx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXFx1MDAyNnVzYmdfb3BzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yODE0LVxcdHVzYl9mdW5jdGlvbl91bnJlZ2lzdGVyKFxcdTAwMjZ0Y211c2JfZnVuYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjQzLjQ4MjI5NjI0OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM5MTI2Mzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIENvbmZpZ0ZTIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZ290IG15IGV5ZSBvbiBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCDigJMgdGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgcmlnaHQ/IFRoZXkgc2VlbSBsaWtlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHllcywgZGVmaW5pdGVseSByZWFjaGFibGUsIENvbmZpZ0ZTIGlzIHRoZSBwYXRod2F5IHRvIGdldCB0aGVyZS4gVGhlIGJpZyBxdWVzdGlvbiBpcywgYXJlIHRoZXkgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZz8gQWJzb2x1dGVseSEgVGhlIGlzc3VlIGFkZHJlc3NlZCBpcyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgc28gaXQncyByaXBlIGZvciBleHBsb2l0YXRpb24uXG5cbkJlZm9yZSBJIGRpdmUgaW4sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBMb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBHb3R0YSBtYWtlIHN1cmUgSSd2ZSBnb3QgZXZlcnl0aGluZyBsaW5lZCB1cCBjb3JyZWN0bHkuIEFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBtaWdodCBiZSBtaXNzaW5nPyBUaW1lIHRvIGludmVzdGlnYXRlIHRoZSBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NDguMjIxNDI2Mzc1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEyMDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjIzPWNvbmZpZyBVU0JfRl9UQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMjg6Y29uZmlnIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMzktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1MC1cXHRib29sIFxcXCJBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNTk6Y29uZmlnIFVTQl9DT05GSUdGU19PQkVYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVxcdGJvb2wgXFxcIk9iamVjdCBFeGNoYW5nZSBNb2RlbCAoQ0RDIE9CRVgpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTM6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzNTpjb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzY5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MDAtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxMjpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAyLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0Ni1cXHRib29sIFxcXCJNSURJIDIuMCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NTg6Y29uZmlnIFVTQl9DT05GSUdGU19GX0hJRFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cXHRib29sIFxcXCJISUQgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXFx0Ym9vbCBcXFwiVVNCIFdlYmNhbSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODItXFx0Ym9vbCBcXFwiUHJpbnRlciBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTU6Y29uZmlnIFVTQl9DT05GSUdGU19GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cXHRib29sIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjQ4LjMwNDU1MjExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjQ4MDk0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHdoYXQgSSdtIGxvb2tpbmcgYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2AgZGlyZWN0b3J5IGJlZm9yZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBiZSBmb3IgdGhhdC4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjggKG9yIHRoZXJlYWJvdXRzKSBvZiB0aGF0IGZpbGUuIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWdpbiwgb3IgYXQgbGVhc3QgYSBzaWduaWZpY2FudCBncm91cGluZyBvZiB0aGVtLiBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHZhcmlvdXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NTEuODY5MzY1NjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA3OjUxLjg2OTQ2MzA3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTgxMjMyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBGUyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSdtIHRoaW5raW5nIGFib3V0IGBVU0JfQ09ORklHRlNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHJlbGF0aXZlbHkgc2VsZi1jb250YWluZWQsIHdpdGggcGVyaGFwcyBvbmx5IGEgZGVwZW5kZW5jeSBvbiBgVVNCX0dBREdFVGAsIGFuZCB0aGF0J3MgbGlrZWx5IHRoZSBvbmx5IHRoaW5nIGhvbGRpbmcgaXQgYmFjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHRoaW5raW5nIGNsZWFybHkuXG5cbk5vdywgdGhvdWdoLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGF0IGBUQVJHRVRfQ09SRWAgbWlnaHQgaGF2ZSB0byBzYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBDT05GSUdGU2AgaGFzIGFueSB1bmV4cGVjdGVkIHJlbGF0aW9uc2hpcCB0byBpdC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGNvbm5lY3Rpb25zPyBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkZWVwZXIgY29uZmlndXJhdGlvbiBhc3BlY3RzIG9mIHRoaXMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowNzo1Ny41ODc1ODk1MzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA2OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQ19UMTBESUZcXG4gICA4OlxcdFxcdHNlbGVjdCBTQ1NJX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcXG4gIDEzOlxcdFxcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xcbiAgMTQ6XFx0XFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBUQVJHRVRfQ09SRVxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgVENNX0lCTE9DS1xcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIlRDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgQkxLX0RFVl9JTlRFR1JJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDc6NTcuNTg3Njk2NDA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzM1NzAxMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbnMgb2YgVEFSR0VUX0NPUkUqKlxuXG5Pa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGRlZmluaXRlbHkgZGVwZW5kZW50IG9uIGBCTE9DS2AuIFRoYXQgbWVhbnMgdGhlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlIGFyZSBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9UQ01gLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBMZXQncyBzdGFydCB3aXRoIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLiBIbW0sIGEgcXVpY2sgbG9vayBhbmQgaXQgc2VlbXMgYHVzYmdfbWFrZV90cGdgIGlzIGRlY2xhcmVkIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrIOKAkyBhcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhIHRoYXQgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24/IEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgIHRvIHNlZSB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc4MSwiT3V0cHV0VG9rZW5zIjo3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjAxLjY2MTI3MDk3NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1OTg0ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTM2PXN0YXRpYyBzdHJ1Y3QgdHBnX2luc3RhbmNlIHRwZ19pbnN0YW5jZXNbVFBHX0lOU1RBTkNFU107XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mzg6c3RhdGljIERFRklORV9NVVRFWCh0cGdfaW5zdGFuY2VzX2xvY2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODowMS43MTk4Nzc5NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDU4MDcyODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBDb2RlIGZvciBHbG9iYWwgU3ltYm9sIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCByZWdhcmRpbmcgc3ltYm9scy4gVGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGRldmVsb3BlciwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gbG9vayBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGF0IG1hY3JvIGlzIGEgY2xhc3NpYyBpbmRpY2F0b3Igb2YgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LCBhIGNvbW1vbiBwYXR0ZXJuIGluIGtlcm5lbCBtb2R1bGVzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zIGRldmVsb3BtZW50IHdoZXJlIHlvdSBuZWVkIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBzeXN0ZW0uIElmIEkgY2FuIGZpbmQgdGhlIHVzZXMgb2YgdGhhdCBtYWNybywgSSdsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaW50ZW50aW9uYWxseSBiZWluZyBleHBvc2VkLlxuXG5GYWlsaW5nIGEgZGlyZWN0IGhpdCB3aXRoIGBFWFBPUlRfU1lNQk9MYCwgSSdsbCBicm9hZGVuIHRoZSBzZWFyY2guIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgZ2xvYmFsbHkgdmlzaWJsZSBmdW5jdGlvbnMsIG1heWJlIHVzaW5nIGEgbW9yZSBnZW5lcmFsIHNlYXJjaCBmb3IgZ2xvYmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gSSdsbCBiZSBsb29raW5nIGF0IHRoZSBsaW5rZXIgZmlsZXMgb3Igb3RoZXIgcHJvamVjdCBidWlsZCBtZXRhZGF0YSBpZiB0aGUgaW5pdGlhbCBzZWFyY2ggaXMgdW5zdWNjZXNzZnVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgcHJvamVjdCBpcyBleHBsaWNpdGx5IGNvbnRyb2xsaW5nIHZpc2liaWxpdHkgb3IsIHBlcmhhcHMsIHJlbHlpbmcgb24gZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgYnVpbGQgc3lzdGVtLiBEZXRlcm1pbmluZyB0aGUgbWV0aG9kIGZvciB0aGlzIGNhbiBiZSBjcnVjaWFsIGluIGEgbG90IG9mIHNpdHVhdGlvbnMuXG5cbkVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSAncHVibGljIEFQSScgb2YgdGhpcyBjb2RlLCBvciBhdCBsZWFzdCB0aGUgcGFydHMgZGVzaWduZWQgdG8gYmUgYWNjZXNzaWJsZSBieSBvdGhlciBjb21wb25lbnRzLiBGaW5kaW5nIGBFWFBPUlRfU1lNQk9MYCBpcyBqdXN0IHRoZSBmYXN0IHRyYWNrOyBJJ20gcHJlcGFyZWQgdG8gZGlnIGEgYml0IGRlZXBlciBpZiBJIG5lZWQgdG8uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI2NSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjA2LjE3Nzk1MzU0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MTcyODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODowNi4yMjg2ODAyNDlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNzQ3NDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgQ29kZSBmb3IgVm9pZCBGdW5jdGlvbiBEZWZpbml0aW9ucyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIGNvbXBpbGVyIGlzIGtpY2tpbmcgaW4uIEknbSBnb2luZyB0byBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgdmVyeSBzcGVjaWZpYyB0eXBlIG9mIGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoaXMgY29kZWJhc2UuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYHZvaWRgLiBJJ20gdGhpbmtpbmcgb2YgdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gaGVyZSwgc29tZXRoaW5nIHRoYXQncyBib3RoIGVmZmljaWVudCBhbmQgcHJlY2lzZS5cblxuSSB3YW50IGEgcGF0dGVybiB0aGF0IHdpbGwgbGV0IG1lIGZpbHRlciBxdWlja2x5LiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgYHZvaWRgIGtleXdvcmQgaXRzZWxmIC0gdGhhdCdzIG5vbi1uZWdvdGlhYmxlLCBpdCdzIHRoZSBzaWduYXR1cmUgSSdtIHNlYXJjaGluZyBmb3IuIEZvbGxvd2luZyB0aGF0LCBJIGtub3cgSSBuZWVkIHRvIHNwZWNpZnkgd2hhdCBjb21lcyBhZnRlciB0aGUgYHZvaWRgLCB3aGljaCBpcyB0aGUgZnVuY3Rpb24gbmFtZS4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCBDL0MrKyBpZGVudGlmaWVyIHJ1bGVzLCBhbmQgZXhwZWN0IHRoZSBmdW5jdGlvbiBuYW1lIHRvIHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSwgYW5kIHRoZW4gYWxsb3cgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXMgdG8gZm9sbG93LiBUaGUgZWFzaWVzdCB3YXkgdG8gZGVzY3JpYmUgdGhhdCBpcyB3aXRoIGBbYS16QS1aX11bYS16QS1aMC05X10qYC4gRmluYWxseSwgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUsIEkgbmVlZCB0byBsb29rIGZvciBhbiBvcGVuaW5nIHBhcmVudGhlc2lzLCBgKGAuIFRoYXQncyB0aGUgZW5kIG9mIHRoZSBkZWNsYXJhdGlvbiwgYW5kIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpdHNlbGYuXG5cblNvLCB0aGUgcGF0dGVybiBJJ20gY29uc3RydWN0aW5nIGlzIGBedm9pZCBbYS16QS1aX11bYS16QS1aMC05X10qXFwoYCwgd2hlcmUgYF5gIGF0IHRoZSBiZWdpbm5pbmcgbWVhbnMgXCJzdGFydCBvZiBsaW5lXCIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSB2ZXJ5IGNsZWFuIGFuZCB0YXJnZXRlZCB3YXkgdG8gZmluZCB0aG9zZSBgdm9pZGAgZnVuY3Rpb25zLiBMZXQncyBzZWUgaG93IHRoYXQgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjY5LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MTIuNTQ2MTYwMTMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjI2ODM4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZvaWQgW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoxMi41OTg0MzkwMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk4MjU2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqUmVnZXggUGF0dGVybiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzcyBzdGFydHMgd2l0aCBhIHNwZWNpZmljIHJlZ2V4IHBhdHRlcm46IGBeW2Etel0uKlxcKGAuICBJIHNlZSBpdCBpbW1lZGlhdGVseS4gTXkgbWluZCdzIHdvcmtpbmcgdGhyb3VnaCBpdC4gSSByZWNvZ25pemUgdGhlIGNvbW1vbiBjaGFyYWN0ZXJzIHVzZWQgaGVyZSBhcyB3ZWxsLiBJJ20gdXNpbmcgcmVnZXggdG8gZXhhbWluZSBhIHN0cmluZyBvciBhIHNldCBvZiBzdHJpbmdzLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IEknbSBsb29raW5nICpmb3IqLlxuXG5gXmAgVGhpcyBpcyBhbiBhbmNob3IuIEl0IG1lYW5zIFwiYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuXCIgIE9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgZm9yIHBhdHRlcm5zIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSB0YXJnZXQgdGV4dC5cblxuYFthLXpdYCBUaGF0J3MgYSBjaGFyYWN0ZXIgY2xhc3MuIENsZWFybHksIHdlJ3JlIGxvb2tpbmcgZm9yIGEgbG93ZXJjYXNlIGxldHRlci4gVGhlIGBhLXpgIGlzIGEgc3RhbmRhcmQgcmFuZ2UuXG5cbmAuKmAgIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGl0LiBUaGUgYC5gIGlzIGFueSBjaGFyYWN0ZXIgKGV4Y2VwdCBuZXdsaW5lLCBkZXBlbmRpbmcgb24gdGhlIHJlZ2V4IGVuZ2luZSwgYnV0IEknbGwgYXNzdW1lIHN0YW5kYXJkIGJlaGF2aW9yIGZvciBub3cpLiBUaGUgYCpgIGlzIGEgcXVhbnRpZmllci4gWmVybyBvciBtb3JlIHRpbWVzLiBTbyB0aGlzIG1lYW5zIFwibWF0Y2ggYW55IHNlcXVlbmNlIG9mIGFueSBjaGFyYWN0ZXIsIHplcm8gb3IgbW9yZSB0aW1lcy5cIiBUaGlzIGlzIHVzdWFsbHkgdXNlZCB0byBzZWFyY2ggZm9yIGFueXRoaW5nIGFmdGVyIHRoZSBpbml0aWFsIGNoYXJhY3Rlci5cblxuYFxcKGAgIEFuZCBmaW5hbGx5LCBhIGxpdGVyYWwgb3BlbmluZyBwYXJlbnRoZXNpcy4gVGhlIGJhY2tzbGFzaCBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc2NhcGVzIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgdGhlIHBhcmVudGhlc2lzLCBzbyB3ZSdyZSBhY3R1YWxseSBsb29raW5nIGZvciB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIuXG5cblNvLCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgSSBhbSBlc3NlbnRpYWxseSBsb29raW5nIGZvciBsaW5lcyBvciBzdHJpbmdzIHRoYXQgKmJlZ2luKiB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciwgZm9sbG93ZWQgYnkgYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMsIGFuZCAqZW5kaW5nKiB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIHNlYXJjaC4gSSdtIHRyeWluZyB0byBpZGVudGlmeSBzb21ldGhpbmcgc3BlY2lmaWMuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCB3b3VsZCBiZSB3aGF0IEknbSB1c2luZyBpdCBmb3IuIEFtIEkgcGFyc2luZyBjb2RlPyBMb29raW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgb3IgbWV0aG9kIGNhbGxzPyBBbSBJIHNlYXJjaGluZyB0aHJvdWdoIGEgdGV4dCBmaWxlIGZvciBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXM/IFRoZSBjb250ZXh0IGlzIHdoYXQgZ2l2ZXMgdGhpcyByZWdleCB0cnVlIG1lYW5pbmcuIEJ1dCB0aGUgcGF0dGVybiBpdHNlbGY/IEl0J3MgcHJldHR5IGNsZWFyIGFuZCBjb25jaXNlLCBldmVuIHdpdGhvdXQgYW55IGZ1cnRoZXIgY29udGV4dHVhbCBjbHVlcy4gTm93LCBJIG5lZWQgdG8ga25vdyB0aGUgKndoeSogb2YgdGhlIHF1ZXJ5IHRvIGFjdHVhbGx5IGludGVycHJldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoxNy4wOTY2OTg5MDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzE4Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16XS4qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MzY9c3RhdGljIHN0cnVjdCB0cGdfaW5zdGFuY2UgdHBnX2luc3RhbmNlc1tUUEdfSU5TVEFOQ0VTXTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozODpzdGF0aWMgREVGSU5FX01VVEVYKHRwZ19pbnN0YW5jZXNfbG9jayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZl91YXMgKnRvX2ZfdWFzKHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NDc6c3RhdGljIGludCBib3RfZW5xdWV1ZV9jbWRfY2J3KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjA6c3RhdGljIHZvaWQgYm90X3N0YXR1c19jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NzY6c3RhdGljIHZvaWQgYm90X2VucXVldWVfc2Vuc2VfY29kZShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MTpzdGF0aWMgdm9pZCBib3RfZXJyX2NvbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE0OnN0YXRpYyB2b2lkIGJvdF9zZW5kX2JhZF9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNDg6c3RhdGljIGludCBib3Rfc2VuZF9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQsIGJvb2wgbW92ZWRfZGF0YSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDpzdGF0aWMgaW50IGJvdF9zZW5kX3N0YXR1c19yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzLS8qIFJlYWQgcmVxdWVzdCBjb21wbGV0ZWQsIG5vdyB3ZSBoYXZlIHRvIHNlbmQgdGhlIENTVyAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5NDpzdGF0aWMgdm9pZCBib3RfcmVhZF9jb21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwOC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDk6c3RhdGljIGludCBib3Rfc2VuZF9yZWFkX3Jlc3BvbnNlKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQ4OnN0YXRpYyB2b2lkIHVzYmdfZGF0YV93cml0ZV9jbXBsKHN0cnVjdCB1c2JfZXAgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTpzdGF0aWMgaW50IHVzYmdfcHJlcGFyZV93X3JlcXVlc3Qoc3RydWN0IHVzYmdfY21kICosIHN0cnVjdCB1c2JfcmVxdWVzdCAqKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjUxOnN0YXRpYyBpbnQgYm90X3NlbmRfd3JpdGVfcmVxdWVzdChzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjczLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3NDpzdGF0aWMgaW50IGJvdF9zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKiwgdm9pZCAqLCB1bnNpZ25lZCBpbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNzY6c3RhdGljIHZvaWQgYm90X2NtZF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjc3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTMwNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozMDg6c3RhdGljIGludCBib3RfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzozNjU6c3RhdGljIHZvaWQgYm90X2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTM2Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0zODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MzkwOnN0YXRpYyB2b2lkIGJvdF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMzkxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo0MjI6c3RhdGljIGludCB1c2JnX2JvdF9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQyMy1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDcxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjQ3MjpzdGF0aWMgaW50IHRjbV90b191YXNwX3Jlc3BvbnNlKGVudW0gdGNtX3RtcnNwX3RhYmxlIGNvZGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTQ4OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo0ODk6c3RhdGljIHVuc2lnbmVkIGNoYXIgdWFzcF90b190Y21fZnVuYyhpbnQgY29kZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy00OTAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTEwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUxMTpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb25lX3N0cmVhbShzdHJ1Y3QgZl91YXMgKmZ1LCBzdHJ1Y3QgdWFzX3N0cmVhbSAqc3RyZWFtKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUxMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01MjUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTI2OnN0YXRpYyB2b2lkIHVhc3BfZnJlZV9jbWRyZXEoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01Mjcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTM3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjUzODpzdGF0aWMgdm9pZCB1YXNwX2NsZWFudXBfb2xkX2FsdChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTUzOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01NTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTU1OnN0YXRpYyB2b2lkIHVhc3Bfc3RhdHVzX2RhdGFfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo1NTc6c3RhdGljIGludCB1YXNwX3ByZXBhcmVfcl9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTU1OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy01OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NTkxOnN0YXRpYyB2b2lkIHVhc3BfcHJlcGFyZV9zdGF0dXMoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2MTQ6c3RhdGljIHZvaWQgdWFzcF9wcmVwYXJlX3Jlc3BvbnNlKHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTYxNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NjUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NjY2OnN0YXRpYyB2b2lkIHVzYmdfcmVsZWFzZV9jbWQoc3RydWN0IHNlX2NtZCAqc2VfY21kKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njc6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTY2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo2Njk6c3RhdGljIHZvaWQgdWFzcF9zdGF0dXNfZGF0YV9jbXBsKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy02NzAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzQ5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjc1MDpzdGF0aWMgaW50IHVhc3Bfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzUxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc2MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3NjI6c3RhdGljIGludCB1YXNwX3NlbmRfdG1fcmVzcG9uc2Uoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzYzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTc3My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3NzQ6c3RhdGljIGludCB1YXNwX3NlbmRfcmVhZF9yZXNwb25zZShzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03NzUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODE2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjgxNzpzdGF0aWMgaW50IHVhc3Bfc2VuZF93cml0ZV9yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTgxOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NTktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6ODYwOnN0YXRpYyBpbnQgdXNiZ19zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKiwgc3RydWN0IHVzYl9yZXF1ZXN0ICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg2MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo4NjI6c3RhdGljIHZvaWQgdWFzcF9jbWRfY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTg2My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy04NzYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6ODc3OnN0YXRpYyBpbnQgdWFzcF9hbGxvY19zdHJlYW1fcmVzKHN0cnVjdCBmX3VhcyAqZnUsIHN0cnVjdCB1YXNfc3RyZWFtICpzdHJlYW0pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtODc4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTkwNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5MDU6c3RhdGljIGludCB1YXNwX2FsbG9jX2NtZChzdHJ1Y3QgZl91YXMgKmZ1LCBpbnQgaSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy05MDYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTI2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjkyNzpzdGF0aWMgaW50IHVhc3BfcHJlcGFyZV9yZXFzKHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTk2My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo5NjQ6c3RhdGljIHZvaWQgdWFzcF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtOTY1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEwMTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTAxMzpzdGF0aWMgaW50IGdldF9jbWRfZGlyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNkYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMDE0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEwNzYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTA3NzpzdGF0aWMgdm9pZCB1c2JnX2RhdGFfd3JpdGVfY21wbChzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTA3OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjExMjM6c3RhdGljIGludCB1c2JnX3ByZXBhcmVfd19yZXF1ZXN0KHN0cnVjdCB1c2JnX2NtZCAqY21kLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTI0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTE1MTpzdGF0aWMgaW50IHVzYmdfc2VuZF9zdGF0dXNfcmVzcG9uc2Uoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE2Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTYzOnN0YXRpYyBpbnQgdXNiZ19zZW5kX3dyaXRlX3JlcXVlc3Qoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE3NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTc1OnN0YXRpYyBpbnQgdXNiZ19zZW5kX3JlYWRfcmVzcG9uc2Uoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTExNzYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTg3OnN0YXRpYyB2b2lkIHVzYmdfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTE4OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxMTg5OnN0YXRpYyB2b2lkIHVzYmdfc3VibWl0X3RtcihzdHJ1Y3QgdXNiZ19jbWQgKmNtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMTkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEyMDMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTIwNDpzdGF0aWMgdm9pZCB1c2JnX3N1Ym1pdF9jbWQoc3RydWN0IHVzYmdfY21kICpjbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTIwNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMjUxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTI6c3RhdGljIHZvaWQgdXNiZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzQyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEzNDM6c3RhdGljIHN0cnVjdCB1c2JnX2NtZCAqdXNiZ19nZXRfY21kKHN0cnVjdCBmX3VhcyAqZnUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTM0NC1cXHRcXHRzdHJ1Y3QgdGNtX3VzYmdfbmV4dXMgKnR2X25leHVzLCB1MzIgc2NzaV90YWcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xMzY0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEzNjU6c3RhdGljIHZvaWQgdXNiZ19yZWxlYXNlX2NtZChzdHJ1Y3Qgc2VfY21kICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEzNjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTM2NzpzdGF0aWMgaW50IHVzYmdfc3VibWl0X2NvbW1hbmQoc3RydWN0IGZfdWFzICpmdSwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTM2OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDY5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE0NzA6c3RhdGljIHZvaWQgYm90X2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNDcxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTUxOTpzdGF0aWMgaW50IGJvdF9zdWJtaXRfY29tbWFuZChzdHJ1Y3QgZl91YXMgKmZ1LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1MjAtXFx0XFx0dm9pZCAqY21kYnVmLCB1bnNpZ25lZCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNTcwOnN0YXRpYyBpbnQgdXNiZ19jaGVja190cnVlKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTcxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1NzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTU3NTpzdGF0aWMgY2hhciAqdXNiZ19nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU3Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNTgzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE1ODQ6c3RhdGljIHUxNiB1c2JnX2dldF90YWcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1ODUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTU5MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNTkxOnN0YXRpYyB2b2lkIHVzYmdfcmVsZWFzZV9jbWQoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE1OTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYwMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjAyOnN0YXRpYyB2b2lkIHVzYmdfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2MDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTYwOTpzdGF0aWMgdm9pZCB1c2JnX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2MzE6c3RhdGljIGNvbnN0IGNoYXIgKnVzYmdfY2hlY2tfd3duKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTYzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjQ1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NDY6c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY0Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzUyOnN0YXRpYyBpbnQgdGNtX3VzYmdfZHJvcF9uZXh1cyhzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc1My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzU0OnN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzk5OnN0YXRpYyBzdHJ1Y3Qgc2Vfd3duICp1c2JnX21ha2VfdHBvcnQoXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTgwMC1cXHRzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyAqdGYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4MjE6c3RhdGljIHZvaWQgdXNiZ19kcm9wX3Rwb3J0KHN0cnVjdCBzZV93d24gKnd3bilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4MzAtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTgzMTpzdGF0aWMgc3NpemVfdCB1c2JnX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCAgY2hhciAqcGFnZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODMyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE4Mzg9c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnVzYmdfd3duX2F0dHJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODQyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NDM6c3RhdGljIGludCB1c2JnX2F0dGFjaChzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTg0NDpzdGF0aWMgdm9pZCB1c2JnX2RldGFjaChzdHJ1Y3QgdXNiZ190cGcgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODQ2OnN0YXRpYyBpbnQgdXNiZ19lbmFibGVfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg0Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODYyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE4NjM6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE4NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg4Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODgzOnN0YXRpYyBpbnQgdXNiZ19hbGxvY19zZXNzX2NiKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODg0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBzZV9zZXNzaW9uICpzZV9zZXNzLCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTg5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxODkzOnN0YXRpYyBpbnQgdGNtX3VzYmdfbWFrZV9uZXh1cyhzdHJ1Y3QgdXNiZ190cGcgKnRwZywgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xODk0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE5MjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTkyOTpzdGF0aWMgaW50IHRjbV91c2JnX2Ryb3BfbmV4dXMoc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTkzMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xOTY2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE5Njc6c3RhdGljIHNzaXplX3QgdGNtX3VzYmdfdHBnX25leHVzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xOTY4LVxcdFxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIwMDU9c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKnVzYmdfYmFzZV9hdHRyc1tdID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAwOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDEwOnN0YXRpYyBpbnQgdXNiZ19wb3J0X2xpbmsoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnLCBzdHJ1Y3Qgc2VfbHVuICpsdW4pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMTk6c3RhdGljIHZvaWQgdXNiZ19wb3J0X3VubGluayhzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyMC1cXHRcXHRzdHJ1Y3Qgc2VfbHVuICpzZV9sdW4pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIwMjg6c3RhdGljIGludCB1c2JnX2NoZWNrX3N0b3BfZnJlZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjAyOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yMzA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9zdHJpbmdzICp0Y21fc3RyaW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE0OnN0YXRpYyBpbnQgdGNtX2JpbmQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCBzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjM5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzkzOnN0YXRpYyB2b2lkIHRjbV9jbGVhbnVwX29sZF9hbHQoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQwMjpzdGF0aWMgdm9pZCB0Y21fZGVsYXllZF9zZXRfYWx0X2RvbmUoc3RydWN0IGZfdWFzICpmdSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjQxMjpzdGF0aWMgYm9vbCB0Y21fZGVsYXllZF9zZXRfYWx0X2NhbmNlbGxlZChzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQyMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNDI0OnN0YXRpYyBib29sIHRjbV9jb21wbGV0ZV9kZWxheWVkX3N0YXR1cyhzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0MjUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNDY1OnN0YXRpYyBib29sIHRjbV9jYW5jZWxfZGVsYXllZF9zZXRfYWx0KHN0cnVjdCBmX3VhcyAqZnUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjQ2Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNDk2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI0OTc6c3RhdGljIHZvaWQgdGNtX2NhbmNlbF9kZWxheWVkX3NldF9hbHRfc3luYyhzdHJ1Y3QgZl91YXMgKmZ1KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI0OTgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjUxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNTE0OnN0YXRpYyB2b2lkIHRjbV9kZWxheWVkX3NldF9hbHQoc3RydWN0IHdvcmtfc3RydWN0ICp3cSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1NDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU0NzpzdGF0aWMgaW50IHRjbV9nZXRfYWx0KHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsIHVuc2lnbmVkIGludGYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU0OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTYxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1NjI6c3RhdGljIGludCB0Y21fc2V0X2FsdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLCB1bnNpZ25lZCBpbnRmLCB1bnNpZ25lZCBhbHQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjU2My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI1ODk6c3RhdGljIHZvaWQgdGNtX2Rpc2FibGUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNTkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjU5NzpzdGF0aWMgaW50IHRjbV9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI1OTgtXFx0XFx0Y29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYwODpzdGF0aWMgaW5saW5lIHN0cnVjdCBmX3RjbV9vcHRzICp0b19mX3RjbV9vcHRzKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYxNDpzdGF0aWMgdm9pZCB0Y21fYXR0cl9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRjbV9mdW5jX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzA6c3RhdGljIHZvaWQgdGNtX2ZyZWVfaW5zdChzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjQ4OnN0YXRpYyBpbnQgdGNtX3JlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NTk6c3RhdGljIHZvaWQgdGNtX3VucmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjYwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MDpzdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NzEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjgxOnN0YXRpYyB2b2lkIHVzYmdfZGV0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2ODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjkwOnN0YXRpYyBpbnQgdGNtX3NldF9uYW1lKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYsIGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY5MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDM6c3RhdGljIHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKnRjbV9hbGxvY19pbnN0KHZvaWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3Mzg6c3RhdGljIHZvaWQgdGNtX2ZyZWUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzM5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NDUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc0NjpzdGF0aWMgdm9pZCB0Y21fdW5iaW5kKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNzQ3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc1NTpzdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbiAqdGNtX2FsbG9jKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmZpKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3NTYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9Mjc5Mz1ERUNMQVJFX1VTQl9GVU5DVElPTih0Y20sIHRjbV9hbGxvY19pbnN0LCB0Y21fYWxsb2MpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6Mjc5NTpzdGF0aWMgaW50IF9faW5pdCB0Y21faW5pdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3OTYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgwOC19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgwOTptb2R1bGVfaW5pdCh0Y21faW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyODExOnN0YXRpYyB2b2lkIF9fZXhpdCB0Y21fZXhpdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI4MTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjgxNjptb2R1bGVfZXhpdCh0Y21fZXhpdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjgxNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MTcuMTU0MDI5MTA1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODU2MjM5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgdXNiZ19tYWtlX3RwZ2AgYW5kIGB1c2JnX2Ryb3BfdHBnYCBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYCBzdHJ1Y3R1cmUgYXMgYGZhYnJpY19tYWtlX3RwZ2AgYW5kIGBmYWJyaWNfZHJvcF90cGdgLiBUaGlzIGltcGxpZXMgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGJ5IHRoZSB0YXJnZXQgY29yZSBDb25maWdGUyBjb2RlLCB3aGljaCBpcyBnb29kLiBGb3IgbXkgYW5hbHlzaXMsIEknbGwgcmVmZXIgdG8gdGhlbSBzaW1wbHkgYXMgYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AgZm9yIGVhc2Ugb2YgcmVmZXJlbmNlIOKAkyBGb2N1c1N5bWJvbHMsIGlmIHlvdSB3aWxsLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdlIGhhdmUgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gYFVTQl9DT05GSUdGU19GX1RDTWAgc2VlbXMgdG8gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBpcyB3aGF0IHdlIGV4cGVjdC4gYFRBUkdFVF9DT1JFYCBpbiB0dXJuIGlzIHNlbGVjdGluZyBgQ09ORklHRlNfRlNgLiBUaGlzIGxvb2tzLCBhdCBmaXJzdCBnbGFuY2UsIGxpa2UgYSBjb21wcmVoZW5zaXZlIHNldCBvZiBvcHRpb25zLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIGBVU0JfQ09ORklHRlNgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24ndCBnb2luZyB0byBjYXVzZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IHRoYXQgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA1OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyMi4yMzk2NTU5ODdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzYwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MjIuMjk0NDI1OTYzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ5NDg2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIC0gQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGludGVncmF0aW5nIGEgVVNCIEdhZGdldC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgbmF0dXJhbGx5LCB0aGF0IHdlJ2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc3BlY2lmaWMgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3IgZnVuY3Rpb24gc2V0dXAsIGxldCdzIHRha2UgYSBiZWF0IGFuZCBxdWlja2x5IHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzLiBXZSBjYW4ndCBhZmZvcmQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYnVpbGQgZXJyb3JzIGxhdGVyIGR1ZSB0byBhIG1pc3NpbmcgY29tcG9uZW50LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIGZvciBgVVNCX0dBREdFVGAgd2lsbCByZXZlYWwgYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzIHRoYXQgbmVlZCBjb25zaWRlcmF0aW9uLiBXZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCB0byBhbGxvdyB0aGUgbmV4dCBzdGFnZSBvZiBjb25maWcgdG8gaGFwcGVuIGFzIHNlYW1sZXNzbHkgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzY3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MjUuNDE5Mzc3NzI4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdCMgIC0gUGVyaXBoZXJhbHMgKGxpa2UgUERBcykgbmVlZCBDT05GSUdfVVNCX0dBREdFVCAod2l0aCBcXFwiQlxcXCIgamFja3MpLlxcbiAgMTE6XFx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxcbiAgMTI6XFx0I1xcbiAgMTM6XFx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXFxcIk1pbmktQUJcXFwiIGphY2ssIHN5c3RlbXMgd2l0aFxcbiAgMTQ6XFx0IyBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXIgY2FuIGFsc28gc3VwcG9ydCBcXFwiVVNCIE9uLXRoZS1Hb1xcXCIgKENPTkZJR19VU0JfT1RHKS5cXG4gIDE1OlxcdCNcXG4gIDE2OlxcdFxcbiAgMTc6XFx0bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IFVTQl9DT01NT05cXG4gIDIwOlxcdFxcdHNlbGVjdCBOTFNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgIFVTQiBpcyBhIGhvc3QvZGV2aWNlIHByb3RvY29sLCBvcmdhbml6ZWQgd2l0aCBvbmUgaG9zdCAoc3VjaCBhcyBhXFxuICAyMzpcXHRcXHQgICBQQykgY29udHJvbGxpbmcgdXAgdG8gMTI3IHBlcmlwaGVyYWwgZGV2aWNlcy5cXG4gIDI0OlxcdFxcdCAgIFRoZSBVU0IgaGFyZHdhcmUgaXMgYXN5bW1ldHJpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHNldCB1cDpcXG4gIDI1OlxcdFxcdCAgIHlvdSBjYW4ndCBjb25uZWN0IGEgXFxcInRvLXRoZS1ob3N0XFxcIiBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgICBMaW51eCBjYW4gcnVuIGluIHRoZSBob3N0LCBvciBpbiB0aGUgcGVyaXBoZXJhbC4gIEluIGJvdGggY2FzZXNcXG4gIDI4OlxcdFxcdCAgIHlvdSBuZWVkIGEgbG93IGxldmVsIGJ1cyBjb250cm9sbGVyIGRyaXZlciwgYW5kIHNvbWUgc29mdHdhcmVcXG4gIDI5OlxcdFxcdCAgIHRhbGtpbmcgdG8gaXQuICBQZXJpcGhlcmFsIGNvbnRyb2xsZXJzIGFyZSBvZnRlbiBkaXNjcmV0ZSBzaWxpY29uLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyNS40MTk0NjU4OTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzMTA2MTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBHYWRnZXQgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgVVNCIGdhZGdldCBjb25maWd1cmF0aW9ucy4gVGhlIGZpcnN0IHRoaW5nIEknbSBub3RpbmcgaXMgdGhhdCBgVVNCX0dBREdFVGAgaXRzZWxmIGlzIGRlcGVuZGVuY3ktZnJlZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IGRvZXNuJ3QgdGVsbCB0aGUgd2hvbGUgc3RvcnkuIFRoZSByZWxldmFudCBjb25maWdzIHRoZW4gYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBUQVJHRVRfQ09SRWAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gTm93LCB0byBhY3R1YWxseSAqdGVzdCogdGhlc2UgZ2FkZ2V0cyBlZmZlY3RpdmVseSwgSSBuZWVkIHRvIGNvbnNpZGVyIGhvc3QgY29udHJvbGxlcnMuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgZG8gSSBuZWVkIGBVU0JfRFVNTVlfSENEYCBmb3IgdGVzdGluZz8gR2l2ZW4gc3l6a2FsbGVyJ3MgdHlwaWNhbCBhcHByb2FjaCwgaXQgdXN1YWxseSB1dGlsaXplcyBgVVNCX0RVTU1ZX0hDRGAgb3IgcG90ZW50aWFsbHkgYFVTQl9SQVdfR0FER0VUYCBmb3IgdGhpcyBwdXJwb3NlLiBJIHNob3VsZCBjaGVjayB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgaXMgZGVmaW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlldyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyOS41NTA1MzMwMjlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzY1NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRFVNTVlfSENEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXFxcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODoyOS42MDg5MDY5NDVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1MTE2NDU5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFVEQyBLY29uZmlnKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFVTQiBEZXZpY2UgQ29udHJvbGxlciAoVURDKSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gTm93LCB3aGVyZSB3YXMgSSBsYXN0IGxvb2tpbmc/IEFoLCB5ZXMsIGxpbmUgNDI4IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgVURDIGRyaXZlcnMgYXJlIGJyb3VnaHQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIHJlbWluZCBteXNlbGYgb2YgdGhlIGRldGFpbHMgb2YgdGhlIFVEQyBzdWJzeXN0ZW0gS2NvbmZpZy4gSG9wZWZ1bGx5LCB0aGlzIHByb3ZpZGVzIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODozMi44NjAwNzQ3NTJaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuIDQ0MDpcXHRcXHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHQgIFNpbmNlIHN1Y2ggYSBnYWRnZXQgc2lkZSBkcml2ZXIgbmVlZHMgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBob3N0XFxuIDQ0MzpcXHRcXHQgIHNpZGUgTGludXgtVVNCIGRldmljZSBkcml2ZXIsIHRoaXMgbWF5IGhlbHAgdG8gZGVidWcgYm90aCBzaWRlc1xcbiA0NDQ6XFx0XFx0ICBvZiBhIFVTQiBwcm90b2NvbCBzdGFjay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MzIuODYwMTcxNjAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjc4ODI2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgVVNCIEdhZGdldCBUZXN0aW5nIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBjb25maWd1cmUgdGhpcyB0ZXN0IGVudmlyb25tZW50IGZvciBVU0IgZ2FkZ2V0cywgYW5kIFN5emthbGxlciBzZWVtcyBsaWtlIHRoZSBnby10byByZXNvdXJjZSBmb3IgYSBzb2xpZCBmb3VuZGF0aW9uLiBJIHJlY2FsbCBzZWVpbmcgdGhlbSBsZXZlcmFnZSBgVVNCX0RVTU1ZX0hDRGAgcXVpdGUgb2Z0ZW4gaW4gdGhlaXIgdGVzdHMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBzdHJvbmcgY29udGVuZGVyIGZvciBpbmNsdXNpb24gaW4gbXkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gaXRzIHByb3ZlbiB0cmFjayByZWNvcmQgaW4gdGhhdCBjb250ZXh0LiBCdXQgaG9sZCBvbiwgSSBzZWVtIHRvIHJlbWVtYmVyIHNlZWluZyBgVVNCX1JBV19HQURHRVRgIHVzZWQgYWxvbmdzaWRlIGl0LiBJdCdzIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFVTQl9SQVdfR0FER0VUYCBjb25maWd1cmF0aW9uLCBiZWNhdXNlIGlmIGl0J3MgYWxzbyBhIHN0YXBsZSBpbiBTeXprYWxsZXLigJlzIHRlc3RpbmcgbWV0aG9kb2xvZ3ksIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGhvdyBpdCBjb21wbGVtZW50cyBgVVNCX0RVTU1ZX0hDRGAuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIGl0cyBmdW5jdGlvbmFsaXRpZXMgaXMgbm93IHdhcnJhbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwMTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjM2Ljg4ODA1NzI3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU4NzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6MzYuOTQ3NjUzOTI2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODkyOTExODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGdvIGRlZXAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIEkgcmVtZW1iZXIgdGhlcmUncyBzb21lIGludGVyZXN0aW5nIHN0dWZmIGFyb3VuZCB0aGUgbGVnYWN5IGdhZGdldCBpbXBsZW1lbnRhdGlvbiBJIG5lZWQgdG8gY2hlY2suIFJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA1MTYuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc3BlY2lmaWMgc2V0dGluZ3MgSSdtIGludGVyZXN0ZWQgaW4uIEknbSBhaW1pbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgb3B0aW9ucyBwcmVzZW50ZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mzk4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6MDg6NDQuNjM2OTQ4MDA1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTA6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDUxMTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNTEyOlxcdFxcbiA1MTM6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiA1MTQ6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ193ZWJjYW1cXFwiLlxcbiA1MTU6XFx0XFxuIDUxNjpcXHRjb25maWcgVVNCX1JBV19HQURHRVRcXG4gNTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG4gNTE4OlxcdFxcdGhlbHBcXG4gNTE5OlxcdFxcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxcbiA1MjA6XFx0XFx0ICBjb250cm9sIG92ZXIgdGhlIGdhZGdldCdzIGNvbW11bmljYXRpb24gcHJvY2Vzcy5cXG4gNTIxOlxcdFxcbiA1MjI6XFx0XFx0ICBMaWtlIGFueSBvdGhlciBnYWRnZXQgZHJpdmVyLCBSYXcgR2FkZ2V0IGltcGxlbWVudHMgVVNCIGRldmljZXMgdmlhXFxuIDUyMzpcXHRcXHQgIHRoZSBVU0IgZ2FkZ2V0IEFQSS4gVW5saWtlIG1vc3QgZ2FkZ2V0IGRyaXZlcnMsIFJhdyBHYWRnZXQgZG9lcyBub3RcXG4gNTI0OlxcdFxcdCAgaW1wbGVtZW50IGFueSBjb25jcmV0ZSBVU0IgZnVuY3Rpb25zIGl0c2VsZiBidXQgcmVxdWlyZXMgdXNlcnNwYWNlXFxuIDUyNTpcXHRcXHQgIHRvIGRvIHRoYXQuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vdXNiL3Jhdy1nYWRnZXQucnN0IGZvciBkZXRhaWxzLlxcbiA1Mjg6XFx0XFxuIDUyOTpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjA4OjQ0LjYzNzA0MDQ0NVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzgzMjA0NDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVENNIENvbmZpZ2ZzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIGBmX3RjbS5jYCwgd2hpY2ggaXMgYSBDb25maWdGUyBmdW5jdGlvbi4gTXkgbWFpbiBjb25jZXJuIGhlcmUgcmV2b2x2ZXMgYXJvdW5kIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgbmF0dXJhbGx5LiBJdCdzIGEgZ29vZCBpZGVhIHRvIGluY2x1ZGUgYFVTQl9EVU1NWV9IQ0RgIGFzIHdlbGwsIGp1c3QgaW4gY2FzZS4gTGV0J3Mgc3RhcnQgYnkgbGlzdGluZyB0aGUga2V5IGNvbmZpZ3M6XG5cbiogICBgVVNCX0dBREdFVGBcbiogICBgVVNCX0NPTkZJR0ZTYFxuKiAgIGBUQVJHRVRfQ09SRWBcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYFxuKiAgIGBVU0JfRFVNTVlfSENEYFxuXG5Ob3csIGxldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVENNYC4gSXQgcmVsaWVzIG9uIGBUQVJHRVRfQ09SRWAgYW5kIGBVU0JfQ09ORklHRlNgLiBgVEFSR0VUX0NPUkVgIGRlcGVuZHMgb24gYEJMT0NLYCwgYW5kIGBVU0JfQ09ORklHRlNgIG5lZWRzIGBVU0JfR0FER0VUYC4gYFVTQl9EVU1NWV9IQ0RgIGhhcyBkZXBlbmRlbmNpZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLiBTbyB0aGUgZnVsbCBzZXQgb2YgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBjb25zaWRlciBhcmU6IGBVU0JgLCBgQkxPQ0tgLCBgVVNCX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYW5kIGBVU0JfRFVNTVlfSENEYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2JnX21ha2VfdHBnYCBhbmQgYHVzYmdfZHJvcF90cGdgLCBhbmQgb25seSB0aG9zZSBmdW5jdGlvbnMuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIExldCdzIGNvbmZpcm0gaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMuIFllcywgdGhleSBhcmUuIEFuZCBhcmUgdGhleSBpbmxpbmVkPyBObywgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGB1c2JnX29wc2AuIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCB3aWxsIG5vdCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgY2FuZGlkYXRlcyBmb3IgZm9jdXMgc3ltYm9scy5cblxuSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIGNvZGUgbG9naWM7IHRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gYHVzYmdfbWFrZV90cGdgIGFuZCBgdXNiZ19kcm9wX3RwZ2AuIFRoaXMgcmFjZSBpbnZvbHZlcyB0aGUgY2hlY2sgb2YgYG9wdHMtXHUwMDNlaGFzX2RlcGAgYW5kIHRoZSB1c2Ugb2YgYG9wdHMtXHUwMDNlZGVwZW5kZW50YC4gVGhlIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBieSBpbnRyb2R1Y2luZyBhIGxvY2FsIHZhcmlhYmxlIHRvIHJlYWQgYGhhc19kZXAgPSBvcHRzLVx1MDAzZWhhc19kZXA7YCBhbmQgdXNlcyB0aGF0IGNvcHkgaW5zdGVhZCBvZiB0aGUgdm9sYXRpbGUgdmFyaWFibGUuIEFkZGl0aW9uYWxseSwgaXQgcmVvcmRlcnMgdGhlIGBjb25maWdfaXRlbV9nZXRgIGFuZCBgbXV0ZXhfdW5sb2NrYCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGdlbnVpbmUgYnVnLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBmaXggaXMgc29saWQuXG5cblRvIHN1bW1hcml6ZSwgbXkgc3VnZ2VzdGVkIGNvbmZpZ3VyYXRpb25zIGFyZTpcblxuKiAgIGBVU0JfR0FER0VUYFxuKiAgIGBVU0JfQ09ORklHRlNgXG4qICAgYFRBUkdFVF9DT1JFYFxuKiAgIGBVU0JfQ09ORklHRlNfRl9UQ01gXG4qICAgYFVTQl9EVU1NWV9IQ0RgXG5cbkFuZCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTpcblxuKiAgIGB1c2JnX21ha2VfdHBnYFxuKiAgIGB1c2JnX2Ryb3BfdHBnYFxuXG5NeSBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCJcblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTYwLCJPdXRwdXRUb2tlbnMiOjE0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDowODo1OC40NjkwOTEwMjlaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTY1MjA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiLFxuICAgIFwidXNiZ19kcm9wX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gY29uZmlnZnMgZGVwZW5kZW5jeSBoYW5kbGluZyBmb3IgdGhlIFVTQiBnYWRnZXQgVENNIGZ1bmN0aW9uLiBJdCBtb2RpZmllcyB1c2JnX21ha2VfdHBnIGFuZCB1c2JnX2Ryb3BfdHBnIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgdmVyaWZ5IHRoZSBmaXguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[1] Phase: Succeeded StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 14:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 14:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2] Phase: Succeeded StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 14:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 14:09:10 +0000 UTC FinishedAt: 2026-08-03 14:09:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvsks7/series-workflowvsks7-convert-artifact-2284482858/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 14:09:20 +0000 UTC FinishedAt: 2026-08-03 14:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 14:09:20 +0000 UTC FinishedAt: 2026-08-03 14:29:23 +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:*774488c1-ca03-4d6d-896e-aedef5c7ff8e,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-workflowvsks7/series-workflowvsks7-convert-artifact-2284482858/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": "5cc82bd5-0bb5-4e1c-bf36-36633798720d", "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-workflowvsks7/series-workflowvsks7-build-action-3966757528/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 14:09:20 +0000 UTC FinishedAt: 2026-08-03 14:29:13 +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:*774488c1-ca03-4d6d-896e-aedef5c7ff8e,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-workflowvsks7/series-workflowvsks7-convert-artifact-2284482858/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": "5cc82bd5-0bb5-4e1c-bf36-36633798720d", "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-workflowvsks7/series-workflowvsks7-build-action-3966757528/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 14:29:23 +0000 UTC FinishedAt: 2026-08-03 14:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 14:29:23 +0000 UTC FinishedAt: 2026-08-03 14:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 14:29:23 +0000 UTC FinishedAt: 2026-08-03 14:29:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 14:29:23 +0000 UTC FinishedAt: 2026-08-03 14:29:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvsks7/series-workflowvsks7-convert-artifact-643137861/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 14:29:34 +0000 UTC FinishedAt: 2026-08-03 14:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 14:29:34 +0000 UTC FinishedAt: 2026-08-03 14:31:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5cc82bd5-0bb5-4e1c-bf36-36633798720d,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-workflowvsks7/series-workflowvsks7-build-action-3966757528/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-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 14:31:45 +0000 UTC FinishedAt: 2026-08-03 14:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 14:31:45 +0000 UTC FinishedAt: 2026-08-03 14:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 14:31:45 +0000 UTC FinishedAt: 2026-08-03 14:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 14:31:45 +0000 UTC FinishedAt: 2026-08-03 14:48:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*774488c1-ca03-4d6d-896e-aedef5c7ff8e,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-workflowvsks7/series-workflowvsks7-convert-artifact-643137861/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": "4a507270-e2a2-4c60-9343-e2bbeaffee0e", "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-workflowvsks7/series-workflowvsks7-build-action-2485183889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 14:31:45 +0000 UTC FinishedAt: 2026-08-03 14:48:11 +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:*774488c1-ca03-4d6d-896e-aedef5c7ff8e,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-workflowvsks7/series-workflowvsks7-convert-artifact-643137861/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": "4a507270-e2a2-4c60-9343-e2bbeaffee0e", "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-workflowvsks7/series-workflowvsks7-build-action-2485183889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 14:48:21 +0000 UTC FinishedAt: 2026-08-03 14:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 14:48:21 +0000 UTC FinishedAt: 2026-08-03 14:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 14:48:21 +0000 UTC FinishedAt: 2026-08-03 14:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 14:48:21 +0000 UTC FinishedAt: 2026-08-03 14:50:20 +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:*4a507270-e2a2-4c60-9343-e2bbeaffee0e,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-workflowvsks7/series-workflowvsks7-build-action-2485183889/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-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"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:*5cc82bd5-0bb5-4e1c-bf36-36633798720d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4a507270-e2a2-4c60-9343-e2bbeaffee0e,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-workflowvsks7/series-workflowvsks7-build-action-3966757528/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-workflowvsks7/series-workflowvsks7-build-action-2485183889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 14:50:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 14:50:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"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-workflowvsks7/series-workflowvsks7-convert-artifact-4042210762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 14:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 14:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 14:50:29 +0000 UTC FinishedAt: 2026-08-03 14:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 14:50:39 +0000 UTC FinishedAt: 2026-08-03 17:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvsks7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg","usbg_drop_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_DUMMY_HCD"],"series_id":"07ad05d8-2f62-492d-bffe-16bd6f11caed","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 14:50:39 +0000 UTC FinishedAt: 2026-08-03 17:53:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5cc82bd5-0bb5-4e1c-bf36-36633798720d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4a507270-e2a2-4c60-9343-e2bbeaffee0e,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-workflowvsks7/series-workflowvsks7-build-action-3966757528/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-workflowvsks7/series-workflowvsks7-build-action-2485183889/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-workflowvsks7/series-workflowvsks7-convert-artifact-4042210762/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,}