Name: series-workflowgvbqs Phase: Failed StartedAt: 2026-07-28 20:57:38 +0000 UTC FinishedAt: 2026-07-28 21:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvbqs[0] Phase: Succeeded StartedAt: 2026-07-28 20:57:38 +0000 UTC FinishedAt: 2026-07-28 21:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvbqs[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 20:57:38 +0000 UTC FinishedAt: 2026-07-28 21:23:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNmODYyNjUwNjM4YzA4NGE2Mzg3NDAyM2U2YmIyOTc1YWI5ZmQyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbmluZGV4IDhlM2YzNDVkZDlhYWMuLjkyODJlMTNjY2ZiMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbkBAIC0yNjMxLDYgJiM0MzsyNjMxLDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfdHhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqdHhfcmluZylcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLFxuIFx0XHRcdCAgICAgIGJvb2wgZXh0ZW5kZWQpXG4ge1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihyeF9yaW5nLVx1MDAzZW5kZXYpO1xuIFx0aW50IGlkeCA9IHJ4X3JpbmctXHUwMDNlaW5kZXg7XG4gXHR1MzIgcmJtciA9IDA7XG4gXG5AQCAtMjY2Niw2ICYjNDM7MjY2Nyw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRpZiAocnhfcmluZy1cdTAwM2VuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cmJtciB8PSBFTkVUQ19SQk1SX1ZURTtcbiBcbiYjNDM7XHRpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0cmJtciB8PSBFTkVUQ19SQk1SX0NNO1xuJiM0MztcbiBcdHJ4X3JpbmctXHUwMDNlcmNpciA9IGh3LVx1MDAzZXJlZyAmIzQzOyBFTkVUQ19CRFIoUlgsIGlkeCwgRU5FVENfUkJDSVIpO1xuIFx0cnhfcmluZy1cdTAwM2VpZHIgPSBody1cdTAwM2VyZWcgJiM0MzsgRU5FVENfU0lSWElEUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Li4zNDFmNTQ4NTZkZWJkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5AQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XG4gZW51bSBlbmV0Y19mbGFnc19iaXQge1xuIFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxuIFx0RU5FVENfVFhfRE9XTixcbiYjNDM7XHRFTkVUQ19SWEJEUl9DTSxcbiB9O1xuIFxuIC8qIGludGVycnVwdCBjb2FsZXNjaW5nIG1vZGVzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0MzdhMTViYmI0N2JhLi44ZGI1YTQ3ZmRiYWU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbkBAIC03NDgsNiAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcnhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgYm9vbCByeF9wYXVzZSlcbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpXG4ge1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi1cdTAwM2VzaS1cdTAwM2VuZGV2KTtcbiBcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcbiBcdHUzMiBpbml0X3F1YW50YSA9IDAsIHJlZnJlc2hfcXVhbnRhID0gMDtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbkBAIC03NjQsNiAmIzQzOzc2NSw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzXG4gXHR9XG4gXG4gXHRpZiAodHhfcGF1c2UpIHtcbiYjNDM7XHRcdHNldF9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiBcdFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcbiBcdFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXG4gXHRcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxuQEAgLTc4Myw2ICYjNDM7Nzg2LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNcbiBcdFx0ICovXG4gXHRcdHBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4gXHRcdHBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3IocGYtXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcbkBAIC05NDksNyAmIzQzOzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0XHRcdCAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZyk7XG4mIzQzO1x0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcbiBcbiYjNDM7XHRwcml2ID0gbmV0ZGV2X3ByaXYocGYtXHUwMDNlc2ktXHUwMDNlbmRldik7XG4mIzQzO1x0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKTtcbiBcdGVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7XG4gXHRlbmV0YzRfbWFjX3R4X2dyYWNlZnVsX3N0b3AocGYpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5pbmRleCAyZDY4N2JiOGMzYTA2Li4zZmI2ODlkMjdhMDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNjMzLDYgJiM0Mzs2MzMsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdH1cbiBcbiBcdGlmICh0eF9wYXVzZSkge1xuJiM0MztcdFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4mIzQzO1xuIFx0XHQvKiBXaGVuIHRoZSBwb3J0IGZpcnN0IGVudGVycyBjb25nZXN0aW9uLCBzZW5kIGEgUEFVU0UgcmVxdWVzdFxuIFx0XHQgKiB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWFudGEuIFdoZW4gdGhlIHBvcnQgZXhpdHNcbiBcdFx0ICogY29uZ2VzdGlvbiwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNlbmQgYSBQQVVTRSBmcmFtZSB3aXRoXG5AQCAtNjUyLDYgJiM0Mzs2NTQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0ICovXG4gXHRcdHBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4gXHRcdHBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDX1BNMF9QQVVTRV9RVUFOVEEsIGluaXRfcXVhbnRhKTtcbkBAIC02ODMsNiAmIzQzOzY4Nyw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BsX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHNpLVx1MDAzZW5kZXYpO1xuJiM0MztcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoc2ktXHUwMDNlaHdfZmVhdHVyZXMgXHUwMDI2IEVORVRDX1NJX0ZfUUJVKVxuIFx0XHRlbmV0Y19tbV9saW5rX3N0YXRlX3VwZGF0ZShwcml2LCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjNmODYyNjUwNjM4YzA4NGE2Mzg3NDAyM2U2YmIyOTc1YWI5ZmQyMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwppbmRleCA4ZTNmMzQ1ZGQ5YWFjLi45MjgyZTEzY2NmYjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwpAQCAtMjYzMSw2ICYjNDM7MjYzMSw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3R4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcpCiBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLAogCQkJICAgICAgYm9vbCBleHRlbmRlZCkKIHsKJiM0MzsJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHJ4X3JpbmctJmd0O25kZXYpOwogCWludCBpZHggPSByeF9yaW5nLSZndDtpbmRleDsKIAl1MzIgcmJtciA9IDA7CiAKQEAgLTI2NjYsNiAmIzQzOzI2NjcsOSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLAogCWlmIChyeF9yaW5nLSZndDtuZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkKIAkJcmJtciB8PSBFTkVUQ19SQk1SX1ZURTsKIAomIzQzOwlpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpKQomIzQzOwkJcmJtciB8PSBFTkVUQ19SQk1SX0NNOwomIzQzOwogCXJ4X3JpbmctJmd0O3JjaXIgPSBody0mZ3Q7cmVnICYjNDM7IEVORVRDX0JEUihSWCwgaWR4LCBFTkVUQ19SQkNJUik7CiAJcnhfcmluZy0mZ3Q7aWRyID0gaHctJmd0O3JlZyAmIzQzOyBFTkVUQ19TSVJYSURSOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCmluZGV4IDA0YTVkZDVlYTZjNzQuLjM0MWY1NDg1NmRlYmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCkBAIC00MTksNiAmIzQzOzQxOSw3IEBAIGVudW0gZW5ldGNfYWN0aXZlX29mZmxvYWRzIHsKIGVudW0gZW5ldGNfZmxhZ3NfYml0IHsKIAlFTkVUQ19UWF9PTkVTVEVQX1RTVEFNUF9JTl9QUk9HUkVTUyA9IDAsCiAJRU5FVENfVFhfRE9XTiwKJiM0MzsJRU5FVENfUlhCRFJfQ00sCiB9OwogCiAvKiBpbnRlcnJ1cHQgY29hbGVzY2luZyBtb2RlcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jCmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKQEAgLTc0OCw2ICYjNDM7NzQ4LDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yeF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIHJ4X3BhdXNlKQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpCiB7CiYjNDM7CXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi0mZ3Q7c2ktJmd0O25kZXYpOwogCXUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDsKIAl1MzIgaW5pdF9xdWFudGEgPSAwLCByZWZyZXNoX3F1YW50YSA9IDA7CiAJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKQEAgLTc2NCw2ICYjNDM7NzY1LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXMKIAl9CiAKIAlpZiAodHhfcGF1c2UpIHsKJiM0MzsJCXNldF9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwomIzQzOwogCQkvKiBXaGVuIHRoZSBwb3J0IGZpcnN0IGVudGVycyBjb25nZXN0aW9uLCBzZW5kIGEgUEFVU0UgcmVxdWVzdAogCQkgKiB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWFudGEuIFdoZW4gdGhlIHBvcnQgZXhpdHMKIAkJICogY29uZ2VzdGlvbiwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNlbmQgYSBQQVVTRSBmcmFtZSB3aXRoCkBAIC03ODMsNiAmIzQzOzc4Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzCiAJCSAqLwogCQlwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFOwogCQlwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgJmFtcDtwcml2LSZndDtmbGFncyk7CiAJfQogCiAJZW5ldGNfcG9ydF9tYWNfd3IocGYtJmd0O3NpLCBFTkVUQzRfUE1fUEFVU0VfUVVBTlRBKDApLCBpbml0X3F1YW50YSk7CkBAIC05NDksNyAmIzQzOzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAkJCQkgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpOwomIzQzOwlzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2OwogCiYjNDM7CXByaXYgPSBuZXRkZXZfcHJpdihwZi0mZ3Q7c2ktJmd0O25kZXYpOwomIzQzOwljbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwogCWVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7CiAJZW5ldGM0X21hY190eF9ncmFjZWZ1bF9zdG9wKHBmKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKaW5kZXggMmQ2ODdiYjhjM2EwNi4uM2ZiNjg5ZDI3YTAyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKQEAgLTYzMyw2ICYjNDM7NjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAJfQogCiAJaWYgKHR4X3BhdXNlKSB7CiYjNDM7CQlzZXRfYml0KEVORVRDX1JYQkRSX0NNLCAmYW1wO3ByaXYtJmd0O2ZsYWdzKTsKJiM0MzsKIAkJLyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3QKIAkJICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzCiAJCSAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aApAQCAtNjUyLDYgJiM0Mzs2NTQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAkJICovCiAJCXBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7CiAJCXBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFOwomIzQzOwl9IGVsc2UgewomIzQzOwkJY2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCAmYW1wO3ByaXYtJmd0O2ZsYWdzKTsKIAl9CiAKIAllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpOwpAQCAtNjgzLDYgJiM0Mzs2ODcsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoc2ktJmd0O25kZXYpOwomIzQzOwljbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKHNpLSZndDtod19mZWF0dXJlcyAmYW1wOyBFTkVUQ19TSV9GX1FCVSkKIAkJZW5ldGNfbW1fbGlua19zdGF0ZV91cGRhdGUocHJpdiwgZmFsc2UpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRU5FVEMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgYGVuZXRjYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvYCBkaXJlY3RvcnkuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBFTkVUQ19SWEJEUl9DTWAsIHRvIHRoZSBgcHJpdi0mZ3Q7ZmxhZ3NgIHN0cnVjdHVyZS4gSSBzZWUgaXQgYmVpbmcgc2V0IGFuZCBjbGVhcmVkIHdpdGhpbiB0aGUgYGVuZXRjNF9zZXRfdHhfcGF1c2VgLCBgZW5ldGM0X3BsX21hY19saW5rX2Rvd25gLCBgZW5ldGNfcGxfbWFjX2xpbmtfdXBgLCBhbmQgYGVuZXRjX3BsX21hY19saW5rX2Rvd25gIGZ1bmN0aW9ucy4gVGhlbiwgdGhpcyBmbGFnIGlzIHVzZWQgd2l0aGluIGBlbmV0Y19zZXR1cF9yeGJkcmAgdG8gY29udHJvbCB0aGUgc2V0dGluZyBvZiBgRU5FVENfUkJNUl9DTWAgaW4gYHJibXJgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGUgYGVuZXRjYCBkcml2ZXIgaGFuZGxlcyB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBJIGtub3cgaXMgYW4gRXRoZXJuZXQgY29udHJvbGxlciwgb2Z0ZW4gZm91bmQgaW4gTlhQIExheWVyc2NhcGUgU29Dcy4gQW5kIHRoaXMgaXMgdHlwaWNhbGx5IGEgUENJZSBkZXZpY2UuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgdXAgaXMgd2hldGhlciB0aGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgZGlmZmljdWx0LCBpZiBub3QgaW1wb3NzaWJsZSwgdG8gZW11bGF0ZSBpbiBRRU1VLiBGcmVlc2NhbGUgRU5FVEMsIG5vdyBOWFAsIGlzIGRlZmluaXRlbHkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLiBTbywgdGhlIGZpcnN0IGFzc3VtcHRpb24gaXMgdGhhdCBpdCAqaXMqIGxpa2VseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgbm90IHNvbWV0aGluZyBlYXNpbHkgZW11bGF0ZWQuCgpIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IFFFTVUgZW11bGF0ZXMgc29tZSBOWFAgaGFyZHdhcmUsIGJ1dCBJIHVzdWFsbHkgaGF2ZW4mIzM5O3Qgc2VlbiBFTkVUQyBlbXVsYXRlZCBkaXJlY3RseSB3aXRoaW4gdGhlIHN0YW5kYXJkIHg4NiBvciBhcm02NCB2aXJ0IG1hY2hpbmVzLiBMZXQgbWUgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBRRU1VIGVtdWxhdGlvbiBmb3IgRU5FVEMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzb3VyY2VzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnl0aGluZy4KCkkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBFTkVUQyBpcyBhIFBDSWUgZW5kcG9pbnQgb24gdGhlIExTMTAyOEEgYW5kIHNpbWlsYXIgTlhQIFNvQ3MuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGl0IHJlbGllcyBvbiB1bmRlcmx5aW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIFRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhvc2UgbGluay11cC9kb3duIGZ1bmN0aW9ucywgc3VnZ2VzdHMgdGhpcyBkZXBlbmRlbmNlIG9uIHJlYWwgaGFyZHdhcmUgdG8gYSBwcmV0dHkgaGlnaCBkZWdyZWUgb2YgcHJvYmFiaWxpdHkuIEFsc28sIHRoZSBwYXRjaCBtZW50aW9ucyBzaW1pbGFyIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEcml2ZXIqKgoKT2theSwgc28gdGhlIGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdGhlIHNhbWU6ICp3aGF0KiBhbSBJIGRlYWxpbmcgd2l0aD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UsIGEgZ2VuZXJpYyBjbGFzcywgb3IgYSB2aXJ0dWFsIGRyaXZlcj8gVGhlIGRldGFpbHMgd2lsbCBpbmZsdWVuY2UgdGhlIGRpYWdub3N0aWMgcGF0aC4gS25vd2luZyB0aGUgZHJpdmVyJiMzOTtzIHR5cGUgcXVpY2tseSBuYXJyb3dzIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBtb2RlcyBhbmQgYXZhaWxhYmxlIHRyb3VibGVzaG9vdGluZyB0b29scy4gVGhpcyBiYXNpYyBjbGFzc2lmaWNhdGlvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byBsb2dzIG9yIHJ1bm5pbmcgdGVzdHMuIFRoZSB0eXBlIG9mIGRyaXZlciBkaWN0YXRlcyB0aGUgYXBwcm9hY2gsIHNvIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBiYXNlIGNhc2UgZm9yIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGM0X3BmX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE5NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExOTY6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGM0X3BmX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0xMzQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BjaV9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy0xMzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjE0MDptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wY2lfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTEwMTQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BmX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMDIyLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzoxMDIzOm1vZHVsZV9wY2lfZHJpdmVyKGVuZXRjX3BmX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMDI0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYz0xMzE9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3B0cF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jLTEzNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jOjEzNzptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wdHBfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9NDA5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y192Zl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMtNDE0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzo0MTU6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGNfdmZfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jLTQxNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njk3CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZyZWVzY2FsZSBFTkVUQyBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgRU5FVEMuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB2ZW5kb3ImIzM5O3MgaGFyZHdhcmUsIHRoZSBFTkVUQywgd2hpY2ggbWVhbnMgaXQgbGlrZWx5IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCBvciBhIHNwZWNpZmljIFN5c3RlbSBvbiBDaGlwIChTb0MpIGludGVncmF0aW9uLiBBbmQgc2luY2UgaXQmIzM5O3MgKm5vdCogYSBzdGFuZGFyZCBRRU1VLWVtdWxhdGVkIGRldmljZSwgaXQgaW1tZWRpYXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5IG9mICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQuJiMzNDsKCkJ1dCBob2xkIG9uLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUuIElzIHRoZXJlICphbnkqIGNoYW5jZSBRRU1VIG1pZ2h0IGhhdmUgYWRkZWQgRU5FVEMgZW11bGF0aW9uIHNvbWV3aGVyZT8gTm8sIG9rYXkuIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIHR1bGlwLCBpODI1NTllciwgYnV0ICpub3QqIEVORVRDLgoKU28sIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBubyBRRU1VIGVtdWxhdGlvbiwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBXb3J0aEZ1enppbmcgdG8gZmFsc2UsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjE3LjkzNjg2MjYwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDUwNzkwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjM6MTcuOTM2ODcyMDA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ4OTc5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmM2Y4NjI2NTA2MzhjMDg0YTYzODc0MDIzZTZiYjI5NzVhYjlmZDIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcXG5pbmRleCA4ZTNmMzQ1ZGQ5YWFjLi45MjgyZTEzY2NmYjJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcXG5AQCAtMjYzMSw2ICsyNjMxLDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfdHhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqdHhfcmluZylcXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfcnhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqcnhfcmluZyxcXG4gXFx0XFx0XFx0ICAgICAgYm9vbCBleHRlbmRlZClcXG4ge1xcbitcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYocnhfcmluZy1cXHUwMDNlbmRldik7XFxuIFxcdGludCBpZHggPSByeF9yaW5nLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIHJibXIgPSAwO1xcbiBcXG5AQCAtMjY2Niw2ICsyNjY3LDkgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfcnhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqcnhfcmluZyxcXG4gXFx0aWYgKHJ4X3JpbmctXFx1MDAzZW5kZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpXFxuIFxcdFxcdHJibXIgfD0gRU5FVENfUkJNUl9WVEU7XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuK1xcdFxcdHJibXIgfD0gRU5FVENfUkJNUl9DTTtcXG4rXFxuIFxcdHJ4X3JpbmctXFx1MDAzZXJjaXIgPSBody1cXHUwMDNlcmVnICsgRU5FVENfQkRSKFJYLCBpZHgsIEVORVRDX1JCQ0lSKTtcXG4gXFx0cnhfcmluZy1cXHUwMDNlaWRyID0gaHctXFx1MDAzZXJlZyArIEVORVRDX1NJUlhJRFI7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXFxuaW5kZXggMDRhNWRkNWVhNmM3NC4uMzQxZjU0ODU2ZGViZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXFxuQEAgLTQxOSw2ICs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XFxuIGVudW0gZW5ldGNfZmxhZ3NfYml0IHtcXG4gXFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxcbiBcXHRFTkVUQ19UWF9ET1dOLFxcbitcXHRFTkVUQ19SWEJEUl9DTSxcXG4gfTtcXG4gXFxuIC8qIGludGVycnVwdCBjb2FsZXNjaW5nIG1vZGVzICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xcbmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuQEAgLTc0OCw2ICs3NDgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpXFxuIHtcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHBmLVxcdTAwM2VzaS1cXHUwMDNlbmRldik7XFxuIFxcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcXG4gXFx0dTMyIGluaXRfcXVhbnRhID0gMCwgcmVmcmVzaF9xdWFudGEgPSAwO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlaHc7XFxuQEAgLTc2NCw2ICs3NjUsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodHhfcGF1c2UpIHtcXG4rXFx0XFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXFx1MDAyNnByaXYtXFx1MDAzZWZsYWdzKTtcXG4rXFxuIFxcdFxcdC8qIFdoZW4gdGhlIHBvcnQgZmlyc3QgZW50ZXJzIGNvbmdlc3Rpb24sIHNlbmQgYSBQQVVTRSByZXF1ZXN0XFxuIFxcdFxcdCAqIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1YW50YS4gV2hlbiB0aGUgcG9ydCBleGl0c1xcbiBcXHRcXHQgKiBjb25nZXN0aW9uLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2VuZCBhIFBBVVNFIGZyYW1lIHdpdGhcXG5AQCAtNzgzLDYgKzc4Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xcbiBcXHRcXHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRlbmV0Y19wb3J0X21hY193cihwZi1cXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcXG5AQCAtOTQ5LDcgKzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0XFx0XFx0ICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcXG4gXFxuK1xcdHByaXYgPSBuZXRkZXZfcHJpdihwZi1cXHUwMDNlc2ktXFx1MDAzZW5kZXYpO1xcbitcXHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncyk7XFxuIFxcdGVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7XFxuIFxcdGVuZXRjNF9tYWNfdHhfZ3JhY2VmdWxfc3RvcChwZik7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xcbmluZGV4IDJkNjg3YmI4YzNhMDYuLjNmYjY4OWQyN2EwMjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xcbkBAIC02MzMsNiArNjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0eF9wYXVzZSkge1xcbitcXHRcXHRzZXRfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbitcXG4gXFx0XFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcXG4gXFx0XFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXFxuIFxcdFxcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxcbkBAIC02NTIsNiArNjU0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xcbiBcXHRcXHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpO1xcbkBAIC02ODMsNiArNjg3LDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihzaS1cXHUwMDNlbmRldik7XFxuK1xcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXFx1MDAyNnByaXYtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdGlmIChzaS1cXHUwMDNlaHdfZmVhdHVyZXMgXFx1MDAyNiBFTkVUQ19TSV9GX1FCVSlcXG4gXFx0XFx0ZW5ldGNfbW1fbGlua19zdGF0ZV91cGRhdGUocHJpdiwgZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoxOC41NTI4MDIzMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjgzNDgzOTgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzZjg2MjY1MDYzOGMwODRhNjM4NzQwMjNlNmJiMjk3NWFiOWZkMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyMzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbmluZGV4IDhlM2YzNDVkZDlhYWMuLjkyODJlMTNjY2ZiMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbkBAIC0yNjMxLDYgKzI2MzEsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF90eGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nKVxuIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRcdFx0ICAgICAgYm9vbCBleHRlbmRlZClcbiB7XG4rXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYocnhfcmluZy1cdTAwM2VuZGV2KTtcbiBcdGludCBpZHggPSByeF9yaW5nLVx1MDAzZWluZGV4O1xuIFx0dTMyIHJibXIgPSAwO1xuIFxuQEAgLTI2NjYsNiArMjY2Nyw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRpZiAocnhfcmluZy1cdTAwM2VuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cmJtciB8PSBFTkVUQ19SQk1SX1ZURTtcbiBcbitcdGlmICh0ZXN0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG4rXHRcdHJibXIgfD0gRU5FVENfUkJNUl9DTTtcbitcbiBcdHJ4X3JpbmctXHUwMDNlcmNpciA9IGh3LVx1MDAzZXJlZyArIEVORVRDX0JEUihSWCwgaWR4LCBFTkVUQ19SQkNJUik7XG4gXHRyeF9yaW5nLVx1MDAzZWlkciA9IGh3LVx1MDAzZXJlZyArIEVORVRDX1NJUlhJRFI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuaW5kZXggMDRhNWRkNWVhNmM3NC4uMzQxZjU0ODU2ZGViZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuQEAgLTQxOSw2ICs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XG4gZW51bSBlbmV0Y19mbGFnc19iaXQge1xuIFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxuIFx0RU5FVENfVFhfRE9XTixcbitcdEVORVRDX1JYQkRSX0NNLFxuIH07XG4gXG4gLyogaW50ZXJydXB0IGNvYWxlc2NpbmcgbW9kZXMgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTc0OCw2ICs3NDgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNlKVxuIHtcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi1cdTAwM2VzaS1cdTAwM2VuZGV2KTtcbiBcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcbiBcdHUzMiBpbml0X3F1YW50YSA9IDAsIHJlZnJlc2hfcXVhbnRhID0gMDtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbkBAIC03NjQsNiArNzY1LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNcbiBcdH1cbiBcbiBcdGlmICh0eF9wYXVzZSkge1xuK1x0XHRzZXRfYml0KEVORVRDX1JYQkRSX0NNLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKTtcbitcbiBcdFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcbiBcdFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXG4gXHRcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxuQEAgLTc4Myw2ICs3ODYsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c1xuIFx0XHQgKi9cbiBcdFx0cGF1c2Vfb25fdGhyZXNoID0gMyAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcbiBcdFx0cGF1c2Vfb2ZmX3RocmVzaCA9IDEgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4rXHR9IGVsc2Uge1xuK1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3IocGYtXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcbkBAIC05NDksNyArOTU0LDEwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0XHRcdFx0ICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7XG4gXG4rXHRwcml2ID0gbmV0ZGV2X3ByaXYocGYtXHUwMDNlc2ktXHUwMDNlbmRldik7XG4rXHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0ZW5ldGM0X21hY19yeF9ncmFjZWZ1bF9zdG9wKHBmKTtcbiBcdGVuZXRjNF9tYWNfdHhfZ3JhY2VmdWxfc3RvcChwZik7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbmluZGV4IDJkNjg3YmI4YzNhMDYuLjNmYjY4OWQyN2EwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbkBAIC02MzMsNiArNjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHR9XG4gXG4gXHRpZiAodHhfcGF1c2UpIHtcbitcdFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4rXG4gXHRcdC8qIFdoZW4gdGhlIHBvcnQgZmlyc3QgZW50ZXJzIGNvbmdlc3Rpb24sIHNlbmQgYSBQQVVTRSByZXF1ZXN0XG4gXHRcdCAqIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1YW50YS4gV2hlbiB0aGUgcG9ydCBleGl0c1xuIFx0XHQgKiBjb25nZXN0aW9uLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2VuZCBhIFBBVVNFIGZyYW1lIHdpdGhcbkBAIC02NTIsNiArNjU0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRcdCAqL1xuIFx0XHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuIFx0XHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcbitcdH0gZWxzZSB7XG4rXHRcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXG4gXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpO1xuQEAgLTY4Myw2ICs2ODcsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihzaS1cdTAwM2VuZGV2KTtcbitcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoc2ktXHUwMDNlaHdfZmVhdHVyZXMgXHUwMDI2IEVORVRDX1NJX0ZfUUJVKVxuIFx0XHRlbmV0Y19tbV9saW5rX3N0YXRlX3VwZGF0ZShwcml2LCBmYWxzZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoxOC41NTI4MDQzNTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjU0NTc1OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRU5FVEMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIGBlbmV0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AgZGlyZWN0b3J5LiBJdCBzZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBFTkVUQ19SWEJEUl9DTWAsIHRvIHRoZSBgcHJpdi1cdTAwM2VmbGFnc2Agc3RydWN0dXJlLiBJIHNlZSBpdCBiZWluZyBzZXQgYW5kIGNsZWFyZWQgd2l0aGluIHRoZSBgZW5ldGM0X3NldF90eF9wYXVzZWAsIGBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bmAsIGBlbmV0Y19wbF9tYWNfbGlua191cGAsIGFuZCBgZW5ldGNfcGxfbWFjX2xpbmtfZG93bmAgZnVuY3Rpb25zLiBUaGVuLCB0aGlzIGZsYWcgaXMgdXNlZCB3aXRoaW4gYGVuZXRjX3NldHVwX3J4YmRyYCB0byBjb250cm9sIHRoZSBzZXR0aW5nIG9mIGBFTkVUQ19SQk1SX0NNYCBpbiBgcmJtcmAuIFRoYXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGNvbnRleHQuIFRoZSBgZW5ldGNgIGRyaXZlciBoYW5kbGVzIHRoZSBGcmVlc2NhbGUgRU5FVEMsIHdoaWNoIEkga25vdyBpcyBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvZnRlbiBmb3VuZCBpbiBOWFAgTGF5ZXJzY2FwZSBTb0NzLiBBbmQgdGhpcyBpcyB0eXBpY2FsbHkgYSBQQ0llIGRldmljZS4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyB1cCBpcyB3aGV0aGVyIHRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCdzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGVtdWxhdGUgaW4gUUVNVS4gRnJlZXNjYWxlIEVORVRDLCBub3cgTlhQLCBpcyBkZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZS4gU28sIHRoZSBmaXJzdCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgKmlzKiBsaWtlbHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IFFFTVUgZW11bGF0ZXMgc29tZSBOWFAgaGFyZHdhcmUsIGJ1dCBJIHVzdWFsbHkgaGF2ZW4ndCBzZWVuIEVORVRDIGVtdWxhdGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgc3RhbmRhcmQgeDg2IG9yIGFybTY0IHZpcnQgbWFjaGluZXMuIExldCBtZSBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW55IFFFTVUgZW11bGF0aW9uIGZvciBFTkVUQy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc291cmNlcyB0byBzZWUgaWYgdGhlcmUgaXMgYW55dGhpbmcuXG5cbkkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBFTkVUQyBpcyBhIFBDSWUgZW5kcG9pbnQgb24gdGhlIExTMTAyOEEgYW5kIHNpbWlsYXIgTlhQIFNvQ3MuIEl0J3MgbGlrZWx5IHRoYXQgaXQgcmVsaWVzIG9uIHVuZGVybHlpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIGNvZGUncyBiZWhhdmlvciwgZXNwZWNpYWxseSBpbiBjb25qdW5jdGlvbiB3aXRoIHRob3NlIGxpbmstdXAvZG93biBmdW5jdGlvbnMsIHN1Z2dlc3RzIHRoaXMgZGVwZW5kZW5jZSBvbiByZWFsIGhhcmR3YXJlIHRvIGEgcHJldHR5IGhpZ2ggZGVncmVlIG9mIHByb2JhYmlsaXR5LiBBbHNvLCB0aGUgcGF0Y2ggbWVudGlvbnMgc2ltaWxhciBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgUENJIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjI3LjIwNzM4MzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTc5NTcyMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoyNy4zMDkxODgzMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg5NzgzODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdGhlIHNhbWU6ICp3aGF0KiBhbSBJIGRlYWxpbmcgd2l0aD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UsIGEgZ2VuZXJpYyBjbGFzcywgb3IgYSB2aXJ0dWFsIGRyaXZlcj8gVGhlIGRldGFpbHMgd2lsbCBpbmZsdWVuY2UgdGhlIGRpYWdub3N0aWMgcGF0aC4gS25vd2luZyB0aGUgZHJpdmVyJ3MgdHlwZSBxdWlja2x5IG5hcnJvd3MgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBhdmFpbGFibGUgdHJvdWJsZXNob290aW5nIHRvb2xzLiBUaGlzIGJhc2ljIGNsYXNzaWZpY2F0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGxvZ3Mgb3IgcnVubmluZyB0ZXN0cy4gVGhlIHR5cGUgb2YgZHJpdmVyIGRpY3RhdGVzIHRoZSBhcHByb2FjaCwgc28gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgY2FzZSBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzozMC4xOTg5NzUxMDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMjU3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGM0X3BmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0xMTk1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExOTY6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGM0X3BmX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0xMzQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BjaV9tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTEzOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjE0MDptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wY2lfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTE0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTEwMTQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTEwMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzoxMDIzOm1vZHVsZV9wY2lfZHJpdmVyKGVuZXRjX3BmX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMTAyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYz0xMzE9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3B0cF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmMtMTM2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jOjEzNzptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wdHBfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9NDA5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y192Zl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy00MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzo0MTU6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGNfdmZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy00MTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjMwLjI5MzEwODEyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTQ0OTI2ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJlZXNjYWxlIEVORVRDIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgRU5FVEMuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB2ZW5kb3IncyBoYXJkd2FyZSwgdGhlIEVORVRDLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgcmVsaWVzIG9uIGEgcGh5c2ljYWwgUENJZSBjYXJkIG9yIGEgc3BlY2lmaWMgU3lzdGVtIG9uIENoaXAgKFNvQykgaW50ZWdyYXRpb24uIEFuZCBzaW5jZSBpdCdzICpub3QqIGEgc3RhbmRhcmQgUUVNVS1lbXVsYXRlZCBkZXZpY2UsIGl0IGltbWVkaWF0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSBvZiBcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkLlwiXG5cbkJ1dCBob2xkIG9uLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUuIElzIHRoZXJlICphbnkqIGNoYW5jZSBRRU1VIG1pZ2h0IGhhdmUgYWRkZWQgRU5FVEMgZW11bGF0aW9uIHNvbWV3aGVyZT8gTm8sIG9rYXkuIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIHR1bGlwLCBpODI1NTllciwgYnV0ICpub3QqIEVORVRDLlxuXG5TbywgZ2l2ZW4gdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBnaXZlbiB0aGF0IHRoZXJlIGlzIG5vIFFFTVUgZW11bGF0aW9uLCB0aGlzIGNvZGUgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLiBJdCdzIHNpbXBseSBub3QgZ29pbmcgdG8gYmUgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgV29ydGhGdXp6aW5nIHRvIGZhbHNlLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZnV6eiB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTcsIk91dHB1dFRva2VucyI6ODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjM6MzUuMzg3NjAzOTI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgvbqs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 20:57:38 +0000 UTC FinishedAt: 2026-07-28 21:23:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNmODYyNjUwNjM4YzA4NGE2Mzg3NDAyM2U2YmIyOTc1YWI5ZmQyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbmluZGV4IDhlM2YzNDVkZDlhYWMuLjkyODJlMTNjY2ZiMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbkBAIC0yNjMxLDYgJiM0MzsyNjMxLDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfdHhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqdHhfcmluZylcbiBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLFxuIFx0XHRcdCAgICAgIGJvb2wgZXh0ZW5kZWQpXG4ge1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihyeF9yaW5nLVx1MDAzZW5kZXYpO1xuIFx0aW50IGlkeCA9IHJ4X3JpbmctXHUwMDNlaW5kZXg7XG4gXHR1MzIgcmJtciA9IDA7XG4gXG5AQCAtMjY2Niw2ICYjNDM7MjY2Nyw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRpZiAocnhfcmluZy1cdTAwM2VuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cmJtciB8PSBFTkVUQ19SQk1SX1ZURTtcbiBcbiYjNDM7XHRpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0cmJtciB8PSBFTkVUQ19SQk1SX0NNO1xuJiM0MztcbiBcdHJ4X3JpbmctXHUwMDNlcmNpciA9IGh3LVx1MDAzZXJlZyAmIzQzOyBFTkVUQ19CRFIoUlgsIGlkeCwgRU5FVENfUkJDSVIpO1xuIFx0cnhfcmluZy1cdTAwM2VpZHIgPSBody1cdTAwM2VyZWcgJiM0MzsgRU5FVENfU0lSWElEUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5pbmRleCAwNGE1ZGQ1ZWE2Yzc0Li4zNDFmNTQ4NTZkZWJkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG5AQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XG4gZW51bSBlbmV0Y19mbGFnc19iaXQge1xuIFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxuIFx0RU5FVENfVFhfRE9XTixcbiYjNDM7XHRFTkVUQ19SWEJEUl9DTSxcbiB9O1xuIFxuIC8qIGludGVycnVwdCBjb2FsZXNjaW5nIG1vZGVzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG5pbmRleCA0MzdhMTViYmI0N2JhLi44ZGI1YTQ3ZmRiYWU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbkBAIC03NDgsNiAmIzQzOzc0OCw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfcnhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgYm9vbCByeF9wYXVzZSlcbiBcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpXG4ge1xuJiM0MztcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi1cdTAwM2VzaS1cdTAwM2VuZGV2KTtcbiBcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcbiBcdHUzMiBpbml0X3F1YW50YSA9IDAsIHJlZnJlc2hfcXVhbnRhID0gMDtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbkBAIC03NjQsNiAmIzQzOzc2NSw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzXG4gXHR9XG4gXG4gXHRpZiAodHhfcGF1c2UpIHtcbiYjNDM7XHRcdHNldF9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcbiBcdFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcbiBcdFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXG4gXHRcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxuQEAgLTc4Myw2ICYjNDM7Nzg2LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNcbiBcdFx0ICovXG4gXHRcdHBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4gXHRcdHBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3IocGYtXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcbkBAIC05NDksNyAmIzQzOzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0XHRcdCAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN0cnVjdCBlbmV0Y19wZiAqcGYgPSBwaHlsaW5rX3RvX2VuZXRjX3BmKGNvbmZpZyk7XG4mIzQzO1x0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcbiBcbiYjNDM7XHRwcml2ID0gbmV0ZGV2X3ByaXYocGYtXHUwMDNlc2ktXHUwMDNlbmRldik7XG4mIzQzO1x0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKTtcbiBcdGVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7XG4gXHRlbmV0YzRfbWFjX3R4X2dyYWNlZnVsX3N0b3AocGYpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5pbmRleCAyZDY4N2JiOGMzYTA2Li4zZmI2ODlkMjdhMDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jXG5AQCAtNjMzLDYgJiM0Mzs2MzMsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdH1cbiBcbiBcdGlmICh0eF9wYXVzZSkge1xuJiM0MztcdFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4mIzQzO1xuIFx0XHQvKiBXaGVuIHRoZSBwb3J0IGZpcnN0IGVudGVycyBjb25nZXN0aW9uLCBzZW5kIGEgUEFVU0UgcmVxdWVzdFxuIFx0XHQgKiB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWFudGEuIFdoZW4gdGhlIHBvcnQgZXhpdHNcbiBcdFx0ICogY29uZ2VzdGlvbiwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNlbmQgYSBQQVVTRSBmcmFtZSB3aXRoXG5AQCAtNjUyLDYgJiM0Mzs2NTQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0ICovXG4gXHRcdHBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4gXHRcdHBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3Ioc2ksIEVORVRDX1BNMF9QQVVTRV9RVUFOVEEsIGluaXRfcXVhbnRhKTtcbkBAIC02ODMsNiAmIzQzOzY4Nyw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3BsX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2O1xuIFxuIFx0cHJpdiA9IG5ldGRldl9wcml2KHNpLVx1MDAzZW5kZXYpO1xuJiM0MztcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoc2ktXHUwMDNlaHdfZmVhdHVyZXMgXHUwMDI2IEVORVRDX1NJX0ZfUUJVKVxuIFx0XHRlbmV0Y19tbV9saW5rX3N0YXRlX3VwZGF0ZShwcml2LCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjNmODYyNjUwNjM4YzA4NGE2Mzg3NDAyM2U2YmIyOTc1YWI5ZmQyMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwppbmRleCA4ZTNmMzQ1ZGQ5YWFjLi45MjgyZTEzY2NmYjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYwpAQCAtMjYzMSw2ICYjNDM7MjYzMSw3IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3R4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcpCiBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLAogCQkJICAgICAgYm9vbCBleHRlbmRlZCkKIHsKJiM0MzsJc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHJ4X3JpbmctJmd0O25kZXYpOwogCWludCBpZHggPSByeF9yaW5nLSZndDtpbmRleDsKIAl1MzIgcmJtciA9IDA7CiAKQEAgLTI2NjYsNiAmIzQzOzI2NjcsOSBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF9yeGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICpyeF9yaW5nLAogCWlmIChyeF9yaW5nLSZndDtuZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkKIAkJcmJtciB8PSBFTkVUQ19SQk1SX1ZURTsKIAomIzQzOwlpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpKQomIzQzOwkJcmJtciB8PSBFTkVUQ19SQk1SX0NNOwomIzQzOwogCXJ4X3JpbmctJmd0O3JjaXIgPSBody0mZ3Q7cmVnICYjNDM7IEVORVRDX0JEUihSWCwgaWR4LCBFTkVUQ19SQkNJUik7CiAJcnhfcmluZy0mZ3Q7aWRyID0gaHctJmd0O3JlZyAmIzQzOyBFTkVUQ19TSVJYSURSOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCmluZGV4IDA0YTVkZDVlYTZjNzQuLjM0MWY1NDg1NmRlYmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oCkBAIC00MTksNiAmIzQzOzQxOSw3IEBAIGVudW0gZW5ldGNfYWN0aXZlX29mZmxvYWRzIHsKIGVudW0gZW5ldGNfZmxhZ3NfYml0IHsKIAlFTkVUQ19UWF9PTkVTVEVQX1RTVEFNUF9JTl9QUk9HUkVTUyA9IDAsCiAJRU5FVENfVFhfRE9XTiwKJiM0MzsJRU5FVENfUlhCRFJfQ00sCiB9OwogCiAvKiBpbnRlcnJ1cHQgY29hbGVzY2luZyBtb2RlcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jCmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMKQEAgLTc0OCw2ICYjNDM7NzQ4LDcgQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF9yeF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBib29sIHJ4X3BhdXNlKQogCiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpCiB7CiYjNDM7CXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi0mZ3Q7c2ktJmd0O25kZXYpOwogCXUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDsKIAl1MzIgaW5pdF9xdWFudGEgPSAwLCByZWZyZXNoX3F1YW50YSA9IDA7CiAJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZhbXA7cGYtJmd0O3NpLSZndDtodzsKQEAgLTc2NCw2ICYjNDM7NzY1LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXMKIAl9CiAKIAlpZiAodHhfcGF1c2UpIHsKJiM0MzsJCXNldF9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwomIzQzOwogCQkvKiBXaGVuIHRoZSBwb3J0IGZpcnN0IGVudGVycyBjb25nZXN0aW9uLCBzZW5kIGEgUEFVU0UgcmVxdWVzdAogCQkgKiB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWFudGEuIFdoZW4gdGhlIHBvcnQgZXhpdHMKIAkJICogY29uZ2VzdGlvbiwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNlbmQgYSBQQVVTRSBmcmFtZSB3aXRoCkBAIC03ODMsNiAmIzQzOzc4Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzCiAJCSAqLwogCQlwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFOwogCQlwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgJmFtcDtwcml2LSZndDtmbGFncyk7CiAJfQogCiAJZW5ldGNfcG9ydF9tYWNfd3IocGYtJmd0O3NpLCBFTkVUQzRfUE1fUEFVU0VfUVVBTlRBKDApLCBpbml0X3F1YW50YSk7CkBAIC05NDksNyAmIzQzOzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAkJCQkgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzdHJ1Y3QgZW5ldGNfcGYgKnBmID0gcGh5bGlua190b19lbmV0Y19wZihjb25maWcpOwomIzQzOwlzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2OwogCiYjNDM7CXByaXYgPSBuZXRkZXZfcHJpdihwZi0mZ3Q7c2ktJmd0O25kZXYpOwomIzQzOwljbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwogCWVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7CiAJZW5ldGM0X21hY190eF9ncmFjZWZ1bF9zdG9wKHBmKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKaW5kZXggMmQ2ODdiYjhjM2EwNi4uM2ZiNjg5ZDI3YTAyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMKQEAgLTYzMyw2ICYjNDM7NjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAJfQogCiAJaWYgKHR4X3BhdXNlKSB7CiYjNDM7CQlzZXRfYml0KEVORVRDX1JYQkRSX0NNLCAmYW1wO3ByaXYtJmd0O2ZsYWdzKTsKJiM0MzsKIAkJLyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3QKIAkJICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzCiAJCSAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aApAQCAtNjUyLDYgJiM0Mzs2NTQsOCBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKIAkJICovCiAJCXBhdXNlX29uX3RocmVzaCA9IDMgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7CiAJCXBhdXNlX29mZl90aHJlc2ggPSAxICogRU5FVENfTUFDX01BWEZSTV9TSVpFOwomIzQzOwl9IGVsc2UgewomIzQzOwkJY2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCAmYW1wO3ByaXYtJmd0O2ZsYWdzKTsKIAl9CiAKIAllbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpOwpAQCAtNjgzLDYgJiM0Mzs2ODcsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7CiAKIAlwcml2ID0gbmV0ZGV2X3ByaXYoc2ktJmd0O25kZXYpOwomIzQzOwljbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sICZhbXA7cHJpdi0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKHNpLSZndDtod19mZWF0dXJlcyAmYW1wOyBFTkVUQ19TSV9GX1FCVSkKIAkJZW5ldGNfbW1fbGlua19zdGF0ZV91cGRhdGUocHJpdiwgZmFsc2UpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRU5FVEMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgYGVuZXRjYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvYCBkaXJlY3RvcnkuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBFTkVUQ19SWEJEUl9DTWAsIHRvIHRoZSBgcHJpdi0mZ3Q7ZmxhZ3NgIHN0cnVjdHVyZS4gSSBzZWUgaXQgYmVpbmcgc2V0IGFuZCBjbGVhcmVkIHdpdGhpbiB0aGUgYGVuZXRjNF9zZXRfdHhfcGF1c2VgLCBgZW5ldGM0X3BsX21hY19saW5rX2Rvd25gLCBgZW5ldGNfcGxfbWFjX2xpbmtfdXBgLCBhbmQgYGVuZXRjX3BsX21hY19saW5rX2Rvd25gIGZ1bmN0aW9ucy4gVGhlbiwgdGhpcyBmbGFnIGlzIHVzZWQgd2l0aGluIGBlbmV0Y19zZXR1cF9yeGJkcmAgdG8gY29udHJvbCB0aGUgc2V0dGluZyBvZiBgRU5FVENfUkJNUl9DTWAgaW4gYHJibXJgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGUgYGVuZXRjYCBkcml2ZXIgaGFuZGxlcyB0aGUgRnJlZXNjYWxlIEVORVRDLCB3aGljaCBJIGtub3cgaXMgYW4gRXRoZXJuZXQgY29udHJvbGxlciwgb2Z0ZW4gZm91bmQgaW4gTlhQIExheWVyc2NhcGUgU29Dcy4gQW5kIHRoaXMgaXMgdHlwaWNhbGx5IGEgUENJZSBkZXZpY2UuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgdXAgaXMgd2hldGhlciB0aGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgZGlmZmljdWx0LCBpZiBub3QgaW1wb3NzaWJsZSwgdG8gZW11bGF0ZSBpbiBRRU1VLiBGcmVlc2NhbGUgRU5FVEMsIG5vdyBOWFAsIGlzIGRlZmluaXRlbHkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLiBTbywgdGhlIGZpcnN0IGFzc3VtcHRpb24gaXMgdGhhdCBpdCAqaXMqIGxpa2VseSBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgbm90IHNvbWV0aGluZyBlYXNpbHkgZW11bGF0ZWQuCgpIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IFFFTVUgZW11bGF0ZXMgc29tZSBOWFAgaGFyZHdhcmUsIGJ1dCBJIHVzdWFsbHkgaGF2ZW4mIzM5O3Qgc2VlbiBFTkVUQyBlbXVsYXRlZCBkaXJlY3RseSB3aXRoaW4gdGhlIHN0YW5kYXJkIHg4NiBvciBhcm02NCB2aXJ0IG1hY2hpbmVzLiBMZXQgbWUgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBRRU1VIGVtdWxhdGlvbiBmb3IgRU5FVEMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzb3VyY2VzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnl0aGluZy4KCkkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBFTkVUQyBpcyBhIFBDSWUgZW5kcG9pbnQgb24gdGhlIExTMTAyOEEgYW5kIHNpbWlsYXIgTlhQIFNvQ3MuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGl0IHJlbGllcyBvbiB1bmRlcmx5aW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIFRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhvc2UgbGluay11cC9kb3duIGZ1bmN0aW9ucywgc3VnZ2VzdHMgdGhpcyBkZXBlbmRlbmNlIG9uIHJlYWwgaGFyZHdhcmUgdG8gYSBwcmV0dHkgaGlnaCBkZWdyZWUgb2YgcHJvYmFiaWxpdHkuIEFsc28sIHRoZSBwYXRjaCBtZW50aW9ucyBzaW1pbGFyIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEcml2ZXIqKgoKT2theSwgc28gdGhlIGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdGhlIHNhbWU6ICp3aGF0KiBhbSBJIGRlYWxpbmcgd2l0aD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UsIGEgZ2VuZXJpYyBjbGFzcywgb3IgYSB2aXJ0dWFsIGRyaXZlcj8gVGhlIGRldGFpbHMgd2lsbCBpbmZsdWVuY2UgdGhlIGRpYWdub3N0aWMgcGF0aC4gS25vd2luZyB0aGUgZHJpdmVyJiMzOTtzIHR5cGUgcXVpY2tseSBuYXJyb3dzIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBtb2RlcyBhbmQgYXZhaWxhYmxlIHRyb3VibGVzaG9vdGluZyB0b29scy4gVGhpcyBiYXNpYyBjbGFzc2lmaWNhdGlvbiBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byBsb2dzIG9yIHJ1bm5pbmcgdGVzdHMuIFRoZSB0eXBlIG9mIGRyaXZlciBkaWN0YXRlcyB0aGUgYXBwcm9hY2gsIHNvIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBiYXNlIGNhc2UgZm9yIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGM0X3BmX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE5NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExOTY6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGM0X3BmX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtMTE5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0xMzQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BjaV9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy0xMzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjE0MDptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wY2lfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTEwMTQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BmX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMDIyLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzoxMDIzOm1vZHVsZV9wY2lfZHJpdmVyKGVuZXRjX3BmX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0xMDI0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYz0xMzE9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3B0cF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jLTEzNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jOjEzNzptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wdHBfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9NDA5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y192Zl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMtNDE0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzo0MTU6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGNfdmZfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jLTQxNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njk3CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZyZWVzY2FsZSBFTkVUQyBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgRU5FVEMuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB2ZW5kb3ImIzM5O3MgaGFyZHdhcmUsIHRoZSBFTkVUQywgd2hpY2ggbWVhbnMgaXQgbGlrZWx5IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCBvciBhIHNwZWNpZmljIFN5c3RlbSBvbiBDaGlwIChTb0MpIGludGVncmF0aW9uLiBBbmQgc2luY2UgaXQmIzM5O3MgKm5vdCogYSBzdGFuZGFyZCBRRU1VLWVtdWxhdGVkIGRldmljZSwgaXQgaW1tZWRpYXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5IG9mICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQuJiMzNDsKCkJ1dCBob2xkIG9uLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUuIElzIHRoZXJlICphbnkqIGNoYW5jZSBRRU1VIG1pZ2h0IGhhdmUgYWRkZWQgRU5FVEMgZW11bGF0aW9uIHNvbWV3aGVyZT8gTm8sIG9rYXkuIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIHR1bGlwLCBpODI1NTllciwgYnV0ICpub3QqIEVORVRDLgoKU28sIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBubyBRRU1VIGVtdWxhdGlvbiwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBnb2luZyB0byBiZSByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBXb3J0aEZ1enppbmcgdG8gZmFsc2UsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmdXp6IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRU5FVEMgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjE3LjkzNjg2MjYwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDUwNzkwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjM6MTcuOTM2ODcyMDA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ4OTc5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmM2Y4NjI2NTA2MzhjMDg0YTYzODc0MDIzZTZiYjI5NzVhYjlmZDIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjIzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcXG5pbmRleCA4ZTNmMzQ1ZGQ5YWFjLi45MjgyZTEzY2NmYjJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcXG5AQCAtMjYzMSw2ICsyNjMxLDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfdHhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqdHhfcmluZylcXG4gc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfcnhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqcnhfcmluZyxcXG4gXFx0XFx0XFx0ICAgICAgYm9vbCBleHRlbmRlZClcXG4ge1xcbitcXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYocnhfcmluZy1cXHUwMDNlbmRldik7XFxuIFxcdGludCBpZHggPSByeF9yaW5nLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIHJibXIgPSAwO1xcbiBcXG5AQCAtMjY2Niw2ICsyNjY3LDkgQEAgc3RhdGljIHZvaWQgZW5ldGNfc2V0dXBfcnhiZHIoc3RydWN0IGVuZXRjX2h3ICpodywgc3RydWN0IGVuZXRjX2JkciAqcnhfcmluZyxcXG4gXFx0aWYgKHJ4X3JpbmctXFx1MDAzZW5kZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpXFxuIFxcdFxcdHJibXIgfD0gRU5FVENfUkJNUl9WVEU7XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoRU5FVENfUlhCRFJfQ00sIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuK1xcdFxcdHJibXIgfD0gRU5FVENfUkJNUl9DTTtcXG4rXFxuIFxcdHJ4X3JpbmctXFx1MDAzZXJjaXIgPSBody1cXHUwMDNlcmVnICsgRU5FVENfQkRSKFJYLCBpZHgsIEVORVRDX1JCQ0lSKTtcXG4gXFx0cnhfcmluZy1cXHUwMDNlaWRyID0gaHctXFx1MDAzZXJlZyArIEVORVRDX1NJUlhJRFI7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXFxuaW5kZXggMDRhNWRkNWVhNmM3NC4uMzQxZjU0ODU2ZGViZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXFxuQEAgLTQxOSw2ICs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XFxuIGVudW0gZW5ldGNfZmxhZ3NfYml0IHtcXG4gXFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxcbiBcXHRFTkVUQ19UWF9ET1dOLFxcbitcXHRFTkVUQ19SWEJEUl9DTSxcXG4gfTtcXG4gXFxuIC8qIGludGVycnVwdCBjb2FsZXNjaW5nIG1vZGVzICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xcbmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jXFxuQEAgLTc0OCw2ICs3NDgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXFxuIFxcbiBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c2UpXFxuIHtcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHBmLVxcdTAwM2VzaS1cXHUwMDNlbmRldik7XFxuIFxcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcXG4gXFx0dTMyIGluaXRfcXVhbnRhID0gMCwgcmVmcmVzaF9xdWFudGEgPSAwO1xcbiBcXHRzdHJ1Y3QgZW5ldGNfaHcgKmh3ID0gXFx1MDAyNnBmLVxcdTAwM2VzaS1cXHUwMDNlaHc7XFxuQEAgLTc2NCw2ICs3NjUsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodHhfcGF1c2UpIHtcXG4rXFx0XFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXFx1MDAyNnByaXYtXFx1MDAzZWZsYWdzKTtcXG4rXFxuIFxcdFxcdC8qIFdoZW4gdGhlIHBvcnQgZmlyc3QgZW50ZXJzIGNvbmdlc3Rpb24sIHNlbmQgYSBQQVVTRSByZXF1ZXN0XFxuIFxcdFxcdCAqIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1YW50YS4gV2hlbiB0aGUgcG9ydCBleGl0c1xcbiBcXHRcXHQgKiBjb25nZXN0aW9uLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2VuZCBhIFBBVVNFIGZyYW1lIHdpdGhcXG5AQCAtNzgzLDYgKzc4Niw4IEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9zZXRfdHhfcGF1c2Uoc3RydWN0IGVuZXRjX3BmICpwZiwgaW50IG51bV9yeGJkciwgYm9vbCB0eF9wYXVzXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xcbiBcXHRcXHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRlbmV0Y19wb3J0X21hY193cihwZi1cXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcXG5AQCAtOTQ5LDcgKzk1NCwxMCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0XFx0XFx0ICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4gXFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcXG4rXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcXG4gXFxuK1xcdHByaXYgPSBuZXRkZXZfcHJpdihwZi1cXHUwMDNlc2ktXFx1MDAzZW5kZXYpO1xcbitcXHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncyk7XFxuIFxcdGVuZXRjNF9tYWNfcnhfZ3JhY2VmdWxfc3RvcChwZik7XFxuIFxcdGVuZXRjNF9tYWNfdHhfZ3JhY2VmdWxfc3RvcChwZik7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xcbmluZGV4IDJkNjg3YmI4YzNhMDYuLjNmYjY4OWQyN2EwMjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xcbkBAIC02MzMsNiArNjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0eF9wYXVzZSkge1xcbitcXHRcXHRzZXRfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbitcXG4gXFx0XFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcXG4gXFx0XFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXFxuIFxcdFxcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxcbkBAIC02NTIsNiArNjU0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xcbiBcXHRcXHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2xlYXJfYml0KEVORVRDX1JYQkRSX0NNLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpO1xcbkBAIC02ODMsNiArNjg3LDcgQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcXG4gXFxuIFxcdHByaXYgPSBuZXRkZXZfcHJpdihzaS1cXHUwMDNlbmRldik7XFxuK1xcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXFx1MDAyNnByaXYtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdGlmIChzaS1cXHUwMDNlaHdfZmVhdHVyZXMgXFx1MDAyNiBFTkVUQ19TSV9GX1FCVSlcXG4gXFx0XFx0ZW5ldGNfbW1fbGlua19zdGF0ZV91cGRhdGUocHJpdiwgZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoxOC41NTI4MDIzMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjgzNDgzOTgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzZjg2MjY1MDYzOGMwODRhNjM4NzQwMjNlNmJiMjk3NWFiOWZkMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyMzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbmluZGV4IDhlM2YzNDVkZDlhYWMuLjkyODJlMTNjY2ZiMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmNcbkBAIC0yNjMxLDYgKzI2MzEsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19zZXR1cF90eGJkcihzdHJ1Y3QgZW5ldGNfaHcgKmh3LCBzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nKVxuIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRcdFx0ICAgICAgYm9vbCBleHRlbmRlZClcbiB7XG4rXHRzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYocnhfcmluZy1cdTAwM2VuZGV2KTtcbiBcdGludCBpZHggPSByeF9yaW5nLVx1MDAzZWluZGV4O1xuIFx0dTMyIHJibXIgPSAwO1xuIFxuQEAgLTI2NjYsNiArMjY2Nyw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRyKHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsXG4gXHRpZiAocnhfcmluZy1cdTAwM2VuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cmJtciB8PSBFTkVUQ19SQk1SX1ZURTtcbiBcbitcdGlmICh0ZXN0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG4rXHRcdHJibXIgfD0gRU5FVENfUkJNUl9DTTtcbitcbiBcdHJ4X3JpbmctXHUwMDNlcmNpciA9IGh3LVx1MDAzZXJlZyArIEVORVRDX0JEUihSWCwgaWR4LCBFTkVUQ19SQkNJUik7XG4gXHRyeF9yaW5nLVx1MDAzZWlkciA9IGh3LVx1MDAzZXJlZyArIEVORVRDX1NJUlhJRFI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuaW5kZXggMDRhNWRkNWVhNmM3NC4uMzQxZjU0ODU2ZGViZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaFxuQEAgLTQxOSw2ICs0MTksNyBAQCBlbnVtIGVuZXRjX2FjdGl2ZV9vZmZsb2FkcyB7XG4gZW51bSBlbmV0Y19mbGFnc19iaXQge1xuIFx0RU5FVENfVFhfT05FU1RFUF9UU1RBTVBfSU5fUFJPR1JFU1MgPSAwLFxuIFx0RU5FVENfVFhfRE9XTixcbitcdEVORVRDX1JYQkRSX0NNLFxuIH07XG4gXG4gLyogaW50ZXJydXB0IGNvYWxlc2NpbmcgbW9kZXMgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbmluZGV4IDQzN2ExNWJiYjQ3YmEuLjhkYjVhNDdmZGJhZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuY1xuQEAgLTc0OCw2ICs3NDgsNyBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3J4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGJvb2wgcnhfcGF1c2UpXG4gXG4gc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNlKVxuIHtcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihwZi1cdTAwM2VzaS1cdTAwM2VuZGV2KTtcbiBcdHUzMiBwYXVzZV9vZmZfdGhyZXNoID0gMCwgcGF1c2Vfb25fdGhyZXNoID0gMDtcbiBcdHUzMiBpbml0X3F1YW50YSA9IDAsIHJlZnJlc2hfcXVhbnRhID0gMDtcbiBcdHN0cnVjdCBlbmV0Y19odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VzaS1cdTAwM2VodztcbkBAIC03NjQsNiArNzY1LDggQEAgc3RhdGljIHZvaWQgZW5ldGM0X3NldF90eF9wYXVzZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBpbnQgbnVtX3J4YmRyLCBib29sIHR4X3BhdXNcbiBcdH1cbiBcbiBcdGlmICh0eF9wYXVzZSkge1xuK1x0XHRzZXRfYml0KEVORVRDX1JYQkRSX0NNLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKTtcbitcbiBcdFx0LyogV2hlbiB0aGUgcG9ydCBmaXJzdCBlbnRlcnMgY29uZ2VzdGlvbiwgc2VuZCBhIFBBVVNFIHJlcXVlc3RcbiBcdFx0ICogd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVhbnRhLiBXaGVuIHRoZSBwb3J0IGV4aXRzXG4gXHRcdCAqIGNvbmdlc3Rpb24sIGl0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIGEgUEFVU0UgZnJhbWUgd2l0aFxuQEAgLTc4Myw2ICs3ODYsOCBAQCBzdGF0aWMgdm9pZCBlbmV0YzRfc2V0X3R4X3BhdXNlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIGludCBudW1fcnhiZHIsIGJvb2wgdHhfcGF1c1xuIFx0XHQgKi9cbiBcdFx0cGF1c2Vfb25fdGhyZXNoID0gMyAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcbiBcdFx0cGF1c2Vfb2ZmX3RocmVzaCA9IDEgKiBFTkVUQ19NQUNfTUFYRlJNX1NJWkU7XG4rXHR9IGVsc2Uge1xuK1x0XHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0ZW5ldGNfcG9ydF9tYWNfd3IocGYtXHUwMDNlc2ksIEVORVRDNF9QTV9QQVVTRV9RVUFOVEEoMCksIGluaXRfcXVhbnRhKTtcbkBAIC05NDksNyArOTU0LDEwIEBAIHN0YXRpYyB2b2lkIGVuZXRjNF9wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0XHRcdFx0ICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuIFx0c3RydWN0IGVuZXRjX3BmICpwZiA9IHBoeWxpbmtfdG9fZW5ldGNfcGYoY29uZmlnKTtcbitcdHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXY7XG4gXG4rXHRwcml2ID0gbmV0ZGV2X3ByaXYocGYtXHUwMDNlc2ktXHUwMDNlbmRldik7XG4rXHRjbGVhcl9iaXQoRU5FVENfUlhCRFJfQ00sIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuIFx0ZW5ldGM0X21hY19yeF9ncmFjZWZ1bF9zdG9wKHBmKTtcbiBcdGVuZXRjNF9tYWNfdHhfZ3JhY2VmdWxfc3RvcChwZik7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbmluZGV4IDJkNjg3YmI4YzNhMDYuLjNmYjY4OWQyN2EwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmNcbkBAIC02MzMsNiArNjMzLDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHR9XG4gXG4gXHRpZiAodHhfcGF1c2UpIHtcbitcdFx0c2V0X2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4rXG4gXHRcdC8qIFdoZW4gdGhlIHBvcnQgZmlyc3QgZW50ZXJzIGNvbmdlc3Rpb24sIHNlbmQgYSBQQVVTRSByZXF1ZXN0XG4gXHRcdCAqIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1YW50YS4gV2hlbiB0aGUgcG9ydCBleGl0c1xuIFx0XHQgKiBjb25nZXN0aW9uLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2VuZCBhIFBBVVNFIGZyYW1lIHdpdGhcbkBAIC02NTIsNiArNjU0LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfcGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRcdCAqL1xuIFx0XHRwYXVzZV9vbl90aHJlc2ggPSAzICogRU5FVENfTUFDX01BWEZSTV9TSVpFO1xuIFx0XHRwYXVzZV9vZmZfdGhyZXNoID0gMSAqIEVORVRDX01BQ19NQVhGUk1fU0laRTtcbitcdH0gZWxzZSB7XG4rXHRcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXG4gXHRlbmV0Y19wb3J0X21hY193cihzaSwgRU5FVENfUE0wX1BBVVNFX1FVQU5UQSwgaW5pdF9xdWFudGEpO1xuQEAgLTY4Myw2ICs2ODcsNyBAQCBzdGF0aWMgdm9pZCBlbmV0Y19wbF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0c3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdjtcbiBcbiBcdHByaXYgPSBuZXRkZXZfcHJpdihzaS1cdTAwM2VuZGV2KTtcbitcdGNsZWFyX2JpdChFTkVUQ19SWEJEUl9DTSwgXHUwMDI2cHJpdi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoc2ktXHUwMDNlaHdfZmVhdHVyZXMgXHUwMDI2IEVORVRDX1NJX0ZfUUJVKVxuIFx0XHRlbmV0Y19tbV9saW5rX3N0YXRlX3VwZGF0ZShwcml2LCBmYWxzZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoxOC41NTI4MDQzNTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjU0NTc1OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRU5FVEMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIGBlbmV0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AgZGlyZWN0b3J5LiBJdCBzZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBFTkVUQ19SWEJEUl9DTWAsIHRvIHRoZSBgcHJpdi1cdTAwM2VmbGFnc2Agc3RydWN0dXJlLiBJIHNlZSBpdCBiZWluZyBzZXQgYW5kIGNsZWFyZWQgd2l0aGluIHRoZSBgZW5ldGM0X3NldF90eF9wYXVzZWAsIGBlbmV0YzRfcGxfbWFjX2xpbmtfZG93bmAsIGBlbmV0Y19wbF9tYWNfbGlua191cGAsIGFuZCBgZW5ldGNfcGxfbWFjX2xpbmtfZG93bmAgZnVuY3Rpb25zLiBUaGVuLCB0aGlzIGZsYWcgaXMgdXNlZCB3aXRoaW4gYGVuZXRjX3NldHVwX3J4YmRyYCB0byBjb250cm9sIHRoZSBzZXR0aW5nIG9mIGBFTkVUQ19SQk1SX0NNYCBpbiBgcmJtcmAuIFRoYXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGNvbnRleHQuIFRoZSBgZW5ldGNgIGRyaXZlciBoYW5kbGVzIHRoZSBGcmVlc2NhbGUgRU5FVEMsIHdoaWNoIEkga25vdyBpcyBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvZnRlbiBmb3VuZCBpbiBOWFAgTGF5ZXJzY2FwZSBTb0NzLiBBbmQgdGhpcyBpcyB0eXBpY2FsbHkgYSBQQ0llIGRldmljZS4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyB1cCBpcyB3aGV0aGVyIHRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgdGhhdCdzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGVtdWxhdGUgaW4gUUVNVS4gRnJlZXNjYWxlIEVORVRDLCBub3cgTlhQLCBpcyBkZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZS4gU28sIHRoZSBmaXJzdCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgKmlzKiBsaWtlbHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IFFFTVUgZW11bGF0ZXMgc29tZSBOWFAgaGFyZHdhcmUsIGJ1dCBJIHVzdWFsbHkgaGF2ZW4ndCBzZWVuIEVORVRDIGVtdWxhdGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgc3RhbmRhcmQgeDg2IG9yIGFybTY0IHZpcnQgbWFjaGluZXMuIExldCBtZSBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW55IFFFTVUgZW11bGF0aW9uIGZvciBFTkVUQy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc291cmNlcyB0byBzZWUgaWYgdGhlcmUgaXMgYW55dGhpbmcuXG5cbkkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBFTkVUQyBpcyBhIFBDSWUgZW5kcG9pbnQgb24gdGhlIExTMTAyOEEgYW5kIHNpbWlsYXIgTlhQIFNvQ3MuIEl0J3MgbGlrZWx5IHRoYXQgaXQgcmVsaWVzIG9uIHVuZGVybHlpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIGNvZGUncyBiZWhhdmlvciwgZXNwZWNpYWxseSBpbiBjb25qdW5jdGlvbiB3aXRoIHRob3NlIGxpbmstdXAvZG93biBmdW5jdGlvbnMsIHN1Z2dlc3RzIHRoaXMgZGVwZW5kZW5jZSBvbiByZWFsIGhhcmR3YXJlIHRvIGEgcHJldHR5IGhpZ2ggZGVncmVlIG9mIHByb2JhYmlsaXR5LiBBbHNvLCB0aGUgcGF0Y2ggbWVudGlvbnMgc2ltaWxhciBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgUENJIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjI3LjIwNzM4MzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTc5NTcyMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzoyNy4zMDkxODgzMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg5NzgzODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdGhlIHNhbWU6ICp3aGF0KiBhbSBJIGRlYWxpbmcgd2l0aD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UsIGEgZ2VuZXJpYyBjbGFzcywgb3IgYSB2aXJ0dWFsIGRyaXZlcj8gVGhlIGRldGFpbHMgd2lsbCBpbmZsdWVuY2UgdGhlIGRpYWdub3N0aWMgcGF0aC4gS25vd2luZyB0aGUgZHJpdmVyJ3MgdHlwZSBxdWlja2x5IG5hcnJvd3MgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBhdmFpbGFibGUgdHJvdWJsZXNob290aW5nIHRvb2xzLiBUaGlzIGJhc2ljIGNsYXNzaWZpY2F0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGxvZ3Mgb3IgcnVubmluZyB0ZXN0cy4gVGhlIHR5cGUgb2YgZHJpdmVyIGRpY3RhdGVzIHRoZSBhcHByb2FjaCwgc28gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgY2FzZSBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyMzozMC4xOTg5NzUxMDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMjU3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9MTE5MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZW5ldGM0X3BmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy0xMTk1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjExOTY6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGM0X3BmX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTExOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0xMzQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BjaV9tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTEzOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjE0MDptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wY2lfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTE0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTEwMTQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3BmX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTEwMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzoxMDIzOm1vZHVsZV9wY2lfZHJpdmVyKGVuZXRjX3BmX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMTAyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wdHAuYz0xMzE9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGVuZXRjX3B0cF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmMtMTM2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3B0cC5jOjEzNzptb2R1bGVfcGNpX2RyaXZlcihlbmV0Y19wdHBfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcHRwLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9NDA5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlbmV0Y192Zl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy00MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzo0MTU6bW9kdWxlX3BjaV9kcml2ZXIoZW5ldGNfdmZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy00MTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjIzOjMwLjI5MzEwODEyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTQ0OTI2ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJlZXNjYWxlIEVORVRDIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgRU5FVEMuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB2ZW5kb3IncyBoYXJkd2FyZSwgdGhlIEVORVRDLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgcmVsaWVzIG9uIGEgcGh5c2ljYWwgUENJZSBjYXJkIG9yIGEgc3BlY2lmaWMgU3lzdGVtIG9uIENoaXAgKFNvQykgaW50ZWdyYXRpb24uIEFuZCBzaW5jZSBpdCdzICpub3QqIGEgc3RhbmRhcmQgUUVNVS1lbXVsYXRlZCBkZXZpY2UsIGl0IGltbWVkaWF0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSBvZiBcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkLlwiXG5cbkJ1dCBob2xkIG9uLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUuIElzIHRoZXJlICphbnkqIGNoYW5jZSBRRU1VIG1pZ2h0IGhhdmUgYWRkZWQgRU5FVEMgZW11bGF0aW9uIHNvbWV3aGVyZT8gTm8sIG9rYXkuIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIHR1bGlwLCBpODI1NTllciwgYnV0ICpub3QqIEVORVRDLlxuXG5TbywgZ2l2ZW4gdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBnaXZlbiB0aGF0IHRoZXJlIGlzIG5vIFFFTVUgZW11bGF0aW9uLCB0aGlzIGNvZGUgaXMgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLiBJdCdzIHNpbXBseSBub3QgZ29pbmcgdG8gYmUgcmVhY2hhYmxlLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgV29ydGhGdXp6aW5nIHRvIGZhbHNlLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZnV6eiB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTcsIk91dHB1dFRva2VucyI6ODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjM6MzUuMzg3NjAzOTI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEVORVRDIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBFTkVUQyBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgvbqs[1] Phase: Running StartedAt: 2026-07-28 21:23:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvbqs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-28 21:23:46 +0000 UTC FinishedAt: 2026-07-28 21:23:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}