Name: series-workflowkw7q8 Phase: Failed StartedAt: 2026-07-23 06:47:32 +0000 UTC FinishedAt: 2026-07-23 07:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkw7q8[0] Phase: Succeeded StartedAt: 2026-07-23 06:47:32 +0000 UTC FinishedAt: 2026-07-23 07:08:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkw7q8[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 06:47:32 +0000 UTC FinishedAt: 2026-07-23 07:08: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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA3OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA3OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTAxNjE3YzQwYjE1Y2MyNWMyZWFlZDBhN2NkZGVlMmFiZjM0MGJjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcbmluZGV4IDgzYzIxODUzYjc0YjYwLi40MDZlNGM0OWJhYzFmZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxuQEAgLTU2LDYgJiM0Mzs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOlxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxuICogQ2xlYXIgc3BlY2lmaWMgZXJyb3IgY291bnRlcnMgd2l0aCB0aGUgYGBjbGVhci1lcnJvci1jb3VudGVyYGAgY29tbWFuZCwgdXNpbmcgYm90aFxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxuJiM0MzsqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXG4gXG4gWUFNTC1iYXNlZCBJbnRlcmZhY2VcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQEAgLTExMSwzICYjNDM7MTEyLDIzIEBAIEV4YW1wbGU6IENsZWFyIGFuIGVycm9yIGNvdW50ZXIgZm9yIGEgZ2l2ZW4gbm9kZVxuIFxuICAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tZG8gY2xlYXItZXJyb3ItY291bnRlciAtLWpzb24gJiMzOTt7XCYjMzQ7bm9kZS1pZFwmIzM0OzowLCBcJiMzNDtlcnJvci1pZFwmIzM0OzoxfSYjMzk7XG4gICAgIE5vbmVcbiYjNDM7XG4mIzQzO0V4YW1wbGU6IFN1YnNjcmliZSB0byBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cFxuJiM0MztcbiYjNDM7Li4gY29kZS1ibG9jazo6IGJhc2hcbiYjNDM7XG4mIzQzOyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tb3V0cHV0LWpzb24gLS1zdWJzY3JpYmUgZXJyb3ItcmVwb3J0XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjoganNvblxuJiM0MztcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtlcnJvci1ldmVudFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttc2dcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7ZGV2aWNlLW5hbWVcJiMzNDs6IFwmIzM0OzAwMDA6MDM6MDAuMFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7bm9kZS1pZFwmIzM0OzogMSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7bm9kZS1uYW1lXCYjMzQ7OiBcJiMzNDt1bmNvcnJlY3RhYmxlLWVycm9yc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7ZXJyb3ItaWRcJiMzNDs6IDEsXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2Vycm9yLW5hbWVcJiMzNDs6IFwmIzM0O2Vycm9yX25hbWUxXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtlcnJvci12YWx1ZVwmIzM0OzogMVxuJiM0MzsgICAgICAgIH1cbiYjNDM7ICAgIH1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuaW5kZXggZTExMzA1NmY4YzAxNmMuLjhhZWQzZDQ1MTVlNWFmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuQEAgLTY5LDYgJiM0Mzs2OSwzMyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGVycm9yLXZhbHVlXG4gICAgICAgICB0eXBlOiB1MzJcbiAgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIGVycm9yIGNvdW50ZXIuXG4mIzQzOyAgLVxuJiM0MzsgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxuJiM0MzsgICAgICAgIHR5cGU6IHN0cmluZ1xuJiM0MzsgICAgICAgIGRvYzogRGV2aWNlIChQQ0kgQkRGLCBVVUlEKSB0aGF0IHJlcG9ydGVkIHRoZSBlcnJvci5cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG5vZGUtaWRcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogbm9kZS1uYW1lXG4mIzQzOyAgICAgICAgdHlwZTogc3RyaW5nXG4mIzQzOyAgICAgICAgZG9jOiBOYW1lIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZXJyb3ItaWRcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBlcnJvciBjb3VudGVyLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZXJyb3ItbmFtZVxuJiM0MzsgICAgICAgIHR5cGU6IHN0cmluZ1xuJiM0MzsgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxuJiM0MzsgICAgICAgIHR5cGU6IHUzMlxuJiM0MzsgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlci5cbiBcbiBvcGVyYXRpb25zOlxuICAgbGlzdDpcbkBAIC0xMjQsMyAmIzQzOzE1MSwyNCBAQCBvcGVyYXRpb25zOlxuICAgICAgIGRvOlxuICAgICAgICAgcmVxdWVzdDpcbiAgICAgICAgICAgYXR0cmlidXRlczogKmlkLWF0dHJzXG4mIzQzOyAgICAtXG4mIzQzOyAgICAgIG5hbWU6IGVycm9yLWV2ZW50XG4mIzQzOyAgICAgIGRvYzogXHUwMDNlLVxuJiM0MzsgICAgICAgICAgIFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuXG4mIzQzOyAgICAgICAgICAgVGhlIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXZpY2UsIG5vZGUgYW5kIGVycm9yIGluZm9ybWF0aW9uXG4mIzQzOyAgICAgICAgICAgb2YgdGhlIGVycm9yIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC5cbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZXJyb3ItZXZlbnQtYXR0cnNcbiYjNDM7ICAgICAgbWNncnA6IGVycm9yLXJlcG9ydFxuJiM0MzsgICAgICBldmVudDpcbiYjNDM7ICAgICAgICBhdHRyaWJ1dGVzOlxuJiM0MzsgICAgICAgICAgLSBkZXZpY2UtbmFtZVxuJiM0MzsgICAgICAgICAgLSBub2RlLWlkXG4mIzQzOyAgICAgICAgICAtIG5vZGUtbmFtZVxuJiM0MzsgICAgICAgICAgLSBlcnJvci1pZFxuJiM0MzsgICAgICAgICAgLSBlcnJvci1uYW1lXG4mIzQzOyAgICAgICAgICAtIGVycm9yLXZhbHVlXG4mIzQzO1xuJiM0MzttY2FzdC1ncm91cHM6XG4mIzQzOyAgbGlzdDpcbiYjNDM7ICAgIC1cbiYjNDM7ICAgICAgbmFtZTogZXJyb3ItcmVwb3J0XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbkBAIC00MSw2ICYjNDM7NDEsMTEgQEBcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxuICAqICAgIENsZWFycyBzcGVjaWZpYyBlcnJvciBjb3VudGVyIG9mIGEgbm9kZSBpZiBzdXBwb3J0ZWQuXG4gICpcbiYjNDM7ICogNC4gRVJST1JfUkVQT1JUOiBTdWJzY3JpYmUgdG8gdGhpcyBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBlcnJvciBldmVudHNcbiYjNDM7ICpcbiYjNDM7ICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGVcbiYjNDM7ICogICAgYW5kIGVycm9yIGluZm9ybWF0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC5cbiYjNDM7ICpcbiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjpcbiAgKlxuICAqIC0gZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKCk6IFJlZ2lzdGVycyBhIG5ldyBub2RlIGFuZCBhc3NpZ25zXG5AQCAtMTg2LDYgJiM0MzsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLFxuIFx0XHRcdCAgIHZhbHVlKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbXNnX3B1dF9lcnJvcl9ldmVudF9hdHRycyhzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLFxuJiM0MztcdFx0XHRcdCAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS1cdTAwM2VkZXZpY2VfbmFtZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IG5sYV9wdXRfdTMyKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsIG5vZGUtXHUwMDNlaWQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsIG5vZGUtXHUwMDNlbm9kZV9uYW1lKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwgZXJyb3JfbmFtZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZG9pdF9yZXBseV92YWx1ZShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCB1MzIgbm9kZV9pZCxcbiBcdFx0XHQgICAgdTMyIGVycm9yX2lkKVxuIHtcbkBAIC0yMjIsNiAmIzQzOzI1NSw3NCBAQCBzdGF0aWMgaW50IGRvaXRfcmVwbHlfdmFsdWUoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgdTMyIG5vZGVfaWQsXG4gXHRyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoKSAtIFJlcG9ydCBhbiBlcnJvciBldmVudFxuJiM0MzsgKiBAbm9kZTogTm9kZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3JcbiYjNDM7ICogQGVycm9yX25hbWU6IE5hbWUgb2YgdGhlIGVycm9yXG4mIzQzOyAqIEB2YWx1ZTogVmFsdWUgb2YgdGhlIGVycm9yIGNvdW50ZXJcbiYjNDM7ICpcbiYjNDM7ICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZSB1c2luZyB0aGUgZXJyb3ItcmVwb3J0IG11bHRpY2FzdCBncm91cC5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsXG4mIzQzOyAqICAgICAgICAgIG5ldG5zLCB3aGljaCBpcyB1bmJvdW5kZWQgd29yazsgY2FsbGVycyBpbiBpbnRlcnJ1cHQgaGFuZGxlcnNcbiYjNDM7ICogICAgICAgICAgb3Igb3RoZXIgYXRvbWljIGNvbnRleHQgbXVzdCBkZWZlciBldmVudC5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsXG4mIzQzO1x0XHRcdCAgIHUzMiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuJiM0MztcdHN0cnVjdCBubGF0dHIgKmhkcjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIW5vZGUgfHwgIWVycm9yX25hbWUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0LyogQ2hlY2sgdGhlIG5vZGUgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgKi9cbiYjNDM7XHRpZiAoeGFfbG9hZChcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVx1MDAzZWlkKSAhPSBub2RlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9FTlQ7XG4mIzQzO1xuJiM0MztcdC8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi9cbiYjNDM7XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IERSTV9SQVNfTk9ERV9UWVBFX0VSUk9SX0NPVU5URVIpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1xuJiM0MztcdC8qIENoZWNrIHRoZSBlcnJvciBJRCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlICovXG4mIzQzO1x0aWYgKGVycm9yX2lkIFx1MDAzYyBub2RlLVx1MDAzZWVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QgfHxcbiYjNDM7XHQgICAgZXJyb3JfaWQgXHUwMDNlIG5vZGUtXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGdlbmxfaW5mb19pbml0X250ZihcdTAwMjZpbmZvLCBcdTAwMjZkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpO1xuJiM0MztcbiYjNDM7XHRtc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFtc2cpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0aGRyID0gZ2VubG1zZ19pcHV0KG1zZywgXHUwMDI2aW5mbyk7XG4mIzQzO1x0aWYgKCFoZHIpIHtcbiYjNDM7XHRcdHJldCA9IC1FTVNHU0laRTtcbiYjNDM7XHRcdGdvdG8gZnJlZV9tc2c7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBjYW5jZWxfbXNnO1xuJiM0MztcbiYjNDM7XHRnZW5sbXNnX2VuZChtc2csIGhkcik7XG4mIzQzO1x0Z2VubG1zZ19tdWx0aWNhc3RfYWxsbnMoXHUwMDI2ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2NhbmNlbF9tc2c6XG4mIzQzO1x0Z2VubG1zZ19jYW5jZWwobXNnLCBoZHIpO1xuJiM0MztmcmVlX21zZzpcbiYjNDM7XHRubG1zZ19mcmVlKG1zZyk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKGRybV9yYXNfbmxfZXJyb3JfZXZlbnQpO1xuJiM0MztcbiAvKipcbiAgKiBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdCgpIC0gRHVtcCBhbGwgRXJyb3IgQ291bnRlcnNcbiAgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2UgYnVmZmVyXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbmluZGV4IGRlYTFjMWIyNDk0ZTgxLi45ZDMxMjNjYzlmOWNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbkBAIC01OCw2ICYjNDM7NTgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NwbGl0X29wcyBkcm1fcmFzX25sX29wc1tdID0ge1xuIFx0fSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XG4mIzQzO1x0W0RSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUXSA9IHsgXCYjMzQ7ZXJyb3ItcmVwb3J0XCYjMzQ7LCB9LFxuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm5hbWVcdFx0PSBEUk1fUkFTX0ZBTUlMWV9OQU1FLFxuIFx0LnZlcnNpb25cdD0gRFJNX1JBU19GQU1JTFlfVkVSU0lPTixcbkBAIC02Niw0ICYjNDM7NzAsNiBAQCBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm1vZHVsZVx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0LnNwbGl0X29wc1x0PSBkcm1fcmFzX25sX29wcyxcbiBcdC5uX3NwbGl0X29wc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcbiYjNDM7XHQubWNncnBzXHRcdD0gZHJtX3Jhc19ubF9tY2dycHMsXG4mIzQzO1x0Lm5fbWNncnBzXHQ9IEFSUkFZX1NJWkUoZHJtX3Jhc19ubF9tY2dycHMpLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbmluZGV4IGEzOTg2NDM1NzJhNWEwLi4wM2VjMjc1YWNhOTI5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbkBAIC0yMSw2ICYjNDM7MjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGRybV9yYXNfbmxfY2xlYXJfZXJyb3JfY291bnRlcl9kb2l0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIFxuJiM0MztlbnVtIHtcbiYjNDM7XHREUk1fUkFTX05MR1JQX0VSUk9SX1JFUE9SVCxcbiYjNDM7fTtcbiYjNDM7XG4gZXh0ZXJuIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX0RSTV9SQVNfR0VOX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuQEAgLTE4NSw2ICYjNDM7MTg1LDM3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfbm9kZXMoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZVxuJiM0MzsgKiBAeGU6IHhlIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudClcbiYjNDM7ICogQHNldmVyaXR5OiBlcnJvciBzZXZlcml0eSAoc2VlIFx1MDAyNmVudW0gZHJtX3hlX3Jhc19lcnJvcl9zZXZlcml0eSlcbiYjNDM7ICogQHZhbHVlOiB2YWx1ZSBvZiBlcnJvciBjb3VudGVyXG4mIzQzOyAqXG4mIzQzOyAqIFJlcG9ydCBhbiBlcnJvci1ldmVudCB0byB1c2Vyc3BhY2UuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHhlX2RybV9yYXNfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IGNvbXBvbmVudCwgdTggc2V2ZXJpdHksIHUzMiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB4ZV9kcm1fcmFzICpyYXMgPSBcdTAwMjZ4ZS1cdTAwM2VyYXM7XG4mIzQzO1x0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cdTAwM2VpbmZvW3NldmVyaXR5XTtcbiYjNDM7XHRzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIEV2ZW50IGlzIHN1cHBvcnRlZCBvbmx5IGlmIGRybS1yYXMgaXMgZW5hYmxlZCAqL1xuJiM0MztcdGlmICgheGUtXHUwMDNlaW5mby5oYXNfZHJtX3JhcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bm9kZSA9IFx1MDAyNnJhcy1cdTAwM2Vub2RlW3NldmVyaXR5XTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpbmZvIHx8ICFpbmZvW2NvbXBvbmVudF0ubmFtZSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZHJtX3Jhc19ubF9lcnJvcl9ldmVudChub2RlLCBjb21wb25lbnQsIGluZm9bY29tcG9uZW50XS5uYW1lLCB2YWx1ZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXHUwMDI2eGUtXHUwMDNlZHJtLCBcJiMzNDtkcm0tcmFzIGVycm9yLWV2ZW50IGZhaWxlZDogJWQgZm9yICVzICVzXFxuXCYjMzQ7LCByZXQsXG4mIzQzO1x0XHRcdFx0ICAgIGluZm9bY29tcG9uZW50XS5uYW1lLCBlcnJvcl9zZXZlcml0eVtzZXZlcml0eV0pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTXG4gICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuQEAgLTUsMTEgJiM0Mzs1LDE0IEBAXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xuICNkZWZpbmUgX1hFX0RSTV9SQVNfSF9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MztcbiBzdHJ1Y3QgeGVfZGV2aWNlO1xuIFxuICNkZWZpbmUgZm9yX2VhY2hfZXJyb3Jfc2V2ZXJpdHkoaSlcdFxcXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYOyBpJiM0MzsmIzQzOylcbiBcbiBpbnQgeGVfZHJtX3Jhc19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcbiYjNDM7dm9pZCB4ZV9kcm1fcmFzX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBjb21wb25lbnQsIHU4IHNldmVyaXR5LCB1MzIgdmFsdWUpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY1xuaW5kZXggYTMxZTA2YjhhYTY3YWMuLmQ0M2Y2MTRkZTcyMzcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcbkBAIC05MCw2ICYjNDM7OTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdwdV9oZWFsdGhfc3RhdGVzW10gPSB7XG4gfTtcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcbiBcbiYjNDM7c3RhdGljIGludCBnZXRfY291bnRlcihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgc3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyAqY291bnRlciwgdTMyICp2YWx1ZSk7XG4mIzQzO1xuIHN0YXRpYyB1OCBkcm1fdG9feGVfcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxuIHtcbiBcdHN3aXRjaCAoc2V2ZXJpdHkpIHtcbkBAIC0xMDIsNiAmIzQzOzEwNCwxOCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChzZXZlcml0eSkge1xuJiM0MztcdGNhc2UgWEVfUkFTX1NFVl9DT1JSRUNUQUJMRTpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfQ09SUkVDVEFCTEU7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfU0VWX1VOQ09SUkVDVEFCTEU6XG4mIzQzO1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX1VOQ09SUkVDVEFCTEU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIHtcbiBcdHN3aXRjaCAoY29tcG9uZW50KSB7XG5AQCAtMTIwLDYgJiM0MzsxMzQsMjQgQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfY29tcG9uZW50KHU4IGNvbXBvbmVudClcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX2NvbXBvbmVudCh1OCBjb21wb25lbnQpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuJiM0MztcdGNhc2UgWEVfUkFTX0NPTVBfREVWSUNFX01FTU9SWTpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0RFVklDRV9NRU1PUlk7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfQ09NUF9DT1JFX0NPTVBVVEU6XG4mIzQzO1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9DT1JFX0NPTVBVVEU7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxuJiM0MztcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfUENJRTtcbiYjNDM7XHRjYXNlIFhFX1JBU19DT01QX0ZBQlJJQzpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0ZBQlJJQztcbiYjNDM7XHRjYXNlIFhFX1JBU19DT01QX1NPQ19JTlRFUk5BTDpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX1NPQ19JTlRFUk5BTDtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfTUFYO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJhc19zdGF0dXNfdG9fZXJybm8odTMyIHN0YXR1cylcbiB7XG4gXHRzd2l0Y2ggKHN0YXR1cykge1xuQEAgLTIxOCw2ICYjNDM7MjUwLDI2IEBAIHN0YXRpYyB2b2lkIHJhc191c3BfYWVyX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRkZXZfZGJnKFx1MDAyNnVzcC1cdTAwM2VkZXYsIFwmIzM0O1VuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxuXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJhc19zZW5kX2Vycm9yX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBzZXZlcml0eSwgdTggY29tcG9uZW50KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBjb3VudGVyID0gezB9O1xuJiM0MztcdHU4IGRybV9zZXZlcml0eSwgZHJtX2NvbXBvbmVudDtcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y291bnRlci5jb21tb24uc2V2ZXJpdHkgPSBzZXZlcml0eTtcbiYjNDM7XHRjb3VudGVyLmNvbW1vbi5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcdTAwMjZjb3VudGVyLCBcdTAwMjZ2YWx1ZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZHJtX3NldmVyaXR5ID0geGVfdG9fZHJtX3Jhc19zZXZlcml0eShzZXZlcml0eSk7XG4mIzQzO1x0ZHJtX2NvbXBvbmVudCA9IHhlX3RvX2RybV9yYXNfY29tcG9uZW50KGNvbXBvbmVudCk7XG4mIzQzO1xuJiM0MztcdHhlX2RybV9yYXNfZXZlbnQoeGUsIGRybV9jb21wb25lbnQsIGRybV9zZXZlcml0eSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXG4ge1xuIFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXHUwMDNlZGV0YWlscztcbkBAIC0zMTIsOCAmIzQzOzM2NCwxMCBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuIFx0c3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopXHUwMDI2cmVzcG9uc2UtXHUwMDNlZGF0YTtcbiBcdHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmVycm9ycyA9IHBlbmRpbmctXHUwMDNlY291bnRlcnM7XG4gXHR1MzIgaWQsIG5jb3VudGVycyA9IHBlbmRpbmctXHUwMDNlbmNvdW50ZXJzO1xuJiM0MztcdHU4IHNlbnQgPSAwO1xuIFxuIFx0QlVJTERfQlVHX09OKHNpemVvZihyZXNwb25zZS1cdTAwM2VkYXRhKSBcdTAwM2Mgc2l6ZW9mKCpwZW5kaW5nKSk7XG4mIzQzO1x0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXHUwMDNjIFhFX1JBU19DT01QX01BWCk7XG4gXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xuIFxuIFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFx1MDAzZSBYRV9SQVNfTlVNX0NPVU5URVJTKVxuQEAgLTMyOSw2ICYjNDM7MzgzLDEzIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsXG4gXG4gXHRcdHhlX3dhcm4oeGUsIFwmIzM0O1tSQVNdOiAlcyAlcyBkZXRlY3RlZFxcblwmIzM0OyxcbiBcdFx0XHRjb21wX3RvX3N0cihjb21wb25lbnQpLCBzZXZfdG9fc3RyKHNldmVyaXR5KSk7XG4mIzQzO1xuJiM0MztcdFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cbiYjNDM7XHRcdGlmIChzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuJiM0MztcbiYjNDM7XHRcdHJhc19zZW5kX2Vycm9yX2V2ZW50KHhlLCBzZXZlcml0eSwgY29tcG9uZW50KTtcbiBcdH1cbiB9XG4gXG5AQCAtMzgyLDYgJiM0Mzs0NDMsNyBAQCBlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rpb24geGVfcmFzX3Byb2Nlc3NfZXJyb3JzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0ZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGZpbmFsX2FjdGlvbjtcbiBcdHUzMiByZW1haW5pbmcgPSBYRV9TWVNDVFJMX0ZMT09EX0xJTUlUO1xuIFx0c3RydWN0IHhlX3Jhc19nZXRfc29jX2Vycm9yIHJlc3BvbnNlO1xuJiM0MztcdHU4IHNlbnQgPSAwO1xuIFx0c2l6ZV90IHJsZW47XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTQyNSw2ICYjNDM7NDg3LDEyIEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRcdFx0eGVfaW5mbyh4ZSwgXCYjMzQ7W1JBU106ICVzICVzIGRldGVjdGVkXFxuXCYjMzQ7LCBjb21wX3RvX3N0cihjb21wb25lbnQpLFxuIFx0XHRcdFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xuIFxuJiM0MztcdFx0XHQvKiBTZW5kIGV2ZW50IG9uY2UgcGVyIGNvbXBvbmVudCAqL1xuJiM0MztcdFx0XHRpZiAoIShzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSkpIHtcbiYjNDM7XHRcdFx0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuJiM0MztcdFx0XHRcdHJhc19zZW5kX2Vycm9yX2V2ZW50KHhlLCBzZXZlcml0eSwgY29tcG9uZW50KTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiBcdFx0XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuIFx0XHRcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxuIFx0XHRcdFx0YWN0aW9uID0gaGFuZGxlX2NvcmVfY29tcHV0ZV9lcnJvcnMoYXJyKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcbmluZGV4IDBiZWVkZTNkZGM0ZTRiLi5lZTJjYWEwZWRjNmY5MiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvZHJtL2RybV9yYXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXG5AQCAtODAsOSAmIzQzOzgwLDE0IEBAIHN0cnVjdCBkcm1fZGV2aWNlO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fUkFTKVxuIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSk7XG4gdm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcbiYjNDM7aW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLFxuJiM0MztcdFx0XHQgICB1MzIgdmFsdWUpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IGNoYXIgKmVycm9yX25hbWUsIHUzMiB2YWx1ZSlcbiYjNDM7eyByZXR1cm4gMDsgfVxuICNlbmRpZlxuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcbmluZGV4IDIxOGEzZWU4NjgwNTI3Li5lYWI4MjMxYWE4N2NiZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxuQEAgLTM4LDEzICYjNDM7MzgsMjggQEAgZW51bSB7XG4gXHREUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKVxuIH07XG4gXG4mIzQzO2VudW0ge1xuJiM0MztcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSA9IDEsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfTkFNRSxcbiYjNDM7XHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLFxuJiM0MztcbiYjNDM7XHRfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVgsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggLSAxKVxuJiM0Mzt9O1xuJiM0MztcbiBlbnVtIHtcbiBcdERSTV9SQVNfQ01EX0xJU1RfTk9ERVMgPSAxLFxuIFx0RFJNX1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIsXG4gXHREUk1fUkFTX0NNRF9DTEVBUl9FUlJPUl9DT1VOVEVSLFxuJiM0MztcdERSTV9SQVNfQ01EX0VSUk9SX0VWRU5ULFxuIFxuIFx0X19EUk1fUkFTX0NNRF9NQVgsXG4gXHREUk1fUkFTX0NNRF9NQVggPSAoX19EUk1fUkFTX0NNRF9NQVggLSAxKVxuIH07XG4gXG4mIzQzOyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcdFwmIzM0O2Vycm9yLXJlcG9ydFwmIzM0O1xuJiM0MztcbiAjZW5kaWYgLyogX1VBUElfTElOVVhfRFJNX1JBU19IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDc6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MDE2MTdjNDBiMTVjYzI1YzJlYWVkMGE3Y2RkZWUyYWJmMzQwYmM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDc6MDg6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0CmluZGV4IDgzYzIxODUzYjc0YjYwLi40MDZlNGM0OWJhYzFmZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QKQEAgLTU2LDYgJiM0Mzs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOgogICBgYG5vZGUtaWRgYCBhbmQgYGBlcnJvci1pZGBgIGFzIHBhcmFtZXRlcnMuCiAqIENsZWFyIHNwZWNpZmljIGVycm9yIGNvdW50ZXJzIHdpdGggdGhlIGBgY2xlYXItZXJyb3ItY291bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGgKICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLgomIzQzOyogU3Vic2NyaWJlIHRvIHRoZSBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGBgZXJyb3ItZXZlbnRgYC4KIAogWUFNTC1iYXNlZCBJbnRlcmZhY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTEsMyAmIzQzOzExMiwyMyBAQCBFeGFtcGxlOiBDbGVhciBhbiBlcnJvciBjb3VudGVyIGZvciBhIGdpdmVuIG5vZGUKIAogICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAmIzM5O3smIzM0O25vZGUtaWQmIzM0OzowLCAmIzM0O2Vycm9yLWlkJiMzNDs6MX0mIzM5OwogICAgIE5vbmUKJiM0MzsKJiM0MztFeGFtcGxlOiBTdWJzY3JpYmUgdG8gYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAKJiM0MzsKJiM0MzsuLiBjb2RlLWJsb2NrOjogYmFzaAomIzQzOwomIzQzOyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tb3V0cHV0LWpzb24gLS1zdWJzY3JpYmUgZXJyb3ItcmVwb3J0CiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IGpzb24KJiM0MzsKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7ZXJyb3ItZXZlbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bXNnJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O2RldmljZS1uYW1lJiMzNDs6ICYjMzQ7MDAwMDowMzowMC4wJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtub2RlLWlkJiMzNDs6IDEsCiYjNDM7ICAgICAgICAgICAgJiMzNDtub2RlLW5hbWUmIzM0OzogJiMzNDt1bmNvcnJlY3RhYmxlLWVycm9ycyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7ZXJyb3ItaWQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O2Vycm9yLW5hbWUmIzM0OzogJiMzNDtlcnJvcl9uYW1lMSYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7ZXJyb3ItdmFsdWUmIzM0OzogMQomIzQzOyAgICAgICAgfQomIzQzOyAgICB9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbAppbmRleCBlMTEzMDU2ZjhjMDE2Yy4uOGFlZDNkNDUxNWU1YWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kcm1fcmFzLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbApAQCAtNjksNiAmIzQzOzY5LDMzIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBlcnJvci12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKICAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSByZXF1ZXN0ZWQgZXJyb3IgY291bnRlci4KJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnMKJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZQomIzQzOyAgICAgICAgdHlwZTogc3RyaW5nCiYjNDM7ICAgICAgICBkb2M6IERldmljZSAoUENJIEJERiwgVVVJRCkgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbm9kZS1pZAomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IG5vZGUtbmFtZQomIzQzOyAgICAgICAgdHlwZTogc3RyaW5nCiYjNDM7ICAgICAgICBkb2M6IE5hbWUgb2YgdGhlIG5vZGUgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZXJyb3ItaWQKJiM0MzsgICAgICAgIHR5cGU6IHUzMgomIzQzOyAgICAgICAgZG9jOiBJRCBvZiB0aGUgZXJyb3IgY291bnRlci4KJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBlcnJvci1uYW1lCiYjNDM7ICAgICAgICB0eXBlOiBzdHJpbmcKJiM0MzsgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZXJyb3ItdmFsdWUKJiM0MzsgICAgICAgIHR5cGU6IHUzMgomIzQzOyAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyLgogCiBvcGVyYXRpb25zOgogICBsaXN0OgpAQCAtMTI0LDMgJiM0MzsxNTEsMjQgQEAgb3BlcmF0aW9uczoKICAgICAgIGRvOgogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIGF0dHJpYnV0ZXM6ICppZC1hdHRycwomIzQzOyAgICAtCiYjNDM7ICAgICAgbmFtZTogZXJyb3ItZXZlbnQKJiM0MzsgICAgICBkb2M6ICZndDstCiYjNDM7ICAgICAgICAgICBSZXBvcnQgYW4gZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlLgomIzQzOyAgICAgICAgICAgVGhlIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXZpY2UsIG5vZGUgYW5kIGVycm9yIGluZm9ybWF0aW9uCiYjNDM7ICAgICAgICAgICBvZiB0aGUgZXJyb3IgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LgomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGVycm9yLWV2ZW50LWF0dHJzCiYjNDM7ICAgICAgbWNncnA6IGVycm9yLXJlcG9ydAomIzQzOyAgICAgIGV2ZW50OgomIzQzOyAgICAgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAgICAgLSBkZXZpY2UtbmFtZQomIzQzOyAgICAgICAgICAtIG5vZGUtaWQKJiM0MzsgICAgICAgICAgLSBub2RlLW5hbWUKJiM0MzsgICAgICAgICAgLSBlcnJvci1pZAomIzQzOyAgICAgICAgICAtIGVycm9yLW5hbWUKJiM0MzsgICAgICAgICAgLSBlcnJvci12YWx1ZQomIzQzOwomIzQzO21jYXN0LWdyb3VwczoKJiM0MzsgIGxpc3Q6CiYjNDM7ICAgIC0KJiM0MzsgICAgICBuYW1lOiBlcnJvci1yZXBvcnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCkBAIC00MSw2ICYjNDM7NDEsMTEgQEAKICAqICAgIFVzZXJzcGFjZSBtdXN0IHByb3ZpZGUgTm9kZSBJRCwgRXJyb3IgSUQuCiAgKiAgICBDbGVhcnMgc3BlY2lmaWMgZXJyb3IgY291bnRlciBvZiBhIG5vZGUgaWYgc3VwcG9ydGVkLgogICoKJiM0MzsgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50cwomIzQzOyAqCiYjNDM7ICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGUKJiM0MzsgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LgomIzQzOyAqCiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjoKICAqCiAgKiAtIGRybV9yYXNfbm9kZV9yZWdpc3RlcigpOiBSZWdpc3RlcnMgYSBuZXcgbm9kZSBhbmQgYXNzaWducwpAQCAtMTg2LDYgJiM0MzsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLAogCQkJICAgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsCiYjNDM7CQkJCSAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS0mZ3Q7ZGV2aWNlX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwgbm9kZS0mZ3Q7aWQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9OQU1FLCBub2RlLSZndDtub2RlX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsIGVycm9yX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0dXJuIG5sYV9wdXRfdTMyKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLCB2YWx1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLAogCQkJICAgIHUzMiBlcnJvcl9pZCkKIHsKQEAgLTIyMiw2ICYjNDM7MjU1LDc0IEBAIHN0YXRpYyBpbnQgZG9pdF9yZXBseV92YWx1ZShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCB1MzIgbm9kZV9pZCwKIAlyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50CiYjNDM7ICogQG5vZGU6IE5vZGUgc3RydWN0dXJlCiYjNDM7ICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3IKJiM0MzsgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3IKJiM0MzsgKiBAdmFsdWU6IFZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLgomIzQzOyAqCiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsCiYjNDM7ICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVycwomIzQzOyAqICAgICAgICAgIG9yIG90aGVyIGF0b21pYyBjb250ZXh0IG11c3QgZGVmZXIgZXZlbnQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsCiYjNDM7CQkJICAgdTMyIHZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IGdlbmxfaW5mbyBpbmZvOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqbXNnOwomIzQzOwlzdHJ1Y3QgbmxhdHRyICpoZHI7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhZXJyb3JfbmFtZSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkvKiBDaGVjayB0aGUgbm9kZSBpcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCAqLwomIzQzOwlpZiAoeGFfbG9hZCgmYW1wO2RybV9yYXNfeGEsIG5vZGUtJmd0O2lkKSAhPSBub2RlKQomIzQzOwkJcmV0dXJuIC1FTk9FTlQ7CiYjNDM7CiYjNDM7CS8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi8KJiM0MzsJaWYgKG5vZGUtJmd0O3R5cGUgIT0gRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUikKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJLyogQ2hlY2sgdGhlIGVycm9yIElEIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgKi8KJiM0MzsJaWYgKGVycm9yX2lkICZsdDsgbm9kZS0mZ3Q7ZXJyb3JfY291bnRlcl9yYW5nZS5maXJzdCB8fAomIzQzOwkgICAgZXJyb3JfaWQgJmd0OyBub2RlLSZndDtlcnJvcl9jb3VudGVyX3JhbmdlLmxhc3QpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJZ2VubF9pbmZvX2luaXRfbnRmKCZhbXA7aW5mbywgJmFtcDtkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpOwomIzQzOwomIzQzOwltc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghbXNnKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWhkciA9IGdlbmxtc2dfaXB1dChtc2csICZhbXA7aW5mbyk7CiYjNDM7CWlmICghaGRyKSB7CiYjNDM7CQlyZXQgPSAtRU1TR1NJWkU7CiYjNDM7CQlnb3RvIGZyZWVfbXNnOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IG1zZ19wdXRfZXJyb3JfZXZlbnRfYXR0cnMobXNnLCBub2RlLCBlcnJvcl9pZCwgZXJyb3JfbmFtZSwgdmFsdWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBjYW5jZWxfbXNnOwomIzQzOwomIzQzOwlnZW5sbXNnX2VuZChtc2csIGhkcik7CiYjNDM7CWdlbmxtc2dfbXVsdGljYXN0X2FsbG5zKCZhbXA7ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztjYW5jZWxfbXNnOgomIzQzOwlnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7CiYjNDM7ZnJlZV9tc2c6CiYjNDM7CW5sbXNnX2ZyZWUobXNnKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTChkcm1fcmFzX25sX2Vycm9yX2V2ZW50KTsKJiM0MzsKIC8qKgogICogZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9kdW1waXQoKSAtIER1bXAgYWxsIEVycm9yIENvdW50ZXJzCiAgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2UgYnVmZmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYwppbmRleCBkZWExYzFiMjQ5NGU4MS4uOWQzMTIzY2M5ZjljYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYwpAQCAtNTgsNiAmIzQzOzU4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZHJtX3Jhc19ubF9vcHNbXSA9IHsKIAl9LAogfTsKIAomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgZHJtX3Jhc19ubF9tY2dycHNbXSA9IHsKJiM0MzsJW0RSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUXSA9IHsgJiMzNDtlcnJvci1yZXBvcnQmIzM0OywgfSwKJiM0Mzt9OwomIzQzOwogc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHsKIAkubmFtZQkJPSBEUk1fUkFTX0ZBTUlMWV9OQU1FLAogCS52ZXJzaW9uCT0gRFJNX1JBU19GQU1JTFlfVkVSU0lPTiwKQEAgLTY2LDQgJiM0Mzs3MCw2IEBAIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLm1vZHVsZQkJPSBUSElTX01PRFVMRSwKIAkuc3BsaXRfb3BzCT0gZHJtX3Jhc19ubF9vcHMsCiAJLm5fc3BsaXRfb3BzCT0gQVJSQVlfU0laRShkcm1fcmFzX25sX29wcyksCiYjNDM7CS5tY2dycHMJCT0gZHJtX3Jhc19ubF9tY2dycHMsCiYjNDM7CS5uX21jZ3Jwcwk9IEFSUkFZX1NJWkUoZHJtX3Jhc19ubF9tY2dycHMpLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oCmluZGV4IGEzOTg2NDM1NzJhNWEwLi4wM2VjMjc1YWNhOTI5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oCkBAIC0yMSw2ICYjNDM7MjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsCiBpbnQgZHJtX3Jhc19ubF9jbGVhcl9lcnJvcl9jb3VudGVyX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkJc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7CiAKJiM0MztlbnVtIHsKJiM0MzsJRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsCiYjNDM7fTsKJiM0MzsKIGV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHk7CiAKICNlbmRpZiAvKiBfTElOVVhfRFJNX1JBU19HRU5fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMKaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMKQEAgLTE4NSw2ICYjNDM7MTg1LDM3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfbm9kZXMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZQomIzQzOyAqIEB4ZTogeGUgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEBjb21wb25lbnQ6IGVycm9yIGNvbXBvbmVudCAoc2VlICZhbXA7ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudCkKJiM0MzsgKiBAc2V2ZXJpdHk6IGVycm9yIHNldmVyaXR5IChzZWUgJmFtcDtlbnVtIGRybV94ZV9yYXNfZXJyb3Jfc2V2ZXJpdHkpCiYjNDM7ICogQHZhbHVlOiB2YWx1ZSBvZiBlcnJvciBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlLgomIzQzOyAqLwomIzQzO3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IHhlX2RybV9yYXMgKnJhcyA9ICZhbXA7eGUtJmd0O3JhczsKJiM0MzsJc3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy0mZ3Q7aW5mb1tzZXZlcml0eV07CiYjNDM7CXN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIEV2ZW50IGlzIHN1cHBvcnRlZCBvbmx5IGlmIGRybS1yYXMgaXMgZW5hYmxlZCAqLwomIzQzOwlpZiAoIXhlLSZndDtpbmZvLmhhc19kcm1fcmFzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlub2RlID0gJmFtcDtyYXMtJmd0O25vZGVbc2V2ZXJpdHldOwomIzQzOwomIzQzOwlpZiAoIWluZm8gfHwgIWluZm9bY29tcG9uZW50XS5uYW1lKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlyZXQgPSBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KG5vZGUsIGNvbXBvbmVudCwgaW5mb1tjb21wb25lbnRdLm5hbWUsIHZhbHVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRybV9lcnJfcmF0ZWxpbWl0ZWQoJmFtcDt4ZS0mZ3Q7ZHJtLCAmIzM0O2RybS1yYXMgZXJyb3ItZXZlbnQgZmFpbGVkOiAlZCBmb3IgJXMgJXNcbiYjMzQ7LCByZXQsCiYjNDM7CQkJCSAgICBpbmZvW2NvbXBvbmVudF0ubmFtZSwgZXJyb3Jfc2V2ZXJpdHlbc2V2ZXJpdHldKTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTCiAgKiBAeGU6IHhlIGRldmljZSBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmgKaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmgKQEAgLTUsMTEgJiM0Mzs1LDE0IEBACiAjaWZuZGVmIF9YRV9EUk1fUkFTX0hfCiAjZGVmaW5lIF9YRV9EUk1fUkFTX0hfCiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsKIHN0cnVjdCB4ZV9kZXZpY2U7CiAKICNkZWZpbmUgZm9yX2VhY2hfZXJyb3Jfc2V2ZXJpdHkoaSkJXAogCWZvciAoaSA9IDA7IGkgJmx0OyBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYOyBpJiM0MzsmIzQzOykKIAogaW50IHhlX2RybV9yYXNfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7CiYjNDM7dm9pZCB4ZV9kcm1fcmFzX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBjb21wb25lbnQsIHU4IHNldmVyaXR5LCB1MzIgdmFsdWUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwppbmRleCBhMzFlMDZiOGFhNjdhYy4uZDQzZjYxNGRlNzIzNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMKQEAgLTkwLDYgJiM0Mzs5MCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ3B1X2hlYWx0aF9zdGF0ZXNbXSA9IHsKIH07CiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTsKIAomIzQzO3N0YXRpYyBpbnQgZ2V0X2NvdW50ZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmNvdW50ZXIsIHUzMiAqdmFsdWUpOwomIzQzOwogc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiB7CiAJc3dpdGNoIChzZXZlcml0eSkgewpAQCAtMTAyLDYgJiM0MzsxMDQsMTggQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiAJfQogfQogCiYjNDM7c3RhdGljIHU4IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKHNldmVyaXR5KSB7CiYjNDM7CWNhc2UgWEVfUkFTX1NFVl9DT1JSRUNUQUJMRToKJiM0MzsJCXJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfQ09SUkVDVEFCTEU7CiYjNDM7CWNhc2UgWEVfUkFTX1NFVl9VTkNPUlJFQ1RBQkxFOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9VTkNPUlJFQ1RBQkxFOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9NQVg7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KQogewogCXN3aXRjaCAoY29tcG9uZW50KSB7CkBAIC0xMjAsNiAmIzQzOzEzNCwyNCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KQogCX0KIH0KIAomIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX2NvbXBvbmVudCh1OCBjb21wb25lbnQpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNvbXBvbmVudCkgewomIzQzOwljYXNlIFhFX1JBU19DT01QX0RFVklDRV9NRU1PUlk6CiYjNDM7CQlyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9ERVZJQ0VfTUVNT1JZOwomIzQzOwljYXNlIFhFX1JBU19DT01QX0NPUkVfQ09NUFVURToKJiM0MzsJCXJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0NPUkVfQ09NUFVURTsKJiM0MzsJY2FzZSBYRV9SQVNfQ09NUF9QQ0lFOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfUENJRTsKJiM0MzsJY2FzZSBYRV9SQVNfQ09NUF9GQUJSSUM6CiYjNDM7CQlyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9GQUJSSUM7CiYjNDM7CWNhc2UgWEVfUkFTX0NPTVBfU09DX0lOVEVSTkFMOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfU09DX0lOVEVSTkFMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfTUFYOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCByYXNfc3RhdHVzX3RvX2Vycm5vKHUzMiBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsKQEAgLTIxOCw2ICYjNDM7MjUwLDI2IEBAIHN0YXRpYyB2b2lkIHJhc191c3BfYWVyX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJZGV2X2RiZygmYW1wO3VzcC0mZ3Q7ZGV2LCAmIzM0O1VuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCByYXNfc2VuZF9lcnJvcl9ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggc2V2ZXJpdHksIHU4IGNvbXBvbmVudCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgY291bnRlciA9IHswfTsKJiM0MzsJdTggZHJtX3NldmVyaXR5LCBkcm1fY29tcG9uZW50OwomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWNvdW50ZXIuY29tbW9uLnNldmVyaXR5ID0gc2V2ZXJpdHk7CiYjNDM7CWNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDsKJiM0MzsKJiM0MzsJcmV0ID0gZ2V0X2NvdW50ZXIoeGUsICZhbXA7Y291bnRlciwgJmFtcDt2YWx1ZSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRybV9zZXZlcml0eSA9IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkoc2V2ZXJpdHkpOwomIzQzOwlkcm1fY29tcG9uZW50ID0geGVfdG9fZHJtX3Jhc19jb21wb25lbnQoY29tcG9uZW50KTsKJiM0MzsKJiM0MzsJeGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHU4IGhhbmRsZV9jb3JlX2NvbXB1dGVfZXJyb3JzKHN0cnVjdCB4ZV9yYXNfZXJyb3JfYXJyYXkgKmFycikKIHsKIAlzdHJ1Y3QgeGVfcmFzX2NvbXB1dGVfZXJyb3IgKmVycm9yX2luZm8gPSAodm9pZCAqKWFyci0mZ3Q7ZGV0YWlsczsKQEAgLTMxMiw4ICYjNDM7MzY0LDEwIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsCiAJc3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopJmFtcDtyZXNwb25zZS0mZ3Q7ZGF0YTsKIAlzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICplcnJvcnMgPSBwZW5kaW5nLSZndDtjb3VudGVyczsKIAl1MzIgaWQsIG5jb3VudGVycyA9IHBlbmRpbmctJmd0O25jb3VudGVyczsKJiM0MzsJdTggc2VudCA9IDA7CiAKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHJlc3BvbnNlLSZndDtkYXRhKSAmbHQ7IHNpemVvZigqcGVuZGluZykpOwomIzQzOwlCVUlMRF9CVUdfT04oQklUU19QRVJfVFlQRShzZW50KSAmbHQ7IFhFX1JBU19DT01QX01BWCk7CiAJeGVfZGV2aWNlX2Fzc2VydF9tZW1fYWNjZXNzKHhlKTsKIAogCWlmICghbmNvdW50ZXJzIHx8IG5jb3VudGVycyAmZ3Q7IFhFX1JBU19OVU1fQ09VTlRFUlMpCkBAIC0zMjksNiAmIzQzOzM4MywxMyBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAogCiAJCXhlX3dhcm4oeGUsICYjMzQ7W1JBU106ICVzICVzIGRldGVjdGVkXG4mIzM0OywKIAkJCWNvbXBfdG9fc3RyKGNvbXBvbmVudCksIHNldl90b19zdHIoc2V2ZXJpdHkpKTsKJiM0MzsKJiM0MzsJCS8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovCiYjNDM7CQlpZiAoc2VudCAmYW1wOyBCSVQoY29tcG9uZW50KSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXNlbnQgfD0gQklUKGNvbXBvbmVudCk7CiYjNDM7CiYjNDM7CQlyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7CiAJfQogfQogCkBAIC0zODIsNiAmIzQzOzQ0Myw3IEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGZpbmFsX2FjdGlvbjsKIAl1MzIgcmVtYWluaW5nID0gWEVfU1lTQ1RSTF9GTE9PRF9MSU1JVDsKIAlzdHJ1Y3QgeGVfcmFzX2dldF9zb2NfZXJyb3IgcmVzcG9uc2U7CiYjNDM7CXU4IHNlbnQgPSAwOwogCXNpemVfdCBybGVuOwogCWludCByZXQ7CiAKQEAgLTQyNSw2ICYjNDM7NDg3LDEyIEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJCQl4ZV9pbmZvKHhlLCAmIzM0O1tSQVNdOiAlcyAlcyBkZXRlY3RlZFxuJiMzNDssIGNvbXBfdG9fc3RyKGNvbXBvbmVudCksCiAJCQkJc2V2X3RvX3N0cihzZXZlcml0eSkpOwogCiYjNDM7CQkJLyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi8KJiM0MzsJCQlpZiAoIShzZW50ICZhbXA7IEJJVChjb21wb25lbnQpKSkgewomIzQzOwkJCQlzZW50IHw9IEJJVChjb21wb25lbnQpOwomIzQzOwkJCQlyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7CiYjNDM7CQkJfQomIzQzOwogCQkJc3dpdGNoIChjb21wb25lbnQpIHsKIAkJCWNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOgogCQkJCWFjdGlvbiA9IGhhbmRsZV9jb3JlX2NvbXB1dGVfZXJyb3JzKGFycik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmgKaW5kZXggMGJlZWRlM2RkYzRlNGIuLmVlMmNhYTBlZGM2ZjkyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fcmFzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oCkBAIC04MCw5ICYjNDM7ODAsMTQgQEAgc3RydWN0IGRybV9kZXZpY2U7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX1JBUykKIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSk7CiB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpOwomIzQzO2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwKJiM0MzsJCQkgICB1MzIgdmFsdWUpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKSB7IHJldHVybiAwOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9CiYjNDM7c3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsCiYjNDM7CQkJCQkgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKQomIzQzO3sgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmgKaW5kZXggMjE4YTNlZTg2ODA1MjcuLmVhYjgyMzFhYTg3Y2JmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaApAQCAtMzgsMTMgJiM0MzszOCwyOCBAQCBlbnVtIHsKIAlEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKQogfTsKIAomIzQzO2VudW0gewomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfREVWSUNFX05BTUUgPSAxLAomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfTkFNRSwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX0lELAomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLAomIzQzOwomIzQzOwlfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVgsCiYjNDM7CURSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTUFYIC0gMSkKJiM0Mzt9OwomIzQzOwogZW51bSB7CiAJRFJNX1JBU19DTURfTElTVF9OT0RFUyA9IDEsCiAJRFJNX1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIsCiAJRFJNX1JBU19DTURfQ0xFQVJfRVJST1JfQ09VTlRFUiwKJiM0MzsJRFJNX1JBU19DTURfRVJST1JfRVZFTlQsCiAKIAlfX0RSTV9SQVNfQ01EX01BWCwKIAlEUk1fUkFTX0NNRF9NQVggPSAoX19EUk1fUkFTX0NNRF9NQVggLSAxKQogfTsKIAomIzQzOyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlQJJiMzNDtlcnJvci1yZXBvcnQmIzM0OwomIzQzOwogI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc5CgkJCQkJCQlvdXRwdXQ6IDgyCgkJCQkJCQl0aG91Z2h0czogMTExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBOZXRsaW5rIEVycm9yIEV2ZW50IFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBtdWx0aWNhc3QgZXZlbnQsIGBlcnJvci1ldmVudGAsIHdpdGhpbiB0aGUgYGRybV9yYXNgIGZhbWlseS4gIFRoZSBnb2FsIGlzIHRvIGluZm9ybSB1c2Vyc3BhY2UgYWJvdXQgaGFyZHdhcmUgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB4ZWAgZHJpdmVyLiBXZSYjMzk7cmUgYWRkaW5nIGEgZnVuY3Rpb24gYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIHRvIHNlbmQgdGhpcyBldmVudC4gVGhlIGB4ZWAgZHJpdmVyIGlzIHNldCB1cCB0byBjYWxsIGByYXNfc2VuZF9lcnJvcl9ldmVudGAgd2hlbmV2ZXIgYSBSQVMgZXJyb3IsIG9yIGEgdGhyZXNob2xkIGJlaW5nIGNyb3NzZWQsIGlzIGRldGVjdGVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBkaXJlY3Rpb24gb2YgZGF0YSBmbG93LiAgVGhpcyBpcyBhbiBldmVudCAqdG8qIHVzZXJzcGFjZSwgbm90IGEgY29tbWFuZCAqZnJvbSogdXNlcnNwYWNlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNgIHRvIGluY2x1ZGUgdGhlIGBkcm1fcmFzX25sX2Vycm9yX2V2ZW50YCBmdW5jdGlvbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igc2VuZGluZyB0aGUgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZS4gQWxzbywgYGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY2AgaXMgYmVpbmcgYWx0ZXJlZCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW5ldmVyIGEgaGFyZHdhcmUgZXJyb3IgaXMgZGV0ZWN0ZWQuCgpUaGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIGlmIHRoZXJlIGFyZSBhbnkgbmV3ICppbnB1dHMqIGZyb20gdXNlcnNwYWNlIGJlaW5nIGludHJvZHVjZWQuICBUaGUgbmV0bGluayBldmVudCBpcyBzaW1wbHkgc2VudCB0byB1c2Vyc3BhY2Ug4oCTIGVzc2VudGlhbGx5IGEgbm90aWZpY2F0aW9uIG1lY2hhbmlzbS4gIFVzZXJzcGFjZSBjYW4gc3Vic2NyaWJlIHRvIHRoZSBtdWx0aWNhc3QgZ3JvdXAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgbmV0bGluayBmdW5jdGlvbmFsaXR5LiBUaGUgYWN0dWFsIGV2ZW50IGl0c2VsZiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGtlcm5lbCBpbiByZXNwb25zZSB0byBhIGhhcmR3YXJlIGVycm9yIGNvbmRpdGlvbi4gVGhlIGBkcm1fcmFzLnlhbWxgIGZpbGUgY29uZmlybXMgdGhpczogaXQgZGVzY3JpYmVzIHRoZSBgZXJyb3ItZXZlbnRgIGFzIGEgcmVwb3J0aW5nIG1lY2hhbmlzbSB0aGF0IGluY2x1ZGVzIGF0dHJpYnV0ZXMgbGlrZSBkZXZpY2UgbmFtZSwgbm9kZSBJRCwgYW5kIGVycm9yIGluZm9ybWF0aW9uLgoKSSYjMzk7bSBjaGVja2luZyB0aGUgZW51bWVyYXRpb24gZm9yIGBEUk1fUkFTX0NNRF9FUlJPUl9FVkVOVGAsIGJ1dCBpdCYjMzk7cyBhbiBldmVudCwgbm90IGEgY29tbWFuZC4gVGhlcmUgYXJlIG5vIG5ldyBvcGVyYXRpb25zIGRlZmluZWQgd2l0aGluIGBkcm1fcmFzX25sLmNgIHRoYXQgd291bGQgcHJvdmlkZSBhIHdheSBmb3IgdXNlcnNwYWNlIHRvIHRyaWdnZXIgdGhpcyBldmVudC4gRXhhbWluaW5nIHRoZSBgZHJtX3Jhc19ubF9vcHNgIGFuZCB0aGUgYGRybV9yYXNfbmxfbWNncnBzYCBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggb25seSBhZGRzIGEgbmV3IG11bHRpY2FzdCBncm91cCBhbmQgYW4gZXZlbnQuIEl0IGRvZXNuJiMzOTt0IGVuYWJsZSB1c2Vyc3BhY2UgdG8gc2VuZCBgRFJNX1JBU19DTURfRVJST1JfRVZFTlRgLiBUaGUgcGF0Y2ggY3JlYXRlcyB0aGUgbmV3IG11bHRpY2FzdCBncm91cCBgZXJyb3ItcmVwb3J0YC4KCkNydWNpYWxseSwgY2FuIFN5emthbGxlciwgb3IgYW55IG90aGVyIGZ1enplciwgdHJpZ2dlciB0aGlzIGV2ZW50PyBOb3QgZGlyZWN0bHksIHNpbmNlIHRoZSBldmVudCByZWxpZXMgb24gaGFyZHdhcmUgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGB4ZWAgZHJpdmVyLCBhbmQgaXQmIzM5O3Mgc2ltcGx5IGluZm9ybWluZyB1c2Vyc3BhY2Ugb2Ygc29tZXRoaW5nIHRoYXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuIFRoZXJlJiMzOTtzIG5vIG5ldyBpb2N0bCBvciBuZXRsaW5rIGNvbW1hbmQgdG8gYWN0aXZlbHkgKnRyaWdnZXIqIHRoaXMgcmVwb3J0aW5nLiBUaGUgYWRkZWQgY29kZSBpcyBqdXN0IHJlc3BvbmRpbmcgdG8gZXhpc3RpbmcgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGhhcmR3YXJlIGl0c2VsZi4KCkkmIzM5O20gbm93IHNhdGlzZmllZC4gVGhlcmUmIzM5O3Mgbm8gbmV3IGF0dGFjayBzdXJmYWNlIGNyZWF0ZWQgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBuZXcgaW5wdXQgZnJvbSB1c2Vyc3BhY2UgdG8gZnV6ei4gVGhlIG9ubHkgdXNlcnNwYWNlIGludGVyYWN0aW9uIGlzIHN1YnNjcmliaW5nIHRvIHRoZSBtdWx0aWNhc3QgZ3JvdXAsIGFuZCB0aGF0JiMzOTtzIGhhbmRsZWQgYnkgZ2VuZXJpYyBuZXRsaW5rIGNvZGUsIHNvIGl0IGlzIHNhZmUuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgeGVfZHJtX3Jhc19ldmVudGAgaXMgaW5kZWVkIGNhbGxlZCBmcm9tIGByYXNfc2VuZF9lcnJvcl9ldmVudGAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkYCBhbmQgYHhlX3Jhc19wcm9jZXNzX2Vycm9yc2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaGFyZHdhcmUgZXJyb3IgaGFuZGxpbmcgcGF0aHMuICBObyBuZXcgaW5wdXQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuIFRoZSBwYXRjaCBqdXN0IGFkZHMgYSBrZXJuZWwtdG8tdXNlcnNwYWNlIG11bHRpY2FzdCBldmVudCB0byByZXBvcnQgUkFTIGVycm9ycywgd2l0aCBubyBhZGRlZCBhdHRhY2sgc3VyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA3OjA4OjE5LjU5ODI1NzYzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzIwMzQwNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDc6MDg6MTkuNTk4MjY0ODEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA0MjA1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MDE2MTdjNDBiMTVjYzI1YzJlYWVkMGE3Y2RkZWUyYWJmMzQwYmM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcXG5pbmRleCA4M2MyMTg1M2I3NGI2MC4uNDA2ZTRjNDliYWMxZmQgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxcbkBAIC01Niw2ICs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOlxcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cXG4gKiBDbGVhciBzcGVjaWZpYyBlcnJvciBjb3VudGVycyB3aXRoIHRoZSBgYGNsZWFyLWVycm9yLWNvdW50ZXJgYCBjb21tYW5kLCB1c2luZyBib3RoXFxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxcbisqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXFxuIFxcbiBZQU1MLWJhc2VkIEludGVyZmFjZVxcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxcbkBAIC0xMTEsMyArMTEyLDIzIEBAIEV4YW1wbGU6IENsZWFyIGFuIGVycm9yIGNvdW50ZXIgZm9yIGEgZ2l2ZW4gbm9kZVxcbiBcXG4gICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAne1xcXCJub2RlLWlkXFxcIjowLCBcXFwiZXJyb3ItaWRcXFwiOjF9J1xcbiAgICAgTm9uZVxcbitcXG4rRXhhbXBsZTogU3Vic2NyaWJlIHRvIGBgZXJyb3ItcmVwb3J0YGAgbXVsdGljYXN0IGdyb3VwXFxuK1xcbisuLiBjb2RlLWJsb2NrOjogYmFzaFxcbitcXG4rICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1vdXRwdXQtanNvbiAtLXN1YnNjcmliZSBlcnJvci1yZXBvcnRcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBqc29uXFxuK1xcbisgICAge1xcbisgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcImVycm9yLWV2ZW50XFxcIixcXG4rICAgICAgICBcXFwibXNnXFxcIjoge1xcbisgICAgICAgICAgICBcXFwiZGV2aWNlLW5hbWVcXFwiOiBcXFwiMDAwMDowMzowMC4wXFxcIixcXG4rICAgICAgICAgICAgXFxcIm5vZGUtaWRcXFwiOiAxLFxcbisgICAgICAgICAgICBcXFwibm9kZS1uYW1lXFxcIjogXFxcInVuY29ycmVjdGFibGUtZXJyb3JzXFxcIixcXG4rICAgICAgICAgICAgXFxcImVycm9yLWlkXFxcIjogMSxcXG4rICAgICAgICAgICAgXFxcImVycm9yLW5hbWVcXFwiOiBcXFwiZXJyb3JfbmFtZTFcXFwiLFxcbisgICAgICAgICAgICBcXFwiZXJyb3ItdmFsdWVcXFwiOiAxXFxuKyAgICAgICAgfVxcbisgICAgfVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxcbmluZGV4IGUxMTMwNTZmOGMwMTZjLi44YWVkM2Q0NTE1ZTVhZiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxcbkBAIC02OSw2ICs2OSwzMyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxcbiAgICAgICAgIHR5cGU6IHUzMlxcbiAgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIGVycm9yIGNvdW50ZXIuXFxuKyAgLVxcbisgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcXG4rICAgIGF0dHJpYnV0ZXM6XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxcbisgICAgICAgIHR5cGU6IHN0cmluZ1xcbisgICAgICAgIGRvYzogRGV2aWNlIChQQ0kgQkRGLCBVVUlEKSB0aGF0IHJlcG9ydGVkIHRoZSBlcnJvci5cXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5vZGUtaWRcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogbm9kZS1uYW1lXFxuKyAgICAgICAgdHlwZTogc3RyaW5nXFxuKyAgICAgICAgZG9jOiBOYW1lIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZXJyb3ItaWRcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBlcnJvciBjb3VudGVyLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZXJyb3ItbmFtZVxcbisgICAgICAgIHR5cGU6IHN0cmluZ1xcbisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxcbisgICAgICAgIHR5cGU6IHUzMlxcbisgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlci5cXG4gXFxuIG9wZXJhdGlvbnM6XFxuICAgbGlzdDpcXG5AQCAtMTI0LDMgKzE1MSwyNCBAQCBvcGVyYXRpb25zOlxcbiAgICAgICBkbzpcXG4gICAgICAgICByZXF1ZXN0OlxcbiAgICAgICAgICAgYXR0cmlidXRlczogKmlkLWF0dHJzXFxuKyAgICAtXFxuKyAgICAgIG5hbWU6IGVycm9yLWV2ZW50XFxuKyAgICAgIGRvYzogXFx1MDAzZS1cXG4rICAgICAgICAgICBSZXBvcnQgYW4gZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlLlxcbisgICAgICAgICAgIFRoZSBldmVudCBpbmNsdWRlcyB0aGUgZGV2aWNlLCBub2RlIGFuZCBlcnJvciBpbmZvcm1hdGlvblxcbisgICAgICAgICAgIG9mIHRoZSBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGVycm9yLWV2ZW50LWF0dHJzXFxuKyAgICAgIG1jZ3JwOiBlcnJvci1yZXBvcnRcXG4rICAgICAgZXZlbnQ6XFxuKyAgICAgICAgYXR0cmlidXRlczpcXG4rICAgICAgICAgIC0gZGV2aWNlLW5hbWVcXG4rICAgICAgICAgIC0gbm9kZS1pZFxcbisgICAgICAgICAgLSBub2RlLW5hbWVcXG4rICAgICAgICAgIC0gZXJyb3ItaWRcXG4rICAgICAgICAgIC0gZXJyb3ItbmFtZVxcbisgICAgICAgICAgLSBlcnJvci12YWx1ZVxcbitcXG4rbWNhc3QtZ3JvdXBzOlxcbisgIGxpc3Q6XFxuKyAgICAtXFxuKyAgICAgIG5hbWU6IGVycm9yLXJlcG9ydFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY1xcbmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY1xcbkBAIC00MSw2ICs0MSwxMSBAQFxcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxcbiAgKiAgICBDbGVhcnMgc3BlY2lmaWMgZXJyb3IgY291bnRlciBvZiBhIG5vZGUgaWYgc3VwcG9ydGVkLlxcbiAgKlxcbisgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50c1xcbisgKlxcbisgKiA1LiBFUlJPUl9FVkVOVDogUmVwb3J0IGFuIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZS4gVGhlIGV2ZW50IGNvbnRhaW5zIGRldmljZSwgbm9kZVxcbisgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LlxcbisgKlxcbiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjpcXG4gICpcXG4gICogLSBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoKTogUmVnaXN0ZXJzIGEgbmV3IG5vZGUgYW5kIGFzc2lnbnNcXG5AQCAtMTg2LDYgKzE5MSwzNCBAQCBzdGF0aWMgaW50IG1zZ19yZXBseV92YWx1ZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCB1MzIgZXJyb3JfaWQsXFxuIFxcdFxcdFxcdCAgIHZhbHVlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0RFVklDRV9OQU1FLCBub2RlLVxcdTAwM2VkZXZpY2VfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX0lELCBub2RlLVxcdTAwM2VpZCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsIG5vZGUtXFx1MDAzZW5vZGVfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9JRCwgZXJyb3JfaWQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwgZXJyb3JfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXR1cm4gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfVkFMVUUsIHZhbHVlKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxcbiBcXHRcXHRcXHQgICAgdTMyIGVycm9yX2lkKVxcbiB7XFxuQEAgLTIyMiw2ICsyNTUsNzQgQEAgc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxcbiBcXHRyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pO1xcbiB9XFxuIFxcbisvKipcXG4rICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50XFxuKyAqIEBub2RlOiBOb2RlIHN0cnVjdHVyZVxcbisgKiBAZXJyb3JfaWQ6IElEIG9mIHRoZSBlcnJvclxcbisgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3JcXG4rICogQHZhbHVlOiBWYWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlclxcbisgKlxcbisgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLlxcbisgKlxcbisgKiBDb250ZXh0OiBQcm9jZXNzIGNvbnRleHQgb25seS4gVXNlcyAlR0ZQX0tFUk5FTCBhbmQgbXVsdGljYXN0cyB0byBhbGxcXG4rICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVyc1xcbisgKiAgICAgICAgICBvciBvdGhlciBhdG9taWMgY29udGV4dCBtdXN0IGRlZmVyIGV2ZW50LlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSxcXG4rXFx0XFx0XFx0ICAgdTMyIHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4rXFx0c3RydWN0IG5sYXR0ciAqaGRyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKCFub2RlIHx8ICFlcnJvcl9uYW1lKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdC8qIENoZWNrIHRoZSBub2RlIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXFxuK1xcdGlmICh4YV9sb2FkKFxcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVxcdTAwM2VpZCkgIT0gbm9kZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuK1xcbitcXHQvKiBDdXJyZW50bHkgb25seSBFcnJvciBDb3VudGVyIGV2ZW50cyBhcmUgc3VwcG9ydGVkICovXFxuK1xcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IERSTV9SQVNfTk9ERV9UWVBFX0VSUk9SX0NPVU5URVIpXFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFxuK1xcdC8qIENoZWNrIHRoZSBlcnJvciBJRCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlICovXFxuK1xcdGlmIChlcnJvcl9pZCBcXHUwMDNjIG5vZGUtXFx1MDAzZWVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QgfHxcXG4rXFx0ICAgIGVycm9yX2lkIFxcdTAwM2Ugbm9kZS1cXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGdlbmxfaW5mb19pbml0X250ZihcXHUwMDI2aW5mbywgXFx1MDAyNmRybV9yYXNfbmxfZmFtaWx5LCBEUk1fUkFTX0NNRF9FUlJPUl9FVkVOVCk7XFxuK1xcbitcXHRtc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghbXNnKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGhkciA9IGdlbmxtc2dfaXB1dChtc2csIFxcdTAwMjZpbmZvKTtcXG4rXFx0aWYgKCFoZHIpIHtcXG4rXFx0XFx0cmV0ID0gLUVNU0dTSVpFO1xcbitcXHRcXHRnb3RvIGZyZWVfbXNnO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byBjYW5jZWxfbXNnO1xcbitcXG4rXFx0Z2VubG1zZ19lbmQobXNnLCBoZHIpO1xcbitcXHRnZW5sbXNnX211bHRpY2FzdF9hbGxucyhcXHUwMDI2ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitjYW5jZWxfbXNnOlxcbitcXHRnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7XFxuK2ZyZWVfbXNnOlxcbitcXHRubG1zZ19mcmVlKG1zZyk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rRVhQT1JUX1NZTUJPTChkcm1fcmFzX25sX2Vycm9yX2V2ZW50KTtcXG4rXFxuIC8qKlxcbiAgKiBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdCgpIC0gRHVtcCBhbGwgRXJyb3IgQ291bnRlcnNcXG4gICogQHNrYjogTmV0bGluayBtZXNzYWdlIGJ1ZmZlclxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xcbmluZGV4IGRlYTFjMWIyNDk0ZTgxLi45ZDMxMjNjYzlmOWNhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xcbkBAIC01OCw2ICs1OCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRybV9yYXNfbmxfb3BzW10gPSB7XFxuIFxcdH0sXFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XFxuK1xcdFtEUk1fUkFTX05MR1JQX0VSUk9SX1JFUE9SVF0gPSB7IFxcXCJlcnJvci1yZXBvcnRcXFwiLCB9LFxcbit9O1xcbitcXG4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4gXFx0Lm5hbWVcXHRcXHQ9IERSTV9SQVNfRkFNSUxZX05BTUUsXFxuIFxcdC52ZXJzaW9uXFx0PSBEUk1fUkFTX0ZBTUlMWV9WRVJTSU9OLFxcbkBAIC02Niw0ICs3MCw2IEBAIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuIFxcdC5tb2R1bGVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiBcXHQuc3BsaXRfb3BzXFx0PSBkcm1fcmFzX25sX29wcyxcXG4gXFx0Lm5fc3BsaXRfb3BzXFx0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcXG4rXFx0Lm1jZ3Jwc1xcdFxcdD0gZHJtX3Jhc19ubF9tY2dycHMsXFxuK1xcdC5uX21jZ3Jwc1xcdD0gQVJSQVlfU0laRShkcm1fcmFzX25sX21jZ3JwcyksXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXFxuaW5kZXggYTM5ODY0MzU3MmE1YTAuLjAzZWMyNzVhY2E5MjkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXFxuQEAgLTIxLDYgKzIxLDEwIEBAIGludCBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBpbnQgZHJtX3Jhc19ubF9jbGVhcl9lcnJvcl9jb3VudGVyX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuIFxcbitlbnVtIHtcXG4rXFx0RFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsXFxuK307XFxuK1xcbiBleHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5O1xcbiBcXG4gI2VuZGlmIC8qIF9MSU5VWF9EUk1fUkFTX0dFTl9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXFxuaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXFxuQEAgLTE4NSw2ICsxODUsMzcgQEAgc3RhdGljIGludCByZWdpc3Rlcl9ub2RlcyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZVxcbisgKiBAeGU6IHhlIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXFx1MDAyNmVudW0gZHJtX3hlX3Jhc19lcnJvcl9jb21wb25lbnQpXFxuKyAqIEBzZXZlcml0eTogZXJyb3Igc2V2ZXJpdHkgKHNlZSBcXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX3NldmVyaXR5KVxcbisgKiBAdmFsdWU6IHZhbHVlIG9mIGVycm9yIGNvdW50ZXJcXG4rICpcXG4rICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZS5cXG4rICovXFxuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCB4ZV9kcm1fcmFzICpyYXMgPSBcXHUwMDI2eGUtXFx1MDAzZXJhcztcXG4rXFx0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cXHUwMDNlaW5mb1tzZXZlcml0eV07XFxuK1xcdHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHQvKiBFdmVudCBpcyBzdXBwb3J0ZWQgb25seSBpZiBkcm0tcmFzIGlzIGVuYWJsZWQgKi9cXG4rXFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5oYXNfZHJtX3JhcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bm9kZSA9IFxcdTAwMjZyYXMtXFx1MDAzZW5vZGVbc2V2ZXJpdHldO1xcbitcXG4rXFx0aWYgKCFpbmZvIHx8ICFpbmZvW2NvbXBvbmVudF0ubmFtZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cmV0ID0gZHJtX3Jhc19ubF9lcnJvcl9ldmVudChub2RlLCBjb21wb25lbnQsIGluZm9bY29tcG9uZW50XS5uYW1lLCB2YWx1ZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXFx1MDAyNnhlLVxcdTAwM2Vkcm0sIFxcXCJkcm0tcmFzIGVycm9yLWV2ZW50IGZhaWxlZDogJWQgZm9yICVzICVzXFxcXG5cXFwiLCByZXQsXFxuK1xcdFxcdFxcdFxcdCAgICBpbmZvW2NvbXBvbmVudF0ubmFtZSwgZXJyb3Jfc2V2ZXJpdHlbc2V2ZXJpdHldKTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTXFxuICAqIEB4ZTogeGUgZGV2aWNlIGluc3RhbmNlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmggYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oXFxuaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oXFxuQEAgLTUsMTEgKzUsMTQgQEBcXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xcbiAjZGVmaW5lIF9YRV9EUk1fUkFTX0hfXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4rXFxuIHN0cnVjdCB4ZV9kZXZpY2U7XFxuIFxcbiAjZGVmaW5lIGZvcl9lYWNoX2Vycm9yX3NldmVyaXR5KGkpXFx0XFxcXFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFJNX1hFX1JBU19FUlJfU0VWX01BWDsgaSsrKVxcbiBcXG4gaW50IHhlX2RybV9yYXNfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKTtcXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcXG5pbmRleCBhMzFlMDZiOGFhNjdhYy4uZDQzZjYxNGRlNzIzNzAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXFxuQEAgLTkwLDYgKzkwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBncHVfaGVhbHRoX3N0YXRlc1tdID0ge1xcbiB9O1xcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcXG4gXFxuK3N0YXRpYyBpbnQgZ2V0X2NvdW50ZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmNvdW50ZXIsIHUzMiAqdmFsdWUpO1xcbitcXG4gc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpXFxuIHtcXG4gXFx0c3dpdGNoIChzZXZlcml0eSkge1xcbkBAIC0xMDIsNiArMTA0LDE4IEBAIHN0YXRpYyB1OCBkcm1fdG9feGVfcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxcbit7XFxuK1xcdHN3aXRjaCAoc2V2ZXJpdHkpIHtcXG4rXFx0Y2FzZSBYRV9SQVNfU0VWX0NPUlJFQ1RBQkxFOlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX0NPUlJFQ1RBQkxFO1xcbitcXHRjYXNlIFhFX1JBU19TRVZfVU5DT1JSRUNUQUJMRTpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9VTkNPUlJFQ1RBQkxFO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX01BWDtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxcbiB7XFxuIFxcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuQEAgLTEyMCw2ICsxMzQsMjQgQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfY29tcG9uZW50KHU4IGNvbXBvbmVudClcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgdTggeGVfdG9fZHJtX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxcbit7XFxuK1xcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuK1xcdGNhc2UgWEVfUkFTX0NPTVBfREVWSUNFX01FTU9SWTpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfREVWSUNFX01FTU9SWTtcXG4rXFx0Y2FzZSBYRV9SQVNfQ09NUF9DT1JFX0NPTVBVVEU6XFxuK1xcdFxcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0NPUkVfQ09NUFVURTtcXG4rXFx0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9QQ0lFO1xcbitcXHRjYXNlIFhFX1JBU19DT01QX0ZBQlJJQzpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfRkFCUklDO1xcbitcXHRjYXNlIFhFX1JBU19DT01QX1NPQ19JTlRFUk5BTDpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfU09DX0lOVEVSTkFMO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9NQVg7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCByYXNfc3RhdHVzX3RvX2Vycm5vKHUzMiBzdGF0dXMpXFxuIHtcXG4gXFx0c3dpdGNoIChzdGF0dXMpIHtcXG5AQCAtMjE4LDYgKzI1MCwyNiBAQCBzdGF0aWMgdm9pZCByYXNfdXNwX2Flcl9pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbiBcXHRkZXZfZGJnKFxcdTAwMjZ1c3AtXFx1MDAzZWRldiwgXFxcIlVuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxcXG5cXFwiKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcmFzX3NlbmRfZXJyb3JfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IHNldmVyaXR5LCB1OCBjb21wb25lbnQpXFxuK3tcXG4rXFx0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBjb3VudGVyID0gezB9O1xcbitcXHR1OCBkcm1fc2V2ZXJpdHksIGRybV9jb21wb25lbnQ7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGNvdW50ZXIuY29tbW9uLnNldmVyaXR5ID0gc2V2ZXJpdHk7XFxuK1xcdGNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcXG4rXFxuK1xcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcXHUwMDI2Y291bnRlciwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZHJtX3NldmVyaXR5ID0geGVfdG9fZHJtX3Jhc19zZXZlcml0eShzZXZlcml0eSk7XFxuK1xcdGRybV9jb21wb25lbnQgPSB4ZV90b19kcm1fcmFzX2NvbXBvbmVudChjb21wb25lbnQpO1xcbitcXG4rXFx0eGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXFxuIHtcXG4gXFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXFx1MDAzZWRldGFpbHM7XFxuQEAgLTMxMiw4ICszNjQsMTAgQEAgdm9pZCB4ZV9yYXNfY291bnRlcl90aHJlc2hvbGRfY3Jvc3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG4gXFx0c3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopXFx1MDAyNnJlc3BvbnNlLVxcdTAwM2VkYXRhO1xcbiBcXHRzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICplcnJvcnMgPSBwZW5kaW5nLVxcdTAwM2Vjb3VudGVycztcXG4gXFx0dTMyIGlkLCBuY291bnRlcnMgPSBwZW5kaW5nLVxcdTAwM2VuY291bnRlcnM7XFxuK1xcdHU4IHNlbnQgPSAwO1xcbiBcXG4gXFx0QlVJTERfQlVHX09OKHNpemVvZihyZXNwb25zZS1cXHUwMDNlZGF0YSkgXFx1MDAzYyBzaXplb2YoKnBlbmRpbmcpKTtcXG4rXFx0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXFx1MDAzYyBYRV9SQVNfQ09NUF9NQVgpO1xcbiBcXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xcbiBcXG4gXFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFxcdTAwM2UgWEVfUkFTX05VTV9DT1VOVEVSUylcXG5AQCAtMzI5LDYgKzM4MywxMyBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxcbiBcXG4gXFx0XFx0eGVfd2Fybih4ZSwgXFxcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0Y29tcF90b19zdHIoY29tcG9uZW50KSwgc2V2X3RvX3N0cihzZXZlcml0eSkpO1xcbitcXG4rXFx0XFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cXG4rXFx0XFx0aWYgKHNlbnQgXFx1MDAyNiBCSVQoY29tcG9uZW50KSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHNlbnQgfD0gQklUKGNvbXBvbmVudCk7XFxuK1xcbitcXHRcXHRyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMzgyLDYgKzQ0Myw3IEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuIFxcdGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBmaW5hbF9hY3Rpb247XFxuIFxcdHUzMiByZW1haW5pbmcgPSBYRV9TWVNDVFJMX0ZMT09EX0xJTUlUO1xcbiBcXHRzdHJ1Y3QgeGVfcmFzX2dldF9zb2NfZXJyb3IgcmVzcG9uc2U7XFxuK1xcdHU4IHNlbnQgPSAwO1xcbiBcXHRzaXplX3QgcmxlbjtcXG4gXFx0aW50IHJldDtcXG4gXFxuQEAgLTQyNSw2ICs0ODcsMTIgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4gXFx0XFx0XFx0eGVfaW5mbyh4ZSwgXFxcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcXFxuXFxcIiwgY29tcF90b19zdHIoY29tcG9uZW50KSxcXG4gXFx0XFx0XFx0XFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xcbiBcXG4rXFx0XFx0XFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cXG4rXFx0XFx0XFx0aWYgKCEoc2VudCBcXHUwMDI2IEJJVChjb21wb25lbnQpKSkge1xcbitcXHRcXHRcXHRcXHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xcbitcXHRcXHRcXHRcXHRyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7XFxuK1xcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuIFxcdFxcdFxcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxcbiBcXHRcXHRcXHRcXHRhY3Rpb24gPSBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhhcnIpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcXG5pbmRleCAwYmVlZGUzZGRjNGU0Yi4uZWUyY2FhMGVkYzZmOTIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXFxuKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXFxuQEAgLTgwLDkgKzgwLDE0IEBAIHN0cnVjdCBkcm1fZGV2aWNlO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX1JBUylcXG4gaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcXG4gdm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcXG4raW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLFxcbitcXHRcXHRcXHQgICB1MzIgdmFsdWUpO1xcbiAjZWxzZVxcbiBzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyByZXR1cm4gMDsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XFxuK3N0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKVxcbit7IHJldHVybiAwOyB9XFxuICNlbmRpZlxcbiBcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcXG5pbmRleCAyMThhM2VlODY4MDUyNy4uZWFiODIzMWFhODdjYmYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxcbkBAIC0zOCwxMyArMzgsMjggQEAgZW51bSB7XFxuIFxcdERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCAtIDEpXFxuIH07XFxuIFxcbitlbnVtIHtcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0RFVklDRV9OQU1FID0gMSxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9JRCxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSxcXG4rXFxuK1xcdF9fRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggLSAxKVxcbit9O1xcbitcXG4gZW51bSB7XFxuIFxcdERSTV9SQVNfQ01EX0xJU1RfTk9ERVMgPSAxLFxcbiBcXHREUk1fUkFTX0NNRF9HRVRfRVJST1JfQ09VTlRFUixcXG4gXFx0RFJNX1JBU19DTURfQ0xFQVJfRVJST1JfQ09VTlRFUixcXG4rXFx0RFJNX1JBU19DTURfRVJST1JfRVZFTlQsXFxuIFxcbiBcXHRfX0RSTV9SQVNfQ01EX01BWCxcXG4gXFx0RFJNX1JBU19DTURfTUFYID0gKF9fRFJNX1JBU19DTURfTUFYIC0gMSlcXG4gfTtcXG4gXFxuKyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcXHRcXFwiZXJyb3ItcmVwb3J0XFxcIlxcbitcXG4gI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNzowODoyMC4xNDk2MzY3ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDE2ODkyMzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbmV0bGluayBtdWx0aWNhc3QgZXZlbnQgc2VudCBmcm9tIHRoZSBrZXJuZWwgdG8gdXNlcnNwYWNlIHRvIHJlcG9ydCBoYXJkd2FyZSBSQVMgZXJyb3JzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1c2Vyc3BhY2UtY29udHJvbGxhYmxlIGlucHV0cywgaW9jdGxzLCBvciBuZXRsaW5rIGNvbW1hbmRzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTAxNjE3YzQwYjE1Y2MyNWMyZWFlZDBhN2NkZGVlMmFiZjM0MGJjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxuaW5kZXggODNjMjE4NTNiNzRiNjAuLjQwNmU0YzQ5YmFjMWZkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0XG5AQCAtNTYsNiArNTYsNyBAQCBVc2VyIHNwYWNlIHRvb2xzIGNhbjpcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cbiAqIENsZWFyIHNwZWNpZmljIGVycm9yIGNvdW50ZXJzIHdpdGggdGhlIGBgY2xlYXItZXJyb3ItY291bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGhcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cbisqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXG4gXG4gWUFNTC1iYXNlZCBJbnRlcmZhY2VcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQEAgLTExMSwzICsxMTIsMjMgQEAgRXhhbXBsZTogQ2xlYXIgYW4gZXJyb3IgY291bnRlciBmb3IgYSBnaXZlbiBub2RlXG4gXG4gICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAne1wibm9kZS1pZFwiOjAsIFwiZXJyb3ItaWRcIjoxfSdcbiAgICAgTm9uZVxuK1xuK0V4YW1wbGU6IFN1YnNjcmliZSB0byBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cFxuK1xuKy4uIGNvZGUtYmxvY2s6OiBiYXNoXG4rXG4rICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1vdXRwdXQtanNvbiAtLXN1YnNjcmliZSBlcnJvci1yZXBvcnRcbitcbisuLiBjb2RlLWJsb2NrOjoganNvblxuK1xuKyAgICB7XG4rICAgICAgICBcIm5hbWVcIjogXCJlcnJvci1ldmVudFwiLFxuKyAgICAgICAgXCJtc2dcIjoge1xuKyAgICAgICAgICAgIFwiZGV2aWNlLW5hbWVcIjogXCIwMDAwOjAzOjAwLjBcIixcbisgICAgICAgICAgICBcIm5vZGUtaWRcIjogMSxcbisgICAgICAgICAgICBcIm5vZGUtbmFtZVwiOiBcInVuY29ycmVjdGFibGUtZXJyb3JzXCIsXG4rICAgICAgICAgICAgXCJlcnJvci1pZFwiOiAxLFxuKyAgICAgICAgICAgIFwiZXJyb3ItbmFtZVwiOiBcImVycm9yX25hbWUxXCIsXG4rICAgICAgICAgICAgXCJlcnJvci12YWx1ZVwiOiAxXG4rICAgICAgICB9XG4rICAgIH1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuaW5kZXggZTExMzA1NmY4YzAxNmMuLjhhZWQzZDQ1MTVlNWFmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuQEAgLTY5LDYgKzY5LDMzIEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZXJyb3ItdmFsdWVcbiAgICAgICAgIHR5cGU6IHUzMlxuICAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSByZXF1ZXN0ZWQgZXJyb3IgY291bnRlci5cbisgIC1cbisgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxuKyAgICAgICAgdHlwZTogc3RyaW5nXG4rICAgICAgICBkb2M6IERldmljZSAoUENJIEJERiwgVVVJRCkgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbm9kZS1pZFxuKyAgICAgICAgdHlwZTogdTMyXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG5vZGUtbmFtZVxuKyAgICAgICAgdHlwZTogc3RyaW5nXG4rICAgICAgICBkb2M6IE5hbWUgb2YgdGhlIG5vZGUgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZXJyb3ItaWRcbisgICAgICAgIHR5cGU6IHUzMlxuKyAgICAgICAgZG9jOiBJRCBvZiB0aGUgZXJyb3IgY291bnRlci5cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBlcnJvci1uYW1lXG4rICAgICAgICB0eXBlOiBzdHJpbmdcbisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZXJyb3ItdmFsdWVcbisgICAgICAgIHR5cGU6IHUzMlxuKyAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyLlxuIFxuIG9wZXJhdGlvbnM6XG4gICBsaXN0OlxuQEAgLTEyNCwzICsxNTEsMjQgQEAgb3BlcmF0aW9uczpcbiAgICAgICBkbzpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICppZC1hdHRyc1xuKyAgICAtXG4rICAgICAgbmFtZTogZXJyb3ItZXZlbnRcbisgICAgICBkb2M6IFx1MDAzZS1cbisgICAgICAgICAgIFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuXG4rICAgICAgICAgICBUaGUgZXZlbnQgaW5jbHVkZXMgdGhlIGRldmljZSwgbm9kZSBhbmQgZXJyb3IgaW5mb3JtYXRpb25cbisgICAgICAgICAgIG9mIHRoZSBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuXG4rICAgICAgYXR0cmlidXRlLXNldDogZXJyb3ItZXZlbnQtYXR0cnNcbisgICAgICBtY2dycDogZXJyb3ItcmVwb3J0XG4rICAgICAgZXZlbnQ6XG4rICAgICAgICBhdHRyaWJ1dGVzOlxuKyAgICAgICAgICAtIGRldmljZS1uYW1lXG4rICAgICAgICAgIC0gbm9kZS1pZFxuKyAgICAgICAgICAtIG5vZGUtbmFtZVxuKyAgICAgICAgICAtIGVycm9yLWlkXG4rICAgICAgICAgIC0gZXJyb3ItbmFtZVxuKyAgICAgICAgICAtIGVycm9yLXZhbHVlXG4rXG4rbWNhc3QtZ3JvdXBzOlxuKyAgbGlzdDpcbisgICAgLVxuKyAgICAgIG5hbWU6IGVycm9yLXJlcG9ydFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG5pbmRleCBkNmVhYjI5YTEzOTRjYS4uMzkxNTVmYjUxNGRlM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG5AQCAtNDEsNiArNDEsMTEgQEBcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxuICAqICAgIENsZWFycyBzcGVjaWZpYyBlcnJvciBjb3VudGVyIG9mIGEgbm9kZSBpZiBzdXBwb3J0ZWQuXG4gICpcbisgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50c1xuKyAqXG4rICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGVcbisgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LlxuKyAqXG4gICogTm9kZSByZWdpc3RyYXRpb246XG4gICpcbiAgKiAtIGRybV9yYXNfbm9kZV9yZWdpc3RlcigpOiBSZWdpc3RlcnMgYSBuZXcgbm9kZSBhbmQgYXNzaWduc1xuQEAgLTE4Niw2ICsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLFxuIFx0XHRcdCAgIHZhbHVlKTtcbiB9XG4gXG4rc3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsXG4rXHRcdFx0XHQgICAgIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS1cdTAwM2VkZXZpY2VfbmFtZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwgbm9kZS1cdTAwM2VpZCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9OQU1FLCBub2RlLVx1MDAzZW5vZGVfbmFtZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9OQU1FLCBlcnJvcl9uYW1lKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfVkFMVUUsIHZhbHVlKTtcbit9XG4rXG4gc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxuIFx0XHRcdCAgICB1MzIgZXJyb3JfaWQpXG4ge1xuQEAgLTIyMiw2ICsyNTUsNzQgQEAgc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxuIFx0cmV0dXJuIGdlbmxtc2dfcmVwbHkobXNnLCBpbmZvKTtcbiB9XG4gXG4rLyoqXG4rICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50XG4rICogQG5vZGU6IE5vZGUgc3RydWN0dXJlXG4rICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3JcbisgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3JcbisgKiBAdmFsdWU6IFZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyXG4rICpcbisgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLlxuKyAqXG4rICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsXG4rICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVyc1xuKyAqICAgICAgICAgIG9yIG90aGVyIGF0b21pYyBjb250ZXh0IG11c3QgZGVmZXIgZXZlbnQuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbisgKi9cbitpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsXG4rXHRcdFx0ICAgdTMyIHZhbHVlKVxuK3tcbitcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcbitcdHN0cnVjdCBza19idWZmICptc2c7XG4rXHRzdHJ1Y3QgbmxhdHRyICpoZHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFub2RlIHx8ICFlcnJvcl9uYW1lKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdC8qIENoZWNrIHRoZSBub2RlIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXG4rXHRpZiAoeGFfbG9hZChcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVx1MDAzZWlkKSAhPSBub2RlKVxuK1x0XHRyZXR1cm4gLUVOT0VOVDtcbitcbitcdC8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi9cbitcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUilcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0LyogQ2hlY2sgdGhlIGVycm9yIElEIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgKi9cbitcdGlmIChlcnJvcl9pZCBcdTAwM2Mgbm9kZS1cdTAwM2VlcnJvcl9jb3VudGVyX3JhbmdlLmZpcnN0IHx8XG4rXHQgICAgZXJyb3JfaWQgXHUwMDNlIG5vZGUtXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGdlbmxfaW5mb19pbml0X250ZihcdTAwMjZpbmZvLCBcdTAwMjZkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpO1xuK1xuK1x0bXNnID0gZ2VubG1zZ19uZXcoTkxNU0dfR09PRFNJWkUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFtc2cpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0aGRyID0gZ2VubG1zZ19pcHV0KG1zZywgXHUwMDI2aW5mbyk7XG4rXHRpZiAoIWhkcikge1xuK1x0XHRyZXQgPSAtRU1TR1NJWkU7XG4rXHRcdGdvdG8gZnJlZV9tc2c7XG4rXHR9XG4rXG4rXHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gY2FuY2VsX21zZztcbitcbitcdGdlbmxtc2dfZW5kKG1zZywgaGRyKTtcbitcdGdlbmxtc2dfbXVsdGljYXN0X2FsbG5zKFx1MDAyNmRybV9yYXNfbmxfZmFtaWx5LCBtc2csIDAsIERSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUKTtcbitcbitcdHJldHVybiAwO1xuK1xuK2NhbmNlbF9tc2c6XG4rXHRnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7XG4rZnJlZV9tc2c6XG4rXHRubG1zZ19mcmVlKG1zZyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitFWFBPUlRfU1lNQk9MKGRybV9yYXNfbmxfZXJyb3JfZXZlbnQpO1xuK1xuIC8qKlxuICAqIGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KCkgLSBEdW1wIGFsbCBFcnJvciBDb3VudGVyc1xuICAqIEBza2I6IE5ldGxpbmsgbWVzc2FnZSBidWZmZXJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuaW5kZXggZGVhMWMxYjI0OTRlODEuLjlkMzEyM2NjOWY5Y2FhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuQEAgLTU4LDYgKzU4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZHJtX3Jhc19ubF9vcHNbXSA9IHtcbiBcdH0sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XG4rXHRbRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlRdID0geyBcImVycm9yLXJlcG9ydFwiLCB9LFxuK307XG4rXG4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbiBcdC5uYW1lXHRcdD0gRFJNX1JBU19GQU1JTFlfTkFNRSxcbiBcdC52ZXJzaW9uXHQ9IERSTV9SQVNfRkFNSUxZX1ZFUlNJT04sXG5AQCAtNjYsNCArNzAsNiBAQCBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm1vZHVsZVx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0LnNwbGl0X29wc1x0PSBkcm1fcmFzX25sX29wcyxcbiBcdC5uX3NwbGl0X29wc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcbitcdC5tY2dycHNcdFx0PSBkcm1fcmFzX25sX21jZ3JwcyxcbitcdC5uX21jZ3Jwc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfbWNncnBzKSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG5pbmRleCBhMzk4NjQzNTcyYTVhMC4uMDNlYzI3NWFjYTkyOTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG5AQCAtMjEsNiArMjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGRybV9yYXNfbmxfY2xlYXJfZXJyb3JfY291bnRlcl9kb2l0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIFxuK2VudW0ge1xuK1x0RFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsXG4rfTtcbitcbiBleHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5O1xuIFxuICNlbmRpZiAvKiBfTElOVVhfRFJNX1JBU19HRU5fSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG5pbmRleCA3OTM3ZDhiYTBlZDljZS4uNWNiZmQxMmQ2MWY0YjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG5AQCAtMTg1LDYgKzE4NSwzNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX25vZGVzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogeGVfZHJtX3Jhc19ldmVudCgpIC0gUmVwb3J0IGRybS1yYXMgZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlXG4rICogQHhlOiB4ZSBkZXZpY2Ugc3RydWN0dXJlXG4rICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudClcbisgKiBAc2V2ZXJpdHk6IGVycm9yIHNldmVyaXR5IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX3NldmVyaXR5KVxuKyAqIEB2YWx1ZTogdmFsdWUgb2YgZXJyb3IgY291bnRlclxuKyAqXG4rICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZS5cbisgKi9cbit2b2lkIHhlX2RybV9yYXNfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IGNvbXBvbmVudCwgdTggc2V2ZXJpdHksIHUzMiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3QgeGVfZHJtX3JhcyAqcmFzID0gXHUwMDI2eGUtXHUwMDNlcmFzO1xuK1x0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cdTAwM2VpbmZvW3NldmVyaXR5XTtcbitcdHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0LyogRXZlbnQgaXMgc3VwcG9ydGVkIG9ubHkgaWYgZHJtLXJhcyBpcyBlbmFibGVkICovXG4rXHRpZiAoIXhlLVx1MDAzZWluZm8uaGFzX2RybV9yYXMpXG4rXHRcdHJldHVybjtcbitcbitcdG5vZGUgPSBcdTAwMjZyYXMtXHUwMDNlbm9kZVtzZXZlcml0eV07XG4rXG4rXHRpZiAoIWluZm8gfHwgIWluZm9bY29tcG9uZW50XS5uYW1lKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyZXQgPSBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KG5vZGUsIGNvbXBvbmVudCwgaW5mb1tjb21wb25lbnRdLm5hbWUsIHZhbHVlKTtcbitcdGlmIChyZXQpXG4rXHRcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXHUwMDI2eGUtXHUwMDNlZHJtLCBcImRybS1yYXMgZXJyb3ItZXZlbnQgZmFpbGVkOiAlZCBmb3IgJXMgJXNcXG5cIiwgcmV0LFxuK1x0XHRcdFx0ICAgIGluZm9bY29tcG9uZW50XS5uYW1lLCBlcnJvcl9zZXZlcml0eVtzZXZlcml0eV0pO1xuK31cbitcbiAvKipcbiAgKiB4ZV9kcm1fcmFzX2luaXQoKSAtIEluaXRpYWxpemUgRFJNIFJBU1xuICAqIEB4ZTogeGUgZGV2aWNlIGluc3RhbmNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbmluZGV4IDM2NWM3MGU5M2U4MmZkLi5hZGQ5NmJmMWE3YWJkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbkBAIC01LDExICs1LDE0IEBAXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xuICNkZWZpbmUgX1hFX0RSTV9SQVNfSF9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rXG4gc3RydWN0IHhlX2RldmljZTtcbiBcbiAjZGVmaW5lIGZvcl9lYWNoX2Vycm9yX3NldmVyaXR5KGkpXHRcXFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFJNX1hFX1JBU19FUlJfU0VWX01BWDsgaSsrKVxuIFxuIGludCB4ZV9kcm1fcmFzX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcbmluZGV4IGEzMWUwNmI4YWE2N2FjLi5kNDNmNjE0ZGU3MjM3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXG5AQCAtOTAsNiArOTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdwdV9oZWFsdGhfc3RhdGVzW10gPSB7XG4gfTtcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcbiBcbitzdGF0aWMgaW50IGdldF9jb3VudGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCBzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICpjb3VudGVyLCB1MzIgKnZhbHVlKTtcbitcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiB7XG4gXHRzd2l0Y2ggKHNldmVyaXR5KSB7XG5AQCAtMTAyLDYgKzEwNCwxOCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHU4IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpXG4re1xuK1x0c3dpdGNoIChzZXZlcml0eSkge1xuK1x0Y2FzZSBYRV9SQVNfU0VWX0NPUlJFQ1RBQkxFOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX0NPUlJFQ1RBQkxFO1xuK1x0Y2FzZSBYRV9SQVNfU0VWX1VOQ09SUkVDVEFCTEU6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfVU5DT1JSRUNUQUJMRTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIHtcbiBcdHN3aXRjaCAoY29tcG9uZW50KSB7XG5AQCAtMTIwLDYgKzEzNCwyNCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIFx0fVxuIH1cbiBcbitzdGF0aWMgdTggeGVfdG9fZHJtX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuK3tcbitcdHN3aXRjaCAoY29tcG9uZW50KSB7XG4rXHRjYXNlIFhFX1JBU19DT01QX0RFVklDRV9NRU1PUlk6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0RFVklDRV9NRU1PUlk7XG4rXHRjYXNlIFhFX1JBU19DT01QX0NPUkVfQ09NUFVURTpcbitcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfQ09SRV9DT01QVVRFO1xuK1x0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9QQ0lFO1xuK1x0Y2FzZSBYRV9SQVNfQ09NUF9GQUJSSUM6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0ZBQlJJQztcbitcdGNhc2UgWEVfUkFTX0NPTVBfU09DX0lOVEVSTkFMOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9TT0NfSU5URVJOQUw7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9NQVg7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgcmFzX3N0YXR1c190b19lcnJubyh1MzIgc3RhdHVzKVxuIHtcbiBcdHN3aXRjaCAoc3RhdHVzKSB7XG5AQCAtMjE4LDYgKzI1MCwyNiBAQCBzdGF0aWMgdm9pZCByYXNfdXNwX2Flcl9pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0ZGV2X2RiZyhcdTAwMjZ1c3AtXHUwMDNlZGV2LCBcIlVuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxuXCIpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByYXNfc2VuZF9lcnJvcl9ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggc2V2ZXJpdHksIHU4IGNvbXBvbmVudClcbit7XG4rXHRzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzIGNvdW50ZXIgPSB7MH07XG4rXHR1OCBkcm1fc2V2ZXJpdHksIGRybV9jb21wb25lbnQ7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y291bnRlci5jb21tb24uc2V2ZXJpdHkgPSBzZXZlcml0eTtcbitcdGNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbitcbitcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcdTAwMjZjb3VudGVyLCBcdTAwMjZ2YWx1ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm47XG4rXG4rXHRkcm1fc2V2ZXJpdHkgPSB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHNldmVyaXR5KTtcbitcdGRybV9jb21wb25lbnQgPSB4ZV90b19kcm1fcmFzX2NvbXBvbmVudChjb21wb25lbnQpO1xuK1xuK1x0eGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7XG4rfVxuK1xuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXG4ge1xuIFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXHUwMDNlZGV0YWlscztcbkBAIC0zMTIsOCArMzY0LDEwIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsXG4gXHRzdHJ1Y3QgeGVfcmFzX3RocmVzaG9sZF9jcm9zc2VkICpwZW5kaW5nID0gKHZvaWQgKilcdTAwMjZyZXNwb25zZS1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyAqZXJyb3JzID0gcGVuZGluZy1cdTAwM2Vjb3VudGVycztcbiBcdHUzMiBpZCwgbmNvdW50ZXJzID0gcGVuZGluZy1cdTAwM2VuY291bnRlcnM7XG4rXHR1OCBzZW50ID0gMDtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2YocmVzcG9uc2UtXHUwMDNlZGF0YSkgXHUwMDNjIHNpemVvZigqcGVuZGluZykpO1xuK1x0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXHUwMDNjIFhFX1JBU19DT01QX01BWCk7XG4gXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xuIFxuIFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFx1MDAzZSBYRV9SQVNfTlVNX0NPVU5URVJTKVxuQEAgLTMyOSw2ICszODMsMTMgQEAgdm9pZCB4ZV9yYXNfY291bnRlcl90aHJlc2hvbGRfY3Jvc3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcbiBcbiBcdFx0eGVfd2Fybih4ZSwgXCJbUkFTXTogJXMgJXMgZGV0ZWN0ZWRcXG5cIixcbiBcdFx0XHRjb21wX3RvX3N0cihjb21wb25lbnQpLCBzZXZfdG9fc3RyKHNldmVyaXR5KSk7XG4rXG4rXHRcdC8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovXG4rXHRcdGlmIChzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0c2VudCB8PSBCSVQoY29tcG9uZW50KTtcbitcbitcdFx0cmFzX3NlbmRfZXJyb3JfZXZlbnQoeGUsIHNldmVyaXR5LCBjb21wb25lbnQpO1xuIFx0fVxuIH1cbiBcbkBAIC0zODIsNiArNDQzLDcgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbiBcdGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBmaW5hbF9hY3Rpb247XG4gXHR1MzIgcmVtYWluaW5nID0gWEVfU1lTQ1RSTF9GTE9PRF9MSU1JVDtcbiBcdHN0cnVjdCB4ZV9yYXNfZ2V0X3NvY19lcnJvciByZXNwb25zZTtcbitcdHU4IHNlbnQgPSAwO1xuIFx0c2l6ZV90IHJsZW47XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTQyNSw2ICs0ODcsMTIgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbiBcdFx0XHR4ZV9pbmZvKHhlLCBcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcblwiLCBjb21wX3RvX3N0cihjb21wb25lbnQpLFxuIFx0XHRcdFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xuIFxuK1x0XHRcdC8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovXG4rXHRcdFx0aWYgKCEoc2VudCBcdTAwMjYgQklUKGNvbXBvbmVudCkpKSB7XG4rXHRcdFx0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuK1x0XHRcdFx0cmFzX3NlbmRfZXJyb3JfZXZlbnQoeGUsIHNldmVyaXR5LCBjb21wb25lbnQpO1xuK1x0XHRcdH1cbitcbiBcdFx0XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuIFx0XHRcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxuIFx0XHRcdFx0YWN0aW9uID0gaGFuZGxlX2NvcmVfY29tcHV0ZV9lcnJvcnMoYXJyKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcbmluZGV4IDBiZWVkZTNkZGM0ZTRiLi5lZTJjYWEwZWRjNmY5MiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvZHJtL2RybV9yYXMuaFxuKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXG5AQCAtODAsOSArODAsMTQgQEAgc3RydWN0IGRybV9kZXZpY2U7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9SQVMpXG4gaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcbiB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpO1xuK2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSxcbitcdFx0XHQgICB1MzIgdmFsdWUpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XG4rc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsXG4rXHRcdFx0XHRcdCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXG4reyByZXR1cm4gMDsgfVxuICNlbmRpZlxuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcbmluZGV4IDIxOGEzZWU4NjgwNTI3Li5lYWI4MjMxYWE4N2NiZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxuQEAgLTM4LDEzICszOCwyOCBAQCBlbnVtIHtcbiBcdERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCAtIDEpXG4gfTtcbiBcbitlbnVtIHtcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSA9IDEsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSxcbitcbitcdF9fRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTUFYIC0gMSlcbit9O1xuK1xuIGVudW0ge1xuIFx0RFJNX1JBU19DTURfTElTVF9OT0RFUyA9IDEsXG4gXHREUk1fUkFTX0NNRF9HRVRfRVJST1JfQ09VTlRFUixcbiBcdERSTV9SQVNfQ01EX0NMRUFSX0VSUk9SX0NPVU5URVIsXG4rXHREUk1fUkFTX0NNRF9FUlJPUl9FVkVOVCxcbiBcbiBcdF9fRFJNX1JBU19DTURfTUFYLFxuIFx0RFJNX1JBU19DTURfTUFYID0gKF9fRFJNX1JBU19DTURfTUFYIC0gMSlcbiB9O1xuIFxuKyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcdFwiZXJyb3ItcmVwb3J0XCJcbitcbiAjZW5kaWYgLyogX1VBUElfTElOVVhfRFJNX1JBU19IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNzowODoyMC4xNDk2MzkwNTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDE2ODg5MzE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBOZXRsaW5rIEVycm9yIEV2ZW50IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50LCBgZXJyb3ItZXZlbnRgLCB3aXRoaW4gdGhlIGBkcm1fcmFzYCBmYW1pbHkuICBUaGUgZ29hbCBpcyB0byBpbmZvcm0gdXNlcnNwYWNlIGFib3V0IGhhcmR3YXJlIGVycm9ycyBkZXRlY3RlZCBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgeGVgIGRyaXZlci4gV2UncmUgYWRkaW5nIGEgZnVuY3Rpb24gYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIHRvIHNlbmQgdGhpcyBldmVudC4gVGhlIGB4ZWAgZHJpdmVyIGlzIHNldCB1cCB0byBjYWxsIGByYXNfc2VuZF9lcnJvcl9ldmVudGAgd2hlbmV2ZXIgYSBSQVMgZXJyb3IsIG9yIGEgdGhyZXNob2xkIGJlaW5nIGNyb3NzZWQsIGlzIGRldGVjdGVkLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRpcmVjdGlvbiBvZiBkYXRhIGZsb3cuICBUaGlzIGlzIGFuIGV2ZW50ICp0byogdXNlcnNwYWNlLCBub3QgYSBjb21tYW5kICpmcm9tKiB1c2Vyc3BhY2UuIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY2AgdG8gaW5jbHVkZSB0aGUgYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIGZ1bmN0aW9uIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlLiBBbHNvLCBgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jYCBpcyBiZWluZyBhbHRlcmVkIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbmV2ZXIgYSBoYXJkd2FyZSBlcnJvciBpcyBkZXRlY3RlZC5cblxuVGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyBpZiB0aGVyZSBhcmUgYW55IG5ldyAqaW5wdXRzKiBmcm9tIHVzZXJzcGFjZSBiZWluZyBpbnRyb2R1Y2VkLiAgVGhlIG5ldGxpbmsgZXZlbnQgaXMgc2ltcGx5IHNlbnQgdG8gdXNlcnNwYWNlIOKAkyBlc3NlbnRpYWxseSBhIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20uICBVc2Vyc3BhY2UgY2FuIHN1YnNjcmliZSB0byB0aGUgbXVsdGljYXN0IGdyb3VwLCB3aGljaCBpcyBhIHN0YW5kYXJkIG5ldGxpbmsgZnVuY3Rpb25hbGl0eS4gVGhlIGFjdHVhbCBldmVudCBpdHNlbGYgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBrZXJuZWwgaW4gcmVzcG9uc2UgdG8gYSBoYXJkd2FyZSBlcnJvciBjb25kaXRpb24uIFRoZSBgZHJtX3Jhcy55YW1sYCBmaWxlIGNvbmZpcm1zIHRoaXM6IGl0IGRlc2NyaWJlcyB0aGUgYGVycm9yLWV2ZW50YCBhcyBhIHJlcG9ydGluZyBtZWNoYW5pc20gdGhhdCBpbmNsdWRlcyBhdHRyaWJ1dGVzIGxpa2UgZGV2aWNlIG5hbWUsIG5vZGUgSUQsIGFuZCBlcnJvciBpbmZvcm1hdGlvbi5cblxuSSdtIGNoZWNraW5nIHRoZSBlbnVtZXJhdGlvbiBmb3IgYERSTV9SQVNfQ01EX0VSUk9SX0VWRU5UYCwgYnV0IGl0J3MgYW4gZXZlbnQsIG5vdCBhIGNvbW1hbmQuIFRoZXJlIGFyZSBubyBuZXcgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiBgZHJtX3Jhc19ubC5jYCB0aGF0IHdvdWxkIHByb3ZpZGUgYSB3YXkgZm9yIHVzZXJzcGFjZSB0byB0cmlnZ2VyIHRoaXMgZXZlbnQuIEV4YW1pbmluZyB0aGUgYGRybV9yYXNfbmxfb3BzYCBhbmQgdGhlIGBkcm1fcmFzX25sX21jZ3Jwc2AgY29uZmlybXMgdGhhdCB0aGlzIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyBtdWx0aWNhc3QgZ3JvdXAgYW5kIGFuIGV2ZW50LiBJdCBkb2Vzbid0IGVuYWJsZSB1c2Vyc3BhY2UgdG8gc2VuZCBgRFJNX1JBU19DTURfRVJST1JfRVZFTlRgLiBUaGUgcGF0Y2ggY3JlYXRlcyB0aGUgbmV3IG11bHRpY2FzdCBncm91cCBgZXJyb3ItcmVwb3J0YC5cblxuQ3J1Y2lhbGx5LCBjYW4gU3l6a2FsbGVyLCBvciBhbnkgb3RoZXIgZnV6emVyLCB0cmlnZ2VyIHRoaXMgZXZlbnQ/IE5vdCBkaXJlY3RseSwgc2luY2UgdGhlIGV2ZW50IHJlbGllcyBvbiBoYXJkd2FyZSBlcnJvciBjb25kaXRpb25zIHdpdGhpbiB0aGUgYHhlYCBkcml2ZXIsIGFuZCBpdCdzIHNpbXBseSBpbmZvcm1pbmcgdXNlcnNwYWNlIG9mIHNvbWV0aGluZyB0aGF0IGhhcyBhbHJlYWR5IGhhcHBlbmVkLiBUaGVyZSdzIG5vIG5ldyBpb2N0bCBvciBuZXRsaW5rIGNvbW1hbmQgdG8gYWN0aXZlbHkgKnRyaWdnZXIqIHRoaXMgcmVwb3J0aW5nLiBUaGUgYWRkZWQgY29kZSBpcyBqdXN0IHJlc3BvbmRpbmcgdG8gZXhpc3RpbmcgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGhhcmR3YXJlIGl0c2VsZi5cblxuSSdtIG5vdyBzYXRpc2ZpZWQuIFRoZXJlJ3Mgbm8gbmV3IGF0dGFjayBzdXJmYWNlIGNyZWF0ZWQgYmVjYXVzZSB0aGVyZSdzIG5vIG5ldyBpbnB1dCBmcm9tIHVzZXJzcGFjZSB0byBmdXp6LiBUaGUgb25seSB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gaXMgc3Vic2NyaWJpbmcgdG8gdGhlIG11bHRpY2FzdCBncm91cCwgYW5kIHRoYXQncyBoYW5kbGVkIGJ5IGdlbmVyaWMgbmV0bGluayBjb2RlLCBzbyBpdCBpcyBzYWZlLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4ZV9kcm1fcmFzX2V2ZW50YCBpcyBpbmRlZWQgY2FsbGVkIGZyb20gYHJhc19zZW5kX2Vycm9yX2V2ZW50YCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWRgIGFuZCBgeGVfcmFzX3Byb2Nlc3NfZXJyb3JzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBoYXJkd2FyZSBlcnJvciBoYW5kbGluZyBwYXRocy4gIE5vIG5ldyBpbnB1dC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGUgcGF0Y2gganVzdCBhZGRzIGEga2VybmVsLXRvLXVzZXJzcGFjZSBtdWx0aWNhc3QgZXZlbnQgdG8gcmVwb3J0IFJBUyBlcnJvcnMsIHdpdGggbm8gYWRkZWQgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NzksIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDc6MDg6MzQuMzE4NTM0OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkw7q8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 06:47:32 +0000 UTC FinishedAt: 2026-07-23 07:08: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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA3OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA3OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTAxNjE3YzQwYjE1Y2MyNWMyZWFlZDBhN2NkZGVlMmFiZjM0MGJjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcbmluZGV4IDgzYzIxODUzYjc0YjYwLi40MDZlNGM0OWJhYzFmZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxuQEAgLTU2LDYgJiM0Mzs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOlxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxuICogQ2xlYXIgc3BlY2lmaWMgZXJyb3IgY291bnRlcnMgd2l0aCB0aGUgYGBjbGVhci1lcnJvci1jb3VudGVyYGAgY29tbWFuZCwgdXNpbmcgYm90aFxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxuJiM0MzsqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXG4gXG4gWUFNTC1iYXNlZCBJbnRlcmZhY2VcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQEAgLTExMSwzICYjNDM7MTEyLDIzIEBAIEV4YW1wbGU6IENsZWFyIGFuIGVycm9yIGNvdW50ZXIgZm9yIGEgZ2l2ZW4gbm9kZVxuIFxuICAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tZG8gY2xlYXItZXJyb3ItY291bnRlciAtLWpzb24gJiMzOTt7XCYjMzQ7bm9kZS1pZFwmIzM0OzowLCBcJiMzNDtlcnJvci1pZFwmIzM0OzoxfSYjMzk7XG4gICAgIE5vbmVcbiYjNDM7XG4mIzQzO0V4YW1wbGU6IFN1YnNjcmliZSB0byBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cFxuJiM0MztcbiYjNDM7Li4gY29kZS1ibG9jazo6IGJhc2hcbiYjNDM7XG4mIzQzOyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tb3V0cHV0LWpzb24gLS1zdWJzY3JpYmUgZXJyb3ItcmVwb3J0XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjoganNvblxuJiM0MztcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtlcnJvci1ldmVudFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttc2dcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7ZGV2aWNlLW5hbWVcJiMzNDs6IFwmIzM0OzAwMDA6MDM6MDAuMFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7bm9kZS1pZFwmIzM0OzogMSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7bm9kZS1uYW1lXCYjMzQ7OiBcJiMzNDt1bmNvcnJlY3RhYmxlLWVycm9yc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7ZXJyb3ItaWRcJiMzNDs6IDEsXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2Vycm9yLW5hbWVcJiMzNDs6IFwmIzM0O2Vycm9yX25hbWUxXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtlcnJvci12YWx1ZVwmIzM0OzogMVxuJiM0MzsgICAgICAgIH1cbiYjNDM7ICAgIH1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuaW5kZXggZTExMzA1NmY4YzAxNmMuLjhhZWQzZDQ1MTVlNWFmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuQEAgLTY5LDYgJiM0Mzs2OSwzMyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGVycm9yLXZhbHVlXG4gICAgICAgICB0eXBlOiB1MzJcbiAgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIGVycm9yIGNvdW50ZXIuXG4mIzQzOyAgLVxuJiM0MzsgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxuJiM0MzsgICAgICAgIHR5cGU6IHN0cmluZ1xuJiM0MzsgICAgICAgIGRvYzogRGV2aWNlIChQQ0kgQkRGLCBVVUlEKSB0aGF0IHJlcG9ydGVkIHRoZSBlcnJvci5cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG5vZGUtaWRcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogbm9kZS1uYW1lXG4mIzQzOyAgICAgICAgdHlwZTogc3RyaW5nXG4mIzQzOyAgICAgICAgZG9jOiBOYW1lIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZXJyb3ItaWRcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBlcnJvciBjb3VudGVyLlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZXJyb3ItbmFtZVxuJiM0MzsgICAgICAgIHR5cGU6IHN0cmluZ1xuJiM0MzsgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxuJiM0MzsgICAgICAgIHR5cGU6IHUzMlxuJiM0MzsgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlci5cbiBcbiBvcGVyYXRpb25zOlxuICAgbGlzdDpcbkBAIC0xMjQsMyAmIzQzOzE1MSwyNCBAQCBvcGVyYXRpb25zOlxuICAgICAgIGRvOlxuICAgICAgICAgcmVxdWVzdDpcbiAgICAgICAgICAgYXR0cmlidXRlczogKmlkLWF0dHJzXG4mIzQzOyAgICAtXG4mIzQzOyAgICAgIG5hbWU6IGVycm9yLWV2ZW50XG4mIzQzOyAgICAgIGRvYzogXHUwMDNlLVxuJiM0MzsgICAgICAgICAgIFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuXG4mIzQzOyAgICAgICAgICAgVGhlIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXZpY2UsIG5vZGUgYW5kIGVycm9yIGluZm9ybWF0aW9uXG4mIzQzOyAgICAgICAgICAgb2YgdGhlIGVycm9yIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC5cbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZXJyb3ItZXZlbnQtYXR0cnNcbiYjNDM7ICAgICAgbWNncnA6IGVycm9yLXJlcG9ydFxuJiM0MzsgICAgICBldmVudDpcbiYjNDM7ICAgICAgICBhdHRyaWJ1dGVzOlxuJiM0MzsgICAgICAgICAgLSBkZXZpY2UtbmFtZVxuJiM0MzsgICAgICAgICAgLSBub2RlLWlkXG4mIzQzOyAgICAgICAgICAtIG5vZGUtbmFtZVxuJiM0MzsgICAgICAgICAgLSBlcnJvci1pZFxuJiM0MzsgICAgICAgICAgLSBlcnJvci1uYW1lXG4mIzQzOyAgICAgICAgICAtIGVycm9yLXZhbHVlXG4mIzQzO1xuJiM0MzttY2FzdC1ncm91cHM6XG4mIzQzOyAgbGlzdDpcbiYjNDM7ICAgIC1cbiYjNDM7ICAgICAgbmFtZTogZXJyb3ItcmVwb3J0XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNcbkBAIC00MSw2ICYjNDM7NDEsMTEgQEBcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxuICAqICAgIENsZWFycyBzcGVjaWZpYyBlcnJvciBjb3VudGVyIG9mIGEgbm9kZSBpZiBzdXBwb3J0ZWQuXG4gICpcbiYjNDM7ICogNC4gRVJST1JfUkVQT1JUOiBTdWJzY3JpYmUgdG8gdGhpcyBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBlcnJvciBldmVudHNcbiYjNDM7ICpcbiYjNDM7ICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGVcbiYjNDM7ICogICAgYW5kIGVycm9yIGluZm9ybWF0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC5cbiYjNDM7ICpcbiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjpcbiAgKlxuICAqIC0gZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKCk6IFJlZ2lzdGVycyBhIG5ldyBub2RlIGFuZCBhc3NpZ25zXG5AQCAtMTg2LDYgJiM0MzsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLFxuIFx0XHRcdCAgIHZhbHVlKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbXNnX3B1dF9lcnJvcl9ldmVudF9hdHRycyhzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLFxuJiM0MztcdFx0XHRcdCAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS1cdTAwM2VkZXZpY2VfbmFtZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IG5sYV9wdXRfdTMyKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsIG5vZGUtXHUwMDNlaWQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsIG5vZGUtXHUwMDNlbm9kZV9uYW1lKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwgZXJyb3JfbmFtZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZG9pdF9yZXBseV92YWx1ZShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCB1MzIgbm9kZV9pZCxcbiBcdFx0XHQgICAgdTMyIGVycm9yX2lkKVxuIHtcbkBAIC0yMjIsNiAmIzQzOzI1NSw3NCBAQCBzdGF0aWMgaW50IGRvaXRfcmVwbHlfdmFsdWUoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgdTMyIG5vZGVfaWQsXG4gXHRyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoKSAtIFJlcG9ydCBhbiBlcnJvciBldmVudFxuJiM0MzsgKiBAbm9kZTogTm9kZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3JcbiYjNDM7ICogQGVycm9yX25hbWU6IE5hbWUgb2YgdGhlIGVycm9yXG4mIzQzOyAqIEB2YWx1ZTogVmFsdWUgb2YgdGhlIGVycm9yIGNvdW50ZXJcbiYjNDM7ICpcbiYjNDM7ICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZSB1c2luZyB0aGUgZXJyb3ItcmVwb3J0IG11bHRpY2FzdCBncm91cC5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsXG4mIzQzOyAqICAgICAgICAgIG5ldG5zLCB3aGljaCBpcyB1bmJvdW5kZWQgd29yazsgY2FsbGVycyBpbiBpbnRlcnJ1cHQgaGFuZGxlcnNcbiYjNDM7ICogICAgICAgICAgb3Igb3RoZXIgYXRvbWljIGNvbnRleHQgbXVzdCBkZWZlciBldmVudC5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsXG4mIzQzO1x0XHRcdCAgIHUzMiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuJiM0MztcdHN0cnVjdCBubGF0dHIgKmhkcjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIW5vZGUgfHwgIWVycm9yX25hbWUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0LyogQ2hlY2sgdGhlIG5vZGUgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgKi9cbiYjNDM7XHRpZiAoeGFfbG9hZChcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVx1MDAzZWlkKSAhPSBub2RlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9FTlQ7XG4mIzQzO1xuJiM0MztcdC8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi9cbiYjNDM7XHRpZiAobm9kZS1cdTAwM2V0eXBlICE9IERSTV9SQVNfTk9ERV9UWVBFX0VSUk9SX0NPVU5URVIpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1xuJiM0MztcdC8qIENoZWNrIHRoZSBlcnJvciBJRCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlICovXG4mIzQzO1x0aWYgKGVycm9yX2lkIFx1MDAzYyBub2RlLVx1MDAzZWVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QgfHxcbiYjNDM7XHQgICAgZXJyb3JfaWQgXHUwMDNlIG5vZGUtXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGdlbmxfaW5mb19pbml0X250ZihcdTAwMjZpbmZvLCBcdTAwMjZkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpO1xuJiM0MztcbiYjNDM7XHRtc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFtc2cpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0aGRyID0gZ2VubG1zZ19pcHV0KG1zZywgXHUwMDI2aW5mbyk7XG4mIzQzO1x0aWYgKCFoZHIpIHtcbiYjNDM7XHRcdHJldCA9IC1FTVNHU0laRTtcbiYjNDM7XHRcdGdvdG8gZnJlZV9tc2c7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBjYW5jZWxfbXNnO1xuJiM0MztcbiYjNDM7XHRnZW5sbXNnX2VuZChtc2csIGhkcik7XG4mIzQzO1x0Z2VubG1zZ19tdWx0aWNhc3RfYWxsbnMoXHUwMDI2ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2NhbmNlbF9tc2c6XG4mIzQzO1x0Z2VubG1zZ19jYW5jZWwobXNnLCBoZHIpO1xuJiM0MztmcmVlX21zZzpcbiYjNDM7XHRubG1zZ19mcmVlKG1zZyk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKGRybV9yYXNfbmxfZXJyb3JfZXZlbnQpO1xuJiM0MztcbiAvKipcbiAgKiBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdCgpIC0gRHVtcCBhbGwgRXJyb3IgQ291bnRlcnNcbiAgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2UgYnVmZmVyXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbmluZGV4IGRlYTFjMWIyNDk0ZTgxLi45ZDMxMjNjYzlmOWNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmNcbkBAIC01OCw2ICYjNDM7NTgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NwbGl0X29wcyBkcm1fcmFzX25sX29wc1tdID0ge1xuIFx0fSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XG4mIzQzO1x0W0RSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUXSA9IHsgXCYjMzQ7ZXJyb3ItcmVwb3J0XCYjMzQ7LCB9LFxuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm5hbWVcdFx0PSBEUk1fUkFTX0ZBTUlMWV9OQU1FLFxuIFx0LnZlcnNpb25cdD0gRFJNX1JBU19GQU1JTFlfVkVSU0lPTixcbkBAIC02Niw0ICYjNDM7NzAsNiBAQCBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm1vZHVsZVx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0LnNwbGl0X29wc1x0PSBkcm1fcmFzX25sX29wcyxcbiBcdC5uX3NwbGl0X29wc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcbiYjNDM7XHQubWNncnBzXHRcdD0gZHJtX3Jhc19ubF9tY2dycHMsXG4mIzQzO1x0Lm5fbWNncnBzXHQ9IEFSUkFZX1NJWkUoZHJtX3Jhc19ubF9tY2dycHMpLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbmluZGV4IGEzOTg2NDM1NzJhNWEwLi4wM2VjMjc1YWNhOTI5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcbkBAIC0yMSw2ICYjNDM7MjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGRybV9yYXNfbmxfY2xlYXJfZXJyb3JfY291bnRlcl9kb2l0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIFxuJiM0MztlbnVtIHtcbiYjNDM7XHREUk1fUkFTX05MR1JQX0VSUk9SX1JFUE9SVCxcbiYjNDM7fTtcbiYjNDM7XG4gZXh0ZXJuIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX0RSTV9SQVNfR0VOX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuY1xuQEAgLTE4NSw2ICYjNDM7MTg1LDM3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfbm9kZXMoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZVxuJiM0MzsgKiBAeGU6IHhlIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudClcbiYjNDM7ICogQHNldmVyaXR5OiBlcnJvciBzZXZlcml0eSAoc2VlIFx1MDAyNmVudW0gZHJtX3hlX3Jhc19lcnJvcl9zZXZlcml0eSlcbiYjNDM7ICogQHZhbHVlOiB2YWx1ZSBvZiBlcnJvciBjb3VudGVyXG4mIzQzOyAqXG4mIzQzOyAqIFJlcG9ydCBhbiBlcnJvci1ldmVudCB0byB1c2Vyc3BhY2UuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHhlX2RybV9yYXNfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IGNvbXBvbmVudCwgdTggc2V2ZXJpdHksIHUzMiB2YWx1ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB4ZV9kcm1fcmFzICpyYXMgPSBcdTAwMjZ4ZS1cdTAwM2VyYXM7XG4mIzQzO1x0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cdTAwM2VpbmZvW3NldmVyaXR5XTtcbiYjNDM7XHRzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIEV2ZW50IGlzIHN1cHBvcnRlZCBvbmx5IGlmIGRybS1yYXMgaXMgZW5hYmxlZCAqL1xuJiM0MztcdGlmICgheGUtXHUwMDNlaW5mby5oYXNfZHJtX3JhcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bm9kZSA9IFx1MDAyNnJhcy1cdTAwM2Vub2RlW3NldmVyaXR5XTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpbmZvIHx8ICFpbmZvW2NvbXBvbmVudF0ubmFtZSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZHJtX3Jhc19ubF9lcnJvcl9ldmVudChub2RlLCBjb21wb25lbnQsIGluZm9bY29tcG9uZW50XS5uYW1lLCB2YWx1ZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXHUwMDI2eGUtXHUwMDNlZHJtLCBcJiMzNDtkcm0tcmFzIGVycm9yLWV2ZW50IGZhaWxlZDogJWQgZm9yICVzICVzXFxuXCYjMzQ7LCByZXQsXG4mIzQzO1x0XHRcdFx0ICAgIGluZm9bY29tcG9uZW50XS5uYW1lLCBlcnJvcl9zZXZlcml0eVtzZXZlcml0eV0pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTXG4gICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaFxuQEAgLTUsMTEgJiM0Mzs1LDE0IEBAXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xuICNkZWZpbmUgX1hFX0RSTV9SQVNfSF9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MztcbiBzdHJ1Y3QgeGVfZGV2aWNlO1xuIFxuICNkZWZpbmUgZm9yX2VhY2hfZXJyb3Jfc2V2ZXJpdHkoaSlcdFxcXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYOyBpJiM0MzsmIzQzOylcbiBcbiBpbnQgeGVfZHJtX3Jhc19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcbiYjNDM7dm9pZCB4ZV9kcm1fcmFzX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBjb21wb25lbnQsIHU4IHNldmVyaXR5LCB1MzIgdmFsdWUpO1xuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY1xuaW5kZXggYTMxZTA2YjhhYTY3YWMuLmQ0M2Y2MTRkZTcyMzcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcbkBAIC05MCw2ICYjNDM7OTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdwdV9oZWFsdGhfc3RhdGVzW10gPSB7XG4gfTtcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcbiBcbiYjNDM7c3RhdGljIGludCBnZXRfY291bnRlcihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgc3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyAqY291bnRlciwgdTMyICp2YWx1ZSk7XG4mIzQzO1xuIHN0YXRpYyB1OCBkcm1fdG9feGVfcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxuIHtcbiBcdHN3aXRjaCAoc2V2ZXJpdHkpIHtcbkBAIC0xMDIsNiAmIzQzOzEwNCwxOCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChzZXZlcml0eSkge1xuJiM0MztcdGNhc2UgWEVfUkFTX1NFVl9DT1JSRUNUQUJMRTpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfQ09SUkVDVEFCTEU7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfU0VWX1VOQ09SUkVDVEFCTEU6XG4mIzQzO1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX1VOQ09SUkVDVEFCTEU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIHtcbiBcdHN3aXRjaCAoY29tcG9uZW50KSB7XG5AQCAtMTIwLDYgJiM0MzsxMzQsMjQgQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfY29tcG9uZW50KHU4IGNvbXBvbmVudClcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX2NvbXBvbmVudCh1OCBjb21wb25lbnQpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuJiM0MztcdGNhc2UgWEVfUkFTX0NPTVBfREVWSUNFX01FTU9SWTpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0RFVklDRV9NRU1PUlk7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfQ09NUF9DT1JFX0NPTVBVVEU6XG4mIzQzO1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9DT1JFX0NPTVBVVEU7XG4mIzQzO1x0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxuJiM0MztcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfUENJRTtcbiYjNDM7XHRjYXNlIFhFX1JBU19DT01QX0ZBQlJJQzpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0ZBQlJJQztcbiYjNDM7XHRjYXNlIFhFX1JBU19DT01QX1NPQ19JTlRFUk5BTDpcbiYjNDM7XHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX1NPQ19JTlRFUk5BTDtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfTUFYO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJhc19zdGF0dXNfdG9fZXJybm8odTMyIHN0YXR1cylcbiB7XG4gXHRzd2l0Y2ggKHN0YXR1cykge1xuQEAgLTIxOCw2ICYjNDM7MjUwLDI2IEBAIHN0YXRpYyB2b2lkIHJhc191c3BfYWVyX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRkZXZfZGJnKFx1MDAyNnVzcC1cdTAwM2VkZXYsIFwmIzM0O1VuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxuXCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJhc19zZW5kX2Vycm9yX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBzZXZlcml0eSwgdTggY29tcG9uZW50KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBjb3VudGVyID0gezB9O1xuJiM0MztcdHU4IGRybV9zZXZlcml0eSwgZHJtX2NvbXBvbmVudDtcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y291bnRlci5jb21tb24uc2V2ZXJpdHkgPSBzZXZlcml0eTtcbiYjNDM7XHRjb3VudGVyLmNvbW1vbi5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcdTAwMjZjb3VudGVyLCBcdTAwMjZ2YWx1ZSk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZHJtX3NldmVyaXR5ID0geGVfdG9fZHJtX3Jhc19zZXZlcml0eShzZXZlcml0eSk7XG4mIzQzO1x0ZHJtX2NvbXBvbmVudCA9IHhlX3RvX2RybV9yYXNfY29tcG9uZW50KGNvbXBvbmVudCk7XG4mIzQzO1xuJiM0MztcdHhlX2RybV9yYXNfZXZlbnQoeGUsIGRybV9jb21wb25lbnQsIGRybV9zZXZlcml0eSwgdmFsdWUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXG4ge1xuIFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXHUwMDNlZGV0YWlscztcbkBAIC0zMTIsOCAmIzQzOzM2NCwxMCBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuIFx0c3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopXHUwMDI2cmVzcG9uc2UtXHUwMDNlZGF0YTtcbiBcdHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmVycm9ycyA9IHBlbmRpbmctXHUwMDNlY291bnRlcnM7XG4gXHR1MzIgaWQsIG5jb3VudGVycyA9IHBlbmRpbmctXHUwMDNlbmNvdW50ZXJzO1xuJiM0MztcdHU4IHNlbnQgPSAwO1xuIFxuIFx0QlVJTERfQlVHX09OKHNpemVvZihyZXNwb25zZS1cdTAwM2VkYXRhKSBcdTAwM2Mgc2l6ZW9mKCpwZW5kaW5nKSk7XG4mIzQzO1x0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXHUwMDNjIFhFX1JBU19DT01QX01BWCk7XG4gXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xuIFxuIFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFx1MDAzZSBYRV9SQVNfTlVNX0NPVU5URVJTKVxuQEAgLTMyOSw2ICYjNDM7MzgzLDEzIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsXG4gXG4gXHRcdHhlX3dhcm4oeGUsIFwmIzM0O1tSQVNdOiAlcyAlcyBkZXRlY3RlZFxcblwmIzM0OyxcbiBcdFx0XHRjb21wX3RvX3N0cihjb21wb25lbnQpLCBzZXZfdG9fc3RyKHNldmVyaXR5KSk7XG4mIzQzO1xuJiM0MztcdFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cbiYjNDM7XHRcdGlmIChzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuJiM0MztcbiYjNDM7XHRcdHJhc19zZW5kX2Vycm9yX2V2ZW50KHhlLCBzZXZlcml0eSwgY29tcG9uZW50KTtcbiBcdH1cbiB9XG4gXG5AQCAtMzgyLDYgJiM0Mzs0NDMsNyBAQCBlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rpb24geGVfcmFzX3Byb2Nlc3NfZXJyb3JzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0ZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGZpbmFsX2FjdGlvbjtcbiBcdHUzMiByZW1haW5pbmcgPSBYRV9TWVNDVFJMX0ZMT09EX0xJTUlUO1xuIFx0c3RydWN0IHhlX3Jhc19nZXRfc29jX2Vycm9yIHJlc3BvbnNlO1xuJiM0MztcdHU4IHNlbnQgPSAwO1xuIFx0c2l6ZV90IHJsZW47XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTQyNSw2ICYjNDM7NDg3LDEyIEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpXG4gXHRcdFx0eGVfaW5mbyh4ZSwgXCYjMzQ7W1JBU106ICVzICVzIGRldGVjdGVkXFxuXCYjMzQ7LCBjb21wX3RvX3N0cihjb21wb25lbnQpLFxuIFx0XHRcdFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xuIFxuJiM0MztcdFx0XHQvKiBTZW5kIGV2ZW50IG9uY2UgcGVyIGNvbXBvbmVudCAqL1xuJiM0MztcdFx0XHRpZiAoIShzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSkpIHtcbiYjNDM7XHRcdFx0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuJiM0MztcdFx0XHRcdHJhc19zZW5kX2Vycm9yX2V2ZW50KHhlLCBzZXZlcml0eSwgY29tcG9uZW50KTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiBcdFx0XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuIFx0XHRcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxuIFx0XHRcdFx0YWN0aW9uID0gaGFuZGxlX2NvcmVfY29tcHV0ZV9lcnJvcnMoYXJyKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcbmluZGV4IDBiZWVkZTNkZGM0ZTRiLi5lZTJjYWEwZWRjNmY5MiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvZHJtL2RybV9yYXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXG5AQCAtODAsOSAmIzQzOzgwLDE0IEBAIHN0cnVjdCBkcm1fZGV2aWNlO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fUkFTKVxuIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSk7XG4gdm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcbiYjNDM7aW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLFxuJiM0MztcdFx0XHQgICB1MzIgdmFsdWUpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IGNoYXIgKmVycm9yX25hbWUsIHUzMiB2YWx1ZSlcbiYjNDM7eyByZXR1cm4gMDsgfVxuICNlbmRpZlxuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcbmluZGV4IDIxOGEzZWU4NjgwNTI3Li5lYWI4MjMxYWE4N2NiZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxuQEAgLTM4LDEzICYjNDM7MzgsMjggQEAgZW51bSB7XG4gXHREUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKVxuIH07XG4gXG4mIzQzO2VudW0ge1xuJiM0MztcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSA9IDEsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfTkFNRSxcbiYjNDM7XHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLFxuJiM0MztcbiYjNDM7XHRfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVgsXG4mIzQzO1x0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggLSAxKVxuJiM0Mzt9O1xuJiM0MztcbiBlbnVtIHtcbiBcdERSTV9SQVNfQ01EX0xJU1RfTk9ERVMgPSAxLFxuIFx0RFJNX1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIsXG4gXHREUk1fUkFTX0NNRF9DTEVBUl9FUlJPUl9DT1VOVEVSLFxuJiM0MztcdERSTV9SQVNfQ01EX0VSUk9SX0VWRU5ULFxuIFxuIFx0X19EUk1fUkFTX0NNRF9NQVgsXG4gXHREUk1fUkFTX0NNRF9NQVggPSAoX19EUk1fUkFTX0NNRF9NQVggLSAxKVxuIH07XG4gXG4mIzQzOyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcdFwmIzM0O2Vycm9yLXJlcG9ydFwmIzM0O1xuJiM0MztcbiAjZW5kaWYgLyogX1VBUElfTElOVVhfRFJNX1JBU19IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDc6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MDE2MTdjNDBiMTVjYzI1YzJlYWVkMGE3Y2RkZWUyYWJmMzQwYmM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDc6MDg6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0CmluZGV4IDgzYzIxODUzYjc0YjYwLi40MDZlNGM0OWJhYzFmZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QKQEAgLTU2LDYgJiM0Mzs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOgogICBgYG5vZGUtaWRgYCBhbmQgYGBlcnJvci1pZGBgIGFzIHBhcmFtZXRlcnMuCiAqIENsZWFyIHNwZWNpZmljIGVycm9yIGNvdW50ZXJzIHdpdGggdGhlIGBgY2xlYXItZXJyb3ItY291bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGgKICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLgomIzQzOyogU3Vic2NyaWJlIHRvIHRoZSBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGBgZXJyb3ItZXZlbnRgYC4KIAogWUFNTC1iYXNlZCBJbnRlcmZhY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTEsMyAmIzQzOzExMiwyMyBAQCBFeGFtcGxlOiBDbGVhciBhbiBlcnJvciBjb3VudGVyIGZvciBhIGdpdmVuIG5vZGUKIAogICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAmIzM5O3smIzM0O25vZGUtaWQmIzM0OzowLCAmIzM0O2Vycm9yLWlkJiMzNDs6MX0mIzM5OwogICAgIE5vbmUKJiM0MzsKJiM0MztFeGFtcGxlOiBTdWJzY3JpYmUgdG8gYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAKJiM0MzsKJiM0MzsuLiBjb2RlLWJsb2NrOjogYmFzaAomIzQzOwomIzQzOyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tb3V0cHV0LWpzb24gLS1zdWJzY3JpYmUgZXJyb3ItcmVwb3J0CiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IGpzb24KJiM0MzsKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7ZXJyb3ItZXZlbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bXNnJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O2RldmljZS1uYW1lJiMzNDs6ICYjMzQ7MDAwMDowMzowMC4wJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtub2RlLWlkJiMzNDs6IDEsCiYjNDM7ICAgICAgICAgICAgJiMzNDtub2RlLW5hbWUmIzM0OzogJiMzNDt1bmNvcnJlY3RhYmxlLWVycm9ycyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7ZXJyb3ItaWQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O2Vycm9yLW5hbWUmIzM0OzogJiMzNDtlcnJvcl9uYW1lMSYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7ZXJyb3ItdmFsdWUmIzM0OzogMQomIzQzOyAgICAgICAgfQomIzQzOyAgICB9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbAppbmRleCBlMTEzMDU2ZjhjMDE2Yy4uOGFlZDNkNDUxNWU1YWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kcm1fcmFzLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbApAQCAtNjksNiAmIzQzOzY5LDMzIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBlcnJvci12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKICAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSByZXF1ZXN0ZWQgZXJyb3IgY291bnRlci4KJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnMKJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZQomIzQzOyAgICAgICAgdHlwZTogc3RyaW5nCiYjNDM7ICAgICAgICBkb2M6IERldmljZSAoUENJIEJERiwgVVVJRCkgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbm9kZS1pZAomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7ICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IG5vZGUtbmFtZQomIzQzOyAgICAgICAgdHlwZTogc3RyaW5nCiYjNDM7ICAgICAgICBkb2M6IE5hbWUgb2YgdGhlIG5vZGUgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZXJyb3ItaWQKJiM0MzsgICAgICAgIHR5cGU6IHUzMgomIzQzOyAgICAgICAgZG9jOiBJRCBvZiB0aGUgZXJyb3IgY291bnRlci4KJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBlcnJvci1uYW1lCiYjNDM7ICAgICAgICB0eXBlOiBzdHJpbmcKJiM0MzsgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZXJyb3ItdmFsdWUKJiM0MzsgICAgICAgIHR5cGU6IHUzMgomIzQzOyAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyLgogCiBvcGVyYXRpb25zOgogICBsaXN0OgpAQCAtMTI0LDMgJiM0MzsxNTEsMjQgQEAgb3BlcmF0aW9uczoKICAgICAgIGRvOgogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIGF0dHJpYnV0ZXM6ICppZC1hdHRycwomIzQzOyAgICAtCiYjNDM7ICAgICAgbmFtZTogZXJyb3ItZXZlbnQKJiM0MzsgICAgICBkb2M6ICZndDstCiYjNDM7ICAgICAgICAgICBSZXBvcnQgYW4gZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlLgomIzQzOyAgICAgICAgICAgVGhlIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXZpY2UsIG5vZGUgYW5kIGVycm9yIGluZm9ybWF0aW9uCiYjNDM7ICAgICAgICAgICBvZiB0aGUgZXJyb3IgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LgomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGVycm9yLWV2ZW50LWF0dHJzCiYjNDM7ICAgICAgbWNncnA6IGVycm9yLXJlcG9ydAomIzQzOyAgICAgIGV2ZW50OgomIzQzOyAgICAgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAgICAgLSBkZXZpY2UtbmFtZQomIzQzOyAgICAgICAgICAtIG5vZGUtaWQKJiM0MzsgICAgICAgICAgLSBub2RlLW5hbWUKJiM0MzsgICAgICAgICAgLSBlcnJvci1pZAomIzQzOyAgICAgICAgICAtIGVycm9yLW5hbWUKJiM0MzsgICAgICAgICAgLSBlcnJvci12YWx1ZQomIzQzOwomIzQzO21jYXN0LWdyb3VwczoKJiM0MzsgIGxpc3Q6CiYjNDM7ICAgIC0KJiM0MzsgICAgICBuYW1lOiBlcnJvci1yZXBvcnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCkBAIC00MSw2ICYjNDM7NDEsMTEgQEAKICAqICAgIFVzZXJzcGFjZSBtdXN0IHByb3ZpZGUgTm9kZSBJRCwgRXJyb3IgSUQuCiAgKiAgICBDbGVhcnMgc3BlY2lmaWMgZXJyb3IgY291bnRlciBvZiBhIG5vZGUgaWYgc3VwcG9ydGVkLgogICoKJiM0MzsgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50cwomIzQzOyAqCiYjNDM7ICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGUKJiM0MzsgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LgomIzQzOyAqCiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjoKICAqCiAgKiAtIGRybV9yYXNfbm9kZV9yZWdpc3RlcigpOiBSZWdpc3RlcnMgYSBuZXcgbm9kZSBhbmQgYXNzaWducwpAQCAtMTg2LDYgJiM0MzsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLAogCQkJICAgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsCiYjNDM7CQkJCSAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS0mZ3Q7ZGV2aWNlX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwgbm9kZS0mZ3Q7aWQpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9OQU1FLCBub2RlLSZndDtub2RlX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsIGVycm9yX25hbWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0dXJuIG5sYV9wdXRfdTMyKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLCB2YWx1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLAogCQkJICAgIHUzMiBlcnJvcl9pZCkKIHsKQEAgLTIyMiw2ICYjNDM7MjU1LDc0IEBAIHN0YXRpYyBpbnQgZG9pdF9yZXBseV92YWx1ZShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCB1MzIgbm9kZV9pZCwKIAlyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50CiYjNDM7ICogQG5vZGU6IE5vZGUgc3RydWN0dXJlCiYjNDM7ICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3IKJiM0MzsgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3IKJiM0MzsgKiBAdmFsdWU6IFZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLgomIzQzOyAqCiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsCiYjNDM7ICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVycwomIzQzOyAqICAgICAgICAgIG9yIG90aGVyIGF0b21pYyBjb250ZXh0IG11c3QgZGVmZXIgZXZlbnQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsCiYjNDM7CQkJICAgdTMyIHZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IGdlbmxfaW5mbyBpbmZvOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqbXNnOwomIzQzOwlzdHJ1Y3QgbmxhdHRyICpoZHI7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghbm9kZSB8fCAhZXJyb3JfbmFtZSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwkvKiBDaGVjayB0aGUgbm9kZSBpcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCAqLwomIzQzOwlpZiAoeGFfbG9hZCgmYW1wO2RybV9yYXNfeGEsIG5vZGUtJmd0O2lkKSAhPSBub2RlKQomIzQzOwkJcmV0dXJuIC1FTk9FTlQ7CiYjNDM7CiYjNDM7CS8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi8KJiM0MzsJaWYgKG5vZGUtJmd0O3R5cGUgIT0gRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUikKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJLyogQ2hlY2sgdGhlIGVycm9yIElEIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgKi8KJiM0MzsJaWYgKGVycm9yX2lkICZsdDsgbm9kZS0mZ3Q7ZXJyb3JfY291bnRlcl9yYW5nZS5maXJzdCB8fAomIzQzOwkgICAgZXJyb3JfaWQgJmd0OyBub2RlLSZndDtlcnJvcl9jb3VudGVyX3JhbmdlLmxhc3QpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJZ2VubF9pbmZvX2luaXRfbnRmKCZhbXA7aW5mbywgJmFtcDtkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpOwomIzQzOwomIzQzOwltc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghbXNnKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWhkciA9IGdlbmxtc2dfaXB1dChtc2csICZhbXA7aW5mbyk7CiYjNDM7CWlmICghaGRyKSB7CiYjNDM7CQlyZXQgPSAtRU1TR1NJWkU7CiYjNDM7CQlnb3RvIGZyZWVfbXNnOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IG1zZ19wdXRfZXJyb3JfZXZlbnRfYXR0cnMobXNnLCBub2RlLCBlcnJvcl9pZCwgZXJyb3JfbmFtZSwgdmFsdWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBjYW5jZWxfbXNnOwomIzQzOwomIzQzOwlnZW5sbXNnX2VuZChtc2csIGhkcik7CiYjNDM7CWdlbmxtc2dfbXVsdGljYXN0X2FsbG5zKCZhbXA7ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0MztjYW5jZWxfbXNnOgomIzQzOwlnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7CiYjNDM7ZnJlZV9tc2c6CiYjNDM7CW5sbXNnX2ZyZWUobXNnKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTChkcm1fcmFzX25sX2Vycm9yX2V2ZW50KTsKJiM0MzsKIC8qKgogICogZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9kdW1waXQoKSAtIER1bXAgYWxsIEVycm9yIENvdW50ZXJzCiAgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2UgYnVmZmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYwppbmRleCBkZWExYzFiMjQ5NGU4MS4uOWQzMTIzY2M5ZjljYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYwpAQCAtNTgsNiAmIzQzOzU4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZHJtX3Jhc19ubF9vcHNbXSA9IHsKIAl9LAogfTsKIAomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgZHJtX3Jhc19ubF9tY2dycHNbXSA9IHsKJiM0MzsJW0RSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUXSA9IHsgJiMzNDtlcnJvci1yZXBvcnQmIzM0OywgfSwKJiM0Mzt9OwomIzQzOwogc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHsKIAkubmFtZQkJPSBEUk1fUkFTX0ZBTUlMWV9OQU1FLAogCS52ZXJzaW9uCT0gRFJNX1JBU19GQU1JTFlfVkVSU0lPTiwKQEAgLTY2LDQgJiM0Mzs3MCw2IEBAIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLm1vZHVsZQkJPSBUSElTX01PRFVMRSwKIAkuc3BsaXRfb3BzCT0gZHJtX3Jhc19ubF9vcHMsCiAJLm5fc3BsaXRfb3BzCT0gQVJSQVlfU0laRShkcm1fcmFzX25sX29wcyksCiYjNDM7CS5tY2dycHMJCT0gZHJtX3Jhc19ubF9tY2dycHMsCiYjNDM7CS5uX21jZ3Jwcwk9IEFSUkFZX1NJWkUoZHJtX3Jhc19ubF9tY2dycHMpLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oCmluZGV4IGEzOTg2NDM1NzJhNWEwLi4wM2VjMjc1YWNhOTI5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oCkBAIC0yMSw2ICYjNDM7MjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsCiBpbnQgZHJtX3Jhc19ubF9jbGVhcl9lcnJvcl9jb3VudGVyX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkJc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7CiAKJiM0MztlbnVtIHsKJiM0MzsJRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsCiYjNDM7fTsKJiM0MzsKIGV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHk7CiAKICNlbmRpZiAvKiBfTElOVVhfRFJNX1JBU19HRU5fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMKaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMKQEAgLTE4NSw2ICYjNDM7MTg1LDM3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfbm9kZXMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZQomIzQzOyAqIEB4ZTogeGUgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEBjb21wb25lbnQ6IGVycm9yIGNvbXBvbmVudCAoc2VlICZhbXA7ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudCkKJiM0MzsgKiBAc2V2ZXJpdHk6IGVycm9yIHNldmVyaXR5IChzZWUgJmFtcDtlbnVtIGRybV94ZV9yYXNfZXJyb3Jfc2V2ZXJpdHkpCiYjNDM7ICogQHZhbHVlOiB2YWx1ZSBvZiBlcnJvciBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlLgomIzQzOyAqLwomIzQzO3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKQomIzQzO3sKJiM0MzsJc3RydWN0IHhlX2RybV9yYXMgKnJhcyA9ICZhbXA7eGUtJmd0O3JhczsKJiM0MzsJc3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy0mZ3Q7aW5mb1tzZXZlcml0eV07CiYjNDM7CXN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIEV2ZW50IGlzIHN1cHBvcnRlZCBvbmx5IGlmIGRybS1yYXMgaXMgZW5hYmxlZCAqLwomIzQzOwlpZiAoIXhlLSZndDtpbmZvLmhhc19kcm1fcmFzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlub2RlID0gJmFtcDtyYXMtJmd0O25vZGVbc2V2ZXJpdHldOwomIzQzOwomIzQzOwlpZiAoIWluZm8gfHwgIWluZm9bY29tcG9uZW50XS5uYW1lKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlyZXQgPSBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KG5vZGUsIGNvbXBvbmVudCwgaW5mb1tjb21wb25lbnRdLm5hbWUsIHZhbHVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRybV9lcnJfcmF0ZWxpbWl0ZWQoJmFtcDt4ZS0mZ3Q7ZHJtLCAmIzM0O2RybS1yYXMgZXJyb3ItZXZlbnQgZmFpbGVkOiAlZCBmb3IgJXMgJXNcbiYjMzQ7LCByZXQsCiYjNDM7CQkJCSAgICBpbmZvW2NvbXBvbmVudF0ubmFtZSwgZXJyb3Jfc2V2ZXJpdHlbc2V2ZXJpdHldKTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTCiAgKiBAeGU6IHhlIGRldmljZSBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmgKaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmgKQEAgLTUsMTEgJiM0Mzs1LDE0IEBACiAjaWZuZGVmIF9YRV9EUk1fUkFTX0hfCiAjZGVmaW5lIF9YRV9EUk1fUkFTX0hfCiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsKIHN0cnVjdCB4ZV9kZXZpY2U7CiAKICNkZWZpbmUgZm9yX2VhY2hfZXJyb3Jfc2V2ZXJpdHkoaSkJXAogCWZvciAoaSA9IDA7IGkgJmx0OyBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYOyBpJiM0MzsmIzQzOykKIAogaW50IHhlX2RybV9yYXNfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7CiYjNDM7dm9pZCB4ZV9kcm1fcmFzX2V2ZW50KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1OCBjb21wb25lbnQsIHU4IHNldmVyaXR5LCB1MzIgdmFsdWUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwppbmRleCBhMzFlMDZiOGFhNjdhYy4uZDQzZjYxNGRlNzIzNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMKQEAgLTkwLDYgJiM0Mzs5MCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ3B1X2hlYWx0aF9zdGF0ZXNbXSA9IHsKIH07CiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTsKIAomIzQzO3N0YXRpYyBpbnQgZ2V0X2NvdW50ZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmNvdW50ZXIsIHUzMiAqdmFsdWUpOwomIzQzOwogc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiB7CiAJc3dpdGNoIChzZXZlcml0eSkgewpAQCAtMTAyLDYgJiM0MzsxMDQsMTggQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiAJfQogfQogCiYjNDM7c3RhdGljIHU4IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKHNldmVyaXR5KSB7CiYjNDM7CWNhc2UgWEVfUkFTX1NFVl9DT1JSRUNUQUJMRToKJiM0MzsJCXJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfQ09SUkVDVEFCTEU7CiYjNDM7CWNhc2UgWEVfUkFTX1NFVl9VTkNPUlJFQ1RBQkxFOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9VTkNPUlJFQ1RBQkxFOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9NQVg7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KQogewogCXN3aXRjaCAoY29tcG9uZW50KSB7CkBAIC0xMjAsNiAmIzQzOzEzNCwyNCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KQogCX0KIH0KIAomIzQzO3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX2NvbXBvbmVudCh1OCBjb21wb25lbnQpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNvbXBvbmVudCkgewomIzQzOwljYXNlIFhFX1JBU19DT01QX0RFVklDRV9NRU1PUlk6CiYjNDM7CQlyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9ERVZJQ0VfTUVNT1JZOwomIzQzOwljYXNlIFhFX1JBU19DT01QX0NPUkVfQ09NUFVURToKJiM0MzsJCXJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0NPUkVfQ09NUFVURTsKJiM0MzsJY2FzZSBYRV9SQVNfQ09NUF9QQ0lFOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfUENJRTsKJiM0MzsJY2FzZSBYRV9SQVNfQ09NUF9GQUJSSUM6CiYjNDM7CQlyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9GQUJSSUM7CiYjNDM7CWNhc2UgWEVfUkFTX0NPTVBfU09DX0lOVEVSTkFMOgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfU09DX0lOVEVSTkFMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfTUFYOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCByYXNfc3RhdHVzX3RvX2Vycm5vKHUzMiBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsKQEAgLTIxOCw2ICYjNDM7MjUwLDI2IEBAIHN0YXRpYyB2b2lkIHJhc191c3BfYWVyX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJZGV2X2RiZygmYW1wO3VzcC0mZ3Q7ZGV2LCAmIzM0O1VuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCByYXNfc2VuZF9lcnJvcl9ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggc2V2ZXJpdHksIHU4IGNvbXBvbmVudCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgY291bnRlciA9IHswfTsKJiM0MzsJdTggZHJtX3NldmVyaXR5LCBkcm1fY29tcG9uZW50OwomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWNvdW50ZXIuY29tbW9uLnNldmVyaXR5ID0gc2V2ZXJpdHk7CiYjNDM7CWNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDsKJiM0MzsKJiM0MzsJcmV0ID0gZ2V0X2NvdW50ZXIoeGUsICZhbXA7Y291bnRlciwgJmFtcDt2YWx1ZSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRybV9zZXZlcml0eSA9IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkoc2V2ZXJpdHkpOwomIzQzOwlkcm1fY29tcG9uZW50ID0geGVfdG9fZHJtX3Jhc19jb21wb25lbnQoY29tcG9uZW50KTsKJiM0MzsKJiM0MzsJeGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHU4IGhhbmRsZV9jb3JlX2NvbXB1dGVfZXJyb3JzKHN0cnVjdCB4ZV9yYXNfZXJyb3JfYXJyYXkgKmFycikKIHsKIAlzdHJ1Y3QgeGVfcmFzX2NvbXB1dGVfZXJyb3IgKmVycm9yX2luZm8gPSAodm9pZCAqKWFyci0mZ3Q7ZGV0YWlsczsKQEAgLTMxMiw4ICYjNDM7MzY0LDEwIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsCiAJc3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopJmFtcDtyZXNwb25zZS0mZ3Q7ZGF0YTsKIAlzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICplcnJvcnMgPSBwZW5kaW5nLSZndDtjb3VudGVyczsKIAl1MzIgaWQsIG5jb3VudGVycyA9IHBlbmRpbmctJmd0O25jb3VudGVyczsKJiM0MzsJdTggc2VudCA9IDA7CiAKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHJlc3BvbnNlLSZndDtkYXRhKSAmbHQ7IHNpemVvZigqcGVuZGluZykpOwomIzQzOwlCVUlMRF9CVUdfT04oQklUU19QRVJfVFlQRShzZW50KSAmbHQ7IFhFX1JBU19DT01QX01BWCk7CiAJeGVfZGV2aWNlX2Fzc2VydF9tZW1fYWNjZXNzKHhlKTsKIAogCWlmICghbmNvdW50ZXJzIHx8IG5jb3VudGVycyAmZ3Q7IFhFX1JBU19OVU1fQ09VTlRFUlMpCkBAIC0zMjksNiAmIzQzOzM4MywxMyBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAogCiAJCXhlX3dhcm4oeGUsICYjMzQ7W1JBU106ICVzICVzIGRldGVjdGVkXG4mIzM0OywKIAkJCWNvbXBfdG9fc3RyKGNvbXBvbmVudCksIHNldl90b19zdHIoc2V2ZXJpdHkpKTsKJiM0MzsKJiM0MzsJCS8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovCiYjNDM7CQlpZiAoc2VudCAmYW1wOyBCSVQoY29tcG9uZW50KSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXNlbnQgfD0gQklUKGNvbXBvbmVudCk7CiYjNDM7CiYjNDM7CQlyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7CiAJfQogfQogCkBAIC0zODIsNiAmIzQzOzQ0Myw3IEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGZpbmFsX2FjdGlvbjsKIAl1MzIgcmVtYWluaW5nID0gWEVfU1lTQ1RSTF9GTE9PRF9MSU1JVDsKIAlzdHJ1Y3QgeGVfcmFzX2dldF9zb2NfZXJyb3IgcmVzcG9uc2U7CiYjNDM7CXU4IHNlbnQgPSAwOwogCXNpemVfdCBybGVuOwogCWludCByZXQ7CiAKQEAgLTQyNSw2ICYjNDM7NDg3LDEyIEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpCiAJCQl4ZV9pbmZvKHhlLCAmIzM0O1tSQVNdOiAlcyAlcyBkZXRlY3RlZFxuJiMzNDssIGNvbXBfdG9fc3RyKGNvbXBvbmVudCksCiAJCQkJc2V2X3RvX3N0cihzZXZlcml0eSkpOwogCiYjNDM7CQkJLyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi8KJiM0MzsJCQlpZiAoIShzZW50ICZhbXA7IEJJVChjb21wb25lbnQpKSkgewomIzQzOwkJCQlzZW50IHw9IEJJVChjb21wb25lbnQpOwomIzQzOwkJCQlyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7CiYjNDM7CQkJfQomIzQzOwogCQkJc3dpdGNoIChjb21wb25lbnQpIHsKIAkJCWNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOgogCQkJCWFjdGlvbiA9IGhhbmRsZV9jb3JlX2NvbXB1dGVfZXJyb3JzKGFycik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmgKaW5kZXggMGJlZWRlM2RkYzRlNGIuLmVlMmNhYTBlZGM2ZjkyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fcmFzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oCkBAIC04MCw5ICYjNDM7ODAsMTQgQEAgc3RydWN0IGRybV9kZXZpY2U7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX1JBUykKIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSk7CiB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpOwomIzQzO2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwKJiM0MzsJCQkgICB1MzIgdmFsdWUpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKSB7IHJldHVybiAwOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9CiYjNDM7c3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsCiYjNDM7CQkJCQkgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKQomIzQzO3sgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmgKaW5kZXggMjE4YTNlZTg2ODA1MjcuLmVhYjgyMzFhYTg3Y2JmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaApAQCAtMzgsMTMgJiM0MzszOCwyOCBAQCBlbnVtIHsKIAlEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKQogfTsKIAomIzQzO2VudW0gewomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfREVWSUNFX05BTUUgPSAxLAomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfTkFNRSwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX0lELAomIzQzOwlEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwKJiM0MzsJRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX1ZBTFVFLAomIzQzOwomIzQzOwlfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVgsCiYjNDM7CURSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTUFYIC0gMSkKJiM0Mzt9OwomIzQzOwogZW51bSB7CiAJRFJNX1JBU19DTURfTElTVF9OT0RFUyA9IDEsCiAJRFJNX1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIsCiAJRFJNX1JBU19DTURfQ0xFQVJfRVJST1JfQ09VTlRFUiwKJiM0MzsJRFJNX1JBU19DTURfRVJST1JfRVZFTlQsCiAKIAlfX0RSTV9SQVNfQ01EX01BWCwKIAlEUk1fUkFTX0NNRF9NQVggPSAoX19EUk1fUkFTX0NNRF9NQVggLSAxKQogfTsKIAomIzQzOyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlQJJiMzNDtlcnJvci1yZXBvcnQmIzM0OwomIzQzOwogI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc5CgkJCQkJCQlvdXRwdXQ6IDgyCgkJCQkJCQl0aG91Z2h0czogMTExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBOZXRsaW5rIEVycm9yIEV2ZW50IFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBtdWx0aWNhc3QgZXZlbnQsIGBlcnJvci1ldmVudGAsIHdpdGhpbiB0aGUgYGRybV9yYXNgIGZhbWlseS4gIFRoZSBnb2FsIGlzIHRvIGluZm9ybSB1c2Vyc3BhY2UgYWJvdXQgaGFyZHdhcmUgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGB4ZWAgZHJpdmVyLiBXZSYjMzk7cmUgYWRkaW5nIGEgZnVuY3Rpb24gYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIHRvIHNlbmQgdGhpcyBldmVudC4gVGhlIGB4ZWAgZHJpdmVyIGlzIHNldCB1cCB0byBjYWxsIGByYXNfc2VuZF9lcnJvcl9ldmVudGAgd2hlbmV2ZXIgYSBSQVMgZXJyb3IsIG9yIGEgdGhyZXNob2xkIGJlaW5nIGNyb3NzZWQsIGlzIGRldGVjdGVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBkaXJlY3Rpb24gb2YgZGF0YSBmbG93LiAgVGhpcyBpcyBhbiBldmVudCAqdG8qIHVzZXJzcGFjZSwgbm90IGEgY29tbWFuZCAqZnJvbSogdXNlcnNwYWNlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmNgIHRvIGluY2x1ZGUgdGhlIGBkcm1fcmFzX25sX2Vycm9yX2V2ZW50YCBmdW5jdGlvbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igc2VuZGluZyB0aGUgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZS4gQWxzbywgYGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY2AgaXMgYmVpbmcgYWx0ZXJlZCB0byBjYWxsIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZW5ldmVyIGEgaGFyZHdhcmUgZXJyb3IgaXMgZGV0ZWN0ZWQuCgpUaGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIGlmIHRoZXJlIGFyZSBhbnkgbmV3ICppbnB1dHMqIGZyb20gdXNlcnNwYWNlIGJlaW5nIGludHJvZHVjZWQuICBUaGUgbmV0bGluayBldmVudCBpcyBzaW1wbHkgc2VudCB0byB1c2Vyc3BhY2Ug4oCTIGVzc2VudGlhbGx5IGEgbm90aWZpY2F0aW9uIG1lY2hhbmlzbS4gIFVzZXJzcGFjZSBjYW4gc3Vic2NyaWJlIHRvIHRoZSBtdWx0aWNhc3QgZ3JvdXAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgbmV0bGluayBmdW5jdGlvbmFsaXR5LiBUaGUgYWN0dWFsIGV2ZW50IGl0c2VsZiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGtlcm5lbCBpbiByZXNwb25zZSB0byBhIGhhcmR3YXJlIGVycm9yIGNvbmRpdGlvbi4gVGhlIGBkcm1fcmFzLnlhbWxgIGZpbGUgY29uZmlybXMgdGhpczogaXQgZGVzY3JpYmVzIHRoZSBgZXJyb3ItZXZlbnRgIGFzIGEgcmVwb3J0aW5nIG1lY2hhbmlzbSB0aGF0IGluY2x1ZGVzIGF0dHJpYnV0ZXMgbGlrZSBkZXZpY2UgbmFtZSwgbm9kZSBJRCwgYW5kIGVycm9yIGluZm9ybWF0aW9uLgoKSSYjMzk7bSBjaGVja2luZyB0aGUgZW51bWVyYXRpb24gZm9yIGBEUk1fUkFTX0NNRF9FUlJPUl9FVkVOVGAsIGJ1dCBpdCYjMzk7cyBhbiBldmVudCwgbm90IGEgY29tbWFuZC4gVGhlcmUgYXJlIG5vIG5ldyBvcGVyYXRpb25zIGRlZmluZWQgd2l0aGluIGBkcm1fcmFzX25sLmNgIHRoYXQgd291bGQgcHJvdmlkZSBhIHdheSBmb3IgdXNlcnNwYWNlIHRvIHRyaWdnZXIgdGhpcyBldmVudC4gRXhhbWluaW5nIHRoZSBgZHJtX3Jhc19ubF9vcHNgIGFuZCB0aGUgYGRybV9yYXNfbmxfbWNncnBzYCBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggb25seSBhZGRzIGEgbmV3IG11bHRpY2FzdCBncm91cCBhbmQgYW4gZXZlbnQuIEl0IGRvZXNuJiMzOTt0IGVuYWJsZSB1c2Vyc3BhY2UgdG8gc2VuZCBgRFJNX1JBU19DTURfRVJST1JfRVZFTlRgLiBUaGUgcGF0Y2ggY3JlYXRlcyB0aGUgbmV3IG11bHRpY2FzdCBncm91cCBgZXJyb3ItcmVwb3J0YC4KCkNydWNpYWxseSwgY2FuIFN5emthbGxlciwgb3IgYW55IG90aGVyIGZ1enplciwgdHJpZ2dlciB0aGlzIGV2ZW50PyBOb3QgZGlyZWN0bHksIHNpbmNlIHRoZSBldmVudCByZWxpZXMgb24gaGFyZHdhcmUgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGB4ZWAgZHJpdmVyLCBhbmQgaXQmIzM5O3Mgc2ltcGx5IGluZm9ybWluZyB1c2Vyc3BhY2Ugb2Ygc29tZXRoaW5nIHRoYXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuIFRoZXJlJiMzOTtzIG5vIG5ldyBpb2N0bCBvciBuZXRsaW5rIGNvbW1hbmQgdG8gYWN0aXZlbHkgKnRyaWdnZXIqIHRoaXMgcmVwb3J0aW5nLiBUaGUgYWRkZWQgY29kZSBpcyBqdXN0IHJlc3BvbmRpbmcgdG8gZXhpc3RpbmcgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGhhcmR3YXJlIGl0c2VsZi4KCkkmIzM5O20gbm93IHNhdGlzZmllZC4gVGhlcmUmIzM5O3Mgbm8gbmV3IGF0dGFjayBzdXJmYWNlIGNyZWF0ZWQgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBuZXcgaW5wdXQgZnJvbSB1c2Vyc3BhY2UgdG8gZnV6ei4gVGhlIG9ubHkgdXNlcnNwYWNlIGludGVyYWN0aW9uIGlzIHN1YnNjcmliaW5nIHRvIHRoZSBtdWx0aWNhc3QgZ3JvdXAsIGFuZCB0aGF0JiMzOTtzIGhhbmRsZWQgYnkgZ2VuZXJpYyBuZXRsaW5rIGNvZGUsIHNvIGl0IGlzIHNhZmUuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgeGVfZHJtX3Jhc19ldmVudGAgaXMgaW5kZWVkIGNhbGxlZCBmcm9tIGByYXNfc2VuZF9lcnJvcl9ldmVudGAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkYCBhbmQgYHhlX3Jhc19wcm9jZXNzX2Vycm9yc2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaGFyZHdhcmUgZXJyb3IgaGFuZGxpbmcgcGF0aHMuICBObyBuZXcgaW5wdXQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuIFRoZSBwYXRjaCBqdXN0IGFkZHMgYSBrZXJuZWwtdG8tdXNlcnNwYWNlIG11bHRpY2FzdCBldmVudCB0byByZXBvcnQgUkFTIGVycm9ycywgd2l0aCBubyBhZGRlZCBhdHRhY2sgc3VyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA3OjA4OjE5LjU5ODI1NzYzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzIwMzQwNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDc6MDg6MTkuNTk4MjY0ODEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA0MjA1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MDE2MTdjNDBiMTVjYzI1YzJlYWVkMGE3Y2RkZWUyYWJmMzQwYmM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcXG5pbmRleCA4M2MyMTg1M2I3NGI2MC4uNDA2ZTRjNDliYWMxZmQgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxcbkBAIC01Niw2ICs1Niw3IEBAIFVzZXIgc3BhY2UgdG9vbHMgY2FuOlxcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cXG4gKiBDbGVhciBzcGVjaWZpYyBlcnJvciBjb3VudGVycyB3aXRoIHRoZSBgYGNsZWFyLWVycm9yLWNvdW50ZXJgYCBjb21tYW5kLCB1c2luZyBib3RoXFxuICAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLlxcbisqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXFxuIFxcbiBZQU1MLWJhc2VkIEludGVyZmFjZVxcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxcbkBAIC0xMTEsMyArMTEyLDIzIEBAIEV4YW1wbGU6IENsZWFyIGFuIGVycm9yIGNvdW50ZXIgZm9yIGEgZ2l2ZW4gbm9kZVxcbiBcXG4gICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAne1xcXCJub2RlLWlkXFxcIjowLCBcXFwiZXJyb3ItaWRcXFwiOjF9J1xcbiAgICAgTm9uZVxcbitcXG4rRXhhbXBsZTogU3Vic2NyaWJlIHRvIGBgZXJyb3ItcmVwb3J0YGAgbXVsdGljYXN0IGdyb3VwXFxuK1xcbisuLiBjb2RlLWJsb2NrOjogYmFzaFxcbitcXG4rICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1vdXRwdXQtanNvbiAtLXN1YnNjcmliZSBlcnJvci1yZXBvcnRcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBqc29uXFxuK1xcbisgICAge1xcbisgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcImVycm9yLWV2ZW50XFxcIixcXG4rICAgICAgICBcXFwibXNnXFxcIjoge1xcbisgICAgICAgICAgICBcXFwiZGV2aWNlLW5hbWVcXFwiOiBcXFwiMDAwMDowMzowMC4wXFxcIixcXG4rICAgICAgICAgICAgXFxcIm5vZGUtaWRcXFwiOiAxLFxcbisgICAgICAgICAgICBcXFwibm9kZS1uYW1lXFxcIjogXFxcInVuY29ycmVjdGFibGUtZXJyb3JzXFxcIixcXG4rICAgICAgICAgICAgXFxcImVycm9yLWlkXFxcIjogMSxcXG4rICAgICAgICAgICAgXFxcImVycm9yLW5hbWVcXFwiOiBcXFwiZXJyb3JfbmFtZTFcXFwiLFxcbisgICAgICAgICAgICBcXFwiZXJyb3ItdmFsdWVcXFwiOiAxXFxuKyAgICAgICAgfVxcbisgICAgfVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxcbmluZGV4IGUxMTMwNTZmOGMwMTZjLi44YWVkM2Q0NTE1ZTVhZiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxcbkBAIC02OSw2ICs2OSwzMyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxcbiAgICAgICAgIHR5cGU6IHUzMlxcbiAgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIGVycm9yIGNvdW50ZXIuXFxuKyAgLVxcbisgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcXG4rICAgIGF0dHJpYnV0ZXM6XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxcbisgICAgICAgIHR5cGU6IHN0cmluZ1xcbisgICAgICAgIGRvYzogRGV2aWNlIChQQ0kgQkRGLCBVVUlEKSB0aGF0IHJlcG9ydGVkIHRoZSBlcnJvci5cXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5vZGUtaWRcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogbm9kZS1uYW1lXFxuKyAgICAgICAgdHlwZTogc3RyaW5nXFxuKyAgICAgICAgZG9jOiBOYW1lIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZXJyb3ItaWRcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBlcnJvciBjb3VudGVyLlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZXJyb3ItbmFtZVxcbisgICAgICAgIHR5cGU6IHN0cmluZ1xcbisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBlcnJvci12YWx1ZVxcbisgICAgICAgIHR5cGU6IHUzMlxcbisgICAgICAgIGRvYzogQ3VycmVudCB2YWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlci5cXG4gXFxuIG9wZXJhdGlvbnM6XFxuICAgbGlzdDpcXG5AQCAtMTI0LDMgKzE1MSwyNCBAQCBvcGVyYXRpb25zOlxcbiAgICAgICBkbzpcXG4gICAgICAgICByZXF1ZXN0OlxcbiAgICAgICAgICAgYXR0cmlidXRlczogKmlkLWF0dHJzXFxuKyAgICAtXFxuKyAgICAgIG5hbWU6IGVycm9yLWV2ZW50XFxuKyAgICAgIGRvYzogXFx1MDAzZS1cXG4rICAgICAgICAgICBSZXBvcnQgYW4gZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlLlxcbisgICAgICAgICAgIFRoZSBldmVudCBpbmNsdWRlcyB0aGUgZGV2aWNlLCBub2RlIGFuZCBlcnJvciBpbmZvcm1hdGlvblxcbisgICAgICAgICAgIG9mIHRoZSBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGVycm9yLWV2ZW50LWF0dHJzXFxuKyAgICAgIG1jZ3JwOiBlcnJvci1yZXBvcnRcXG4rICAgICAgZXZlbnQ6XFxuKyAgICAgICAgYXR0cmlidXRlczpcXG4rICAgICAgICAgIC0gZGV2aWNlLW5hbWVcXG4rICAgICAgICAgIC0gbm9kZS1pZFxcbisgICAgICAgICAgLSBub2RlLW5hbWVcXG4rICAgICAgICAgIC0gZXJyb3ItaWRcXG4rICAgICAgICAgIC0gZXJyb3ItbmFtZVxcbisgICAgICAgICAgLSBlcnJvci12YWx1ZVxcbitcXG4rbWNhc3QtZ3JvdXBzOlxcbisgIGxpc3Q6XFxuKyAgICAtXFxuKyAgICAgIG5hbWU6IGVycm9yLXJlcG9ydFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY1xcbmluZGV4IGQ2ZWFiMjlhMTM5NGNhLi4zOTE1NWZiNTE0ZGUzYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY1xcbkBAIC00MSw2ICs0MSwxMSBAQFxcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxcbiAgKiAgICBDbGVhcnMgc3BlY2lmaWMgZXJyb3IgY291bnRlciBvZiBhIG5vZGUgaWYgc3VwcG9ydGVkLlxcbiAgKlxcbisgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50c1xcbisgKlxcbisgKiA1LiBFUlJPUl9FVkVOVDogUmVwb3J0IGFuIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZS4gVGhlIGV2ZW50IGNvbnRhaW5zIGRldmljZSwgbm9kZVxcbisgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LlxcbisgKlxcbiAgKiBOb2RlIHJlZ2lzdHJhdGlvbjpcXG4gICpcXG4gICogLSBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoKTogUmVnaXN0ZXJzIGEgbmV3IG5vZGUgYW5kIGFzc2lnbnNcXG5AQCAtMTg2LDYgKzE5MSwzNCBAQCBzdGF0aWMgaW50IG1zZ19yZXBseV92YWx1ZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCB1MzIgZXJyb3JfaWQsXFxuIFxcdFxcdFxcdCAgIHZhbHVlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0RFVklDRV9OQU1FLCBub2RlLVxcdTAwM2VkZXZpY2VfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX0lELCBub2RlLVxcdTAwM2VpZCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsIG5vZGUtXFx1MDAzZW5vZGVfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9JRCwgZXJyb3JfaWQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSwgZXJyb3JfbmFtZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXR1cm4gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfVkFMVUUsIHZhbHVlKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxcbiBcXHRcXHRcXHQgICAgdTMyIGVycm9yX2lkKVxcbiB7XFxuQEAgLTIyMiw2ICsyNTUsNzQgQEAgc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxcbiBcXHRyZXR1cm4gZ2VubG1zZ19yZXBseShtc2csIGluZm8pO1xcbiB9XFxuIFxcbisvKipcXG4rICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50XFxuKyAqIEBub2RlOiBOb2RlIHN0cnVjdHVyZVxcbisgKiBAZXJyb3JfaWQ6IElEIG9mIHRoZSBlcnJvclxcbisgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3JcXG4rICogQHZhbHVlOiBWYWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlclxcbisgKlxcbisgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLlxcbisgKlxcbisgKiBDb250ZXh0OiBQcm9jZXNzIGNvbnRleHQgb25seS4gVXNlcyAlR0ZQX0tFUk5FTCBhbmQgbXVsdGljYXN0cyB0byBhbGxcXG4rICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVyc1xcbisgKiAgICAgICAgICBvciBvdGhlciBhdG9taWMgY29udGV4dCBtdXN0IGRlZmVyIGV2ZW50LlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSxcXG4rXFx0XFx0XFx0ICAgdTMyIHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4rXFx0c3RydWN0IG5sYXR0ciAqaGRyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKCFub2RlIHx8ICFlcnJvcl9uYW1lKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdC8qIENoZWNrIHRoZSBub2RlIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXFxuK1xcdGlmICh4YV9sb2FkKFxcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVxcdTAwM2VpZCkgIT0gbm9kZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuK1xcbitcXHQvKiBDdXJyZW50bHkgb25seSBFcnJvciBDb3VudGVyIGV2ZW50cyBhcmUgc3VwcG9ydGVkICovXFxuK1xcdGlmIChub2RlLVxcdTAwM2V0eXBlICE9IERSTV9SQVNfTk9ERV9UWVBFX0VSUk9SX0NPVU5URVIpXFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFxuK1xcdC8qIENoZWNrIHRoZSBlcnJvciBJRCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlICovXFxuK1xcdGlmIChlcnJvcl9pZCBcXHUwMDNjIG5vZGUtXFx1MDAzZWVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QgfHxcXG4rXFx0ICAgIGVycm9yX2lkIFxcdTAwM2Ugbm9kZS1cXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGdlbmxfaW5mb19pbml0X250ZihcXHUwMDI2aW5mbywgXFx1MDAyNmRybV9yYXNfbmxfZmFtaWx5LCBEUk1fUkFTX0NNRF9FUlJPUl9FVkVOVCk7XFxuK1xcbitcXHRtc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghbXNnKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGhkciA9IGdlbmxtc2dfaXB1dChtc2csIFxcdTAwMjZpbmZvKTtcXG4rXFx0aWYgKCFoZHIpIHtcXG4rXFx0XFx0cmV0ID0gLUVNU0dTSVpFO1xcbitcXHRcXHRnb3RvIGZyZWVfbXNnO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0Z290byBjYW5jZWxfbXNnO1xcbitcXG4rXFx0Z2VubG1zZ19lbmQobXNnLCBoZHIpO1xcbitcXHRnZW5sbXNnX211bHRpY2FzdF9hbGxucyhcXHUwMDI2ZHJtX3Jhc19ubF9mYW1pbHksIG1zZywgMCwgRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK1xcbitjYW5jZWxfbXNnOlxcbitcXHRnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7XFxuK2ZyZWVfbXNnOlxcbitcXHRubG1zZ19mcmVlKG1zZyk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rRVhQT1JUX1NZTUJPTChkcm1fcmFzX25sX2Vycm9yX2V2ZW50KTtcXG4rXFxuIC8qKlxcbiAgKiBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdCgpIC0gRHVtcCBhbGwgRXJyb3IgQ291bnRlcnNcXG4gICogQHNrYjogTmV0bGluayBtZXNzYWdlIGJ1ZmZlclxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xcbmluZGV4IGRlYTFjMWIyNDk0ZTgxLi45ZDMxMjNjYzlmOWNhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xcbkBAIC01OCw2ICs1OCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRybV9yYXNfbmxfb3BzW10gPSB7XFxuIFxcdH0sXFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XFxuK1xcdFtEUk1fUkFTX05MR1JQX0VSUk9SX1JFUE9SVF0gPSB7IFxcXCJlcnJvci1yZXBvcnRcXFwiLCB9LFxcbit9O1xcbitcXG4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4gXFx0Lm5hbWVcXHRcXHQ9IERSTV9SQVNfRkFNSUxZX05BTUUsXFxuIFxcdC52ZXJzaW9uXFx0PSBEUk1fUkFTX0ZBTUlMWV9WRVJTSU9OLFxcbkBAIC02Niw0ICs3MCw2IEBAIHN0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuIFxcdC5tb2R1bGVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiBcXHQuc3BsaXRfb3BzXFx0PSBkcm1fcmFzX25sX29wcyxcXG4gXFx0Lm5fc3BsaXRfb3BzXFx0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcXG4rXFx0Lm1jZ3Jwc1xcdFxcdD0gZHJtX3Jhc19ubF9tY2dycHMsXFxuK1xcdC5uX21jZ3Jwc1xcdD0gQVJSQVlfU0laRShkcm1fcmFzX25sX21jZ3JwcyksXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXFxuaW5kZXggYTM5ODY0MzU3MmE1YTAuLjAzZWMyNzVhY2E5MjkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmhcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXFxuQEAgLTIxLDYgKzIxLDEwIEBAIGludCBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBpbnQgZHJtX3Jhc19ubF9jbGVhcl9lcnJvcl9jb3VudGVyX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuIFxcbitlbnVtIHtcXG4rXFx0RFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsXFxuK307XFxuK1xcbiBleHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5O1xcbiBcXG4gI2VuZGlmIC8qIF9MSU5VWF9EUk1fUkFTX0dFTl9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXFxuaW5kZXggNzkzN2Q4YmEwZWQ5Y2UuLjVjYmZkMTJkNjFmNGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXFxuQEAgLTE4NSw2ICsxODUsMzcgQEAgc3RhdGljIGludCByZWdpc3Rlcl9ub2RlcyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIHhlX2RybV9yYXNfZXZlbnQoKSAtIFJlcG9ydCBkcm0tcmFzIGVycm9yIGV2ZW50IHRvIHVzZXJzcGFjZVxcbisgKiBAeGU6IHhlIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXFx1MDAyNmVudW0gZHJtX3hlX3Jhc19lcnJvcl9jb21wb25lbnQpXFxuKyAqIEBzZXZlcml0eTogZXJyb3Igc2V2ZXJpdHkgKHNlZSBcXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX3NldmVyaXR5KVxcbisgKiBAdmFsdWU6IHZhbHVlIG9mIGVycm9yIGNvdW50ZXJcXG4rICpcXG4rICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZS5cXG4rICovXFxuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKVxcbit7XFxuK1xcdHN0cnVjdCB4ZV9kcm1fcmFzICpyYXMgPSBcXHUwMDI2eGUtXFx1MDAzZXJhcztcXG4rXFx0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cXHUwMDNlaW5mb1tzZXZlcml0eV07XFxuK1xcdHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHQvKiBFdmVudCBpcyBzdXBwb3J0ZWQgb25seSBpZiBkcm0tcmFzIGlzIGVuYWJsZWQgKi9cXG4rXFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5oYXNfZHJtX3JhcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bm9kZSA9IFxcdTAwMjZyYXMtXFx1MDAzZW5vZGVbc2V2ZXJpdHldO1xcbitcXG4rXFx0aWYgKCFpbmZvIHx8ICFpbmZvW2NvbXBvbmVudF0ubmFtZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cmV0ID0gZHJtX3Jhc19ubF9lcnJvcl9ldmVudChub2RlLCBjb21wb25lbnQsIGluZm9bY29tcG9uZW50XS5uYW1lLCB2YWx1ZSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXFx1MDAyNnhlLVxcdTAwM2Vkcm0sIFxcXCJkcm0tcmFzIGVycm9yLWV2ZW50IGZhaWxlZDogJWQgZm9yICVzICVzXFxcXG5cXFwiLCByZXQsXFxuK1xcdFxcdFxcdFxcdCAgICBpbmZvW2NvbXBvbmVudF0ubmFtZSwgZXJyb3Jfc2V2ZXJpdHlbc2V2ZXJpdHldKTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHhlX2RybV9yYXNfaW5pdCgpIC0gSW5pdGlhbGl6ZSBEUk0gUkFTXFxuICAqIEB4ZTogeGUgZGV2aWNlIGluc3RhbmNlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmggYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oXFxuaW5kZXggMzY1YzcwZTkzZTgyZmQuLmFkZDk2YmYxYTdhYmQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5oXFxuQEAgLTUsMTEgKzUsMTQgQEBcXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xcbiAjZGVmaW5lIF9YRV9EUk1fUkFTX0hfXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4rXFxuIHN0cnVjdCB4ZV9kZXZpY2U7XFxuIFxcbiAjZGVmaW5lIGZvcl9lYWNoX2Vycm9yX3NldmVyaXR5KGkpXFx0XFxcXFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFJNX1hFX1JBU19FUlJfU0VWX01BWDsgaSsrKVxcbiBcXG4gaW50IHhlX2RybV9yYXNfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKTtcXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcXG5pbmRleCBhMzFlMDZiOGFhNjdhYy4uZDQzZjYxNGRlNzIzNzAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXFxuQEAgLTkwLDYgKzkwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBncHVfaGVhbHRoX3N0YXRlc1tdID0ge1xcbiB9O1xcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcXG4gXFxuK3N0YXRpYyBpbnQgZ2V0X2NvdW50ZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgKmNvdW50ZXIsIHUzMiAqdmFsdWUpO1xcbitcXG4gc3RhdGljIHU4IGRybV90b194ZV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpXFxuIHtcXG4gXFx0c3dpdGNoIChzZXZlcml0eSkge1xcbkBAIC0xMDIsNiArMTA0LDE4IEBAIHN0YXRpYyB1OCBkcm1fdG9feGVfcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB1OCB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHU4IHNldmVyaXR5KVxcbit7XFxuK1xcdHN3aXRjaCAoc2V2ZXJpdHkpIHtcXG4rXFx0Y2FzZSBYRV9SQVNfU0VWX0NPUlJFQ1RBQkxFOlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX0NPUlJFQ1RBQkxFO1xcbitcXHRjYXNlIFhFX1JBU19TRVZfVU5DT1JSRUNUQUJMRTpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX1NFVl9VTkNPUlJFQ1RBQkxFO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX01BWDtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxcbiB7XFxuIFxcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuQEAgLTEyMCw2ICsxMzQsMjQgQEAgc3RhdGljIHU4IGRybV90b194ZV9yYXNfY29tcG9uZW50KHU4IGNvbXBvbmVudClcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgdTggeGVfdG9fZHJtX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxcbit7XFxuK1xcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuK1xcdGNhc2UgWEVfUkFTX0NPTVBfREVWSUNFX01FTU9SWTpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfREVWSUNFX01FTU9SWTtcXG4rXFx0Y2FzZSBYRV9SQVNfQ09NUF9DT1JFX0NPTVBVVEU6XFxuK1xcdFxcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0NPUkVfQ09NUFVURTtcXG4rXFx0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9QQ0lFO1xcbitcXHRjYXNlIFhFX1JBU19DT01QX0ZBQlJJQzpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfRkFCUklDO1xcbitcXHRjYXNlIFhFX1JBU19DT01QX1NPQ19JTlRFUk5BTDpcXG4rXFx0XFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfU09DX0lOVEVSTkFMO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9NQVg7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCByYXNfc3RhdHVzX3RvX2Vycm5vKHUzMiBzdGF0dXMpXFxuIHtcXG4gXFx0c3dpdGNoIChzdGF0dXMpIHtcXG5AQCAtMjE4LDYgKzI1MCwyNiBAQCBzdGF0aWMgdm9pZCByYXNfdXNwX2Flcl9pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbiBcXHRkZXZfZGJnKFxcdTAwMjZ1c3AtXFx1MDAzZWRldiwgXFxcIlVuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxcXG5cXFwiKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcmFzX3NlbmRfZXJyb3JfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IHNldmVyaXR5LCB1OCBjb21wb25lbnQpXFxuK3tcXG4rXFx0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBjb3VudGVyID0gezB9O1xcbitcXHR1OCBkcm1fc2V2ZXJpdHksIGRybV9jb21wb25lbnQ7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGNvdW50ZXIuY29tbW9uLnNldmVyaXR5ID0gc2V2ZXJpdHk7XFxuK1xcdGNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcXG4rXFxuK1xcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcXHUwMDI2Y291bnRlciwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZHJtX3NldmVyaXR5ID0geGVfdG9fZHJtX3Jhc19zZXZlcml0eShzZXZlcml0eSk7XFxuK1xcdGRybV9jb21wb25lbnQgPSB4ZV90b19kcm1fcmFzX2NvbXBvbmVudChjb21wb25lbnQpO1xcbitcXG4rXFx0eGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXFxuIHtcXG4gXFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXFx1MDAzZWRldGFpbHM7XFxuQEAgLTMxMiw4ICszNjQsMTAgQEAgdm9pZCB4ZV9yYXNfY291bnRlcl90aHJlc2hvbGRfY3Jvc3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG4gXFx0c3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCAqcGVuZGluZyA9ICh2b2lkICopXFx1MDAyNnJlc3BvbnNlLVxcdTAwM2VkYXRhO1xcbiBcXHRzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICplcnJvcnMgPSBwZW5kaW5nLVxcdTAwM2Vjb3VudGVycztcXG4gXFx0dTMyIGlkLCBuY291bnRlcnMgPSBwZW5kaW5nLVxcdTAwM2VuY291bnRlcnM7XFxuK1xcdHU4IHNlbnQgPSAwO1xcbiBcXG4gXFx0QlVJTERfQlVHX09OKHNpemVvZihyZXNwb25zZS1cXHUwMDNlZGF0YSkgXFx1MDAzYyBzaXplb2YoKnBlbmRpbmcpKTtcXG4rXFx0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXFx1MDAzYyBYRV9SQVNfQ09NUF9NQVgpO1xcbiBcXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xcbiBcXG4gXFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFxcdTAwM2UgWEVfUkFTX05VTV9DT1VOVEVSUylcXG5AQCAtMzI5LDYgKzM4MywxMyBAQCB2b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxcbiBcXG4gXFx0XFx0eGVfd2Fybih4ZSwgXFxcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0Y29tcF90b19zdHIoY29tcG9uZW50KSwgc2V2X3RvX3N0cihzZXZlcml0eSkpO1xcbitcXG4rXFx0XFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cXG4rXFx0XFx0aWYgKHNlbnQgXFx1MDAyNiBCSVQoY29tcG9uZW50KSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHNlbnQgfD0gQklUKGNvbXBvbmVudCk7XFxuK1xcbitcXHRcXHRyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMzgyLDYgKzQ0Myw3IEBAIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuIFxcdGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBmaW5hbF9hY3Rpb247XFxuIFxcdHUzMiByZW1haW5pbmcgPSBYRV9TWVNDVFJMX0ZMT09EX0xJTUlUO1xcbiBcXHRzdHJ1Y3QgeGVfcmFzX2dldF9zb2NfZXJyb3IgcmVzcG9uc2U7XFxuK1xcdHU4IHNlbnQgPSAwO1xcbiBcXHRzaXplX3QgcmxlbjtcXG4gXFx0aW50IHJldDtcXG4gXFxuQEAgLTQyNSw2ICs0ODcsMTIgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4gXFx0XFx0XFx0eGVfaW5mbyh4ZSwgXFxcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcXFxuXFxcIiwgY29tcF90b19zdHIoY29tcG9uZW50KSxcXG4gXFx0XFx0XFx0XFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xcbiBcXG4rXFx0XFx0XFx0LyogU2VuZCBldmVudCBvbmNlIHBlciBjb21wb25lbnQgKi9cXG4rXFx0XFx0XFx0aWYgKCEoc2VudCBcXHUwMDI2IEJJVChjb21wb25lbnQpKSkge1xcbitcXHRcXHRcXHRcXHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xcbitcXHRcXHRcXHRcXHRyYXNfc2VuZF9lcnJvcl9ldmVudCh4ZSwgc2V2ZXJpdHksIGNvbXBvbmVudCk7XFxuK1xcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdHN3aXRjaCAoY29tcG9uZW50KSB7XFxuIFxcdFxcdFxcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxcbiBcXHRcXHRcXHRcXHRhY3Rpb24gPSBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhhcnIpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcXG5pbmRleCAwYmVlZGUzZGRjNGU0Yi4uZWUyY2FhMGVkYzZmOTIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXFxuKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXFxuQEAgLTgwLDkgKzgwLDE0IEBAIHN0cnVjdCBkcm1fZGV2aWNlO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX1JBUylcXG4gaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcXG4gdm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcXG4raW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLCBjb25zdCBjaGFyICplcnJvcl9uYW1lLFxcbitcXHRcXHRcXHQgICB1MzIgdmFsdWUpO1xcbiAjZWxzZVxcbiBzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyByZXR1cm4gMDsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XFxuK3N0YXRpYyBpbmxpbmUgaW50IGRybV9yYXNfbmxfZXJyb3JfZXZlbnQoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSwgdTMyIGVycm9yX2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKVxcbit7IHJldHVybiAwOyB9XFxuICNlbmRpZlxcbiBcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcXG5pbmRleCAyMThhM2VlODY4MDUyNy4uZWFiODIzMWFhODdjYmYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxcbkBAIC0zOCwxMyArMzgsMjggQEAgZW51bSB7XFxuIFxcdERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCAtIDEpXFxuIH07XFxuIFxcbitlbnVtIHtcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0RFVklDRV9OQU1FID0gMSxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX05PREVfSUQsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9JRCxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX0VSUk9SX05BTUUsXFxuK1xcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSxcXG4rXFxuK1xcdF9fRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCxcXG4rXFx0RFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggLSAxKVxcbit9O1xcbitcXG4gZW51bSB7XFxuIFxcdERSTV9SQVNfQ01EX0xJU1RfTk9ERVMgPSAxLFxcbiBcXHREUk1fUkFTX0NNRF9HRVRfRVJST1JfQ09VTlRFUixcXG4gXFx0RFJNX1JBU19DTURfQ0xFQVJfRVJST1JfQ09VTlRFUixcXG4rXFx0RFJNX1JBU19DTURfRVJST1JfRVZFTlQsXFxuIFxcbiBcXHRfX0RSTV9SQVNfQ01EX01BWCxcXG4gXFx0RFJNX1JBU19DTURfTUFYID0gKF9fRFJNX1JBU19DTURfTUFYIC0gMSlcXG4gfTtcXG4gXFxuKyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcXHRcXFwiZXJyb3ItcmVwb3J0XFxcIlxcbitcXG4gI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNzowODoyMC4xNDk2MzY3ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDE2ODkyMzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbmV0bGluayBtdWx0aWNhc3QgZXZlbnQgc2VudCBmcm9tIHRoZSBrZXJuZWwgdG8gdXNlcnNwYWNlIHRvIHJlcG9ydCBoYXJkd2FyZSBSQVMgZXJyb3JzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1c2Vyc3BhY2UtY29udHJvbGxhYmxlIGlucHV0cywgaW9jdGxzLCBvciBuZXRsaW5rIGNvbW1hbmRzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTAxNjE3YzQwYjE1Y2MyNWMyZWFlZDBhN2NkZGVlMmFiZjM0MGJjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA3OjA4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdFxuaW5kZXggODNjMjE4NTNiNzRiNjAuLjQwNmU0YzQ5YmFjMWZkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0XG5AQCAtNTYsNiArNTYsNyBAQCBVc2VyIHNwYWNlIHRvb2xzIGNhbjpcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cbiAqIENsZWFyIHNwZWNpZmljIGVycm9yIGNvdW50ZXJzIHdpdGggdGhlIGBgY2xlYXItZXJyb3ItY291bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGhcbiAgIGBgbm9kZS1pZGBgIGFuZCBgYGVycm9yLWlkYGAgYXMgcGFyYW1ldGVycy5cbisqIFN1YnNjcmliZSB0byB0aGUgYGBlcnJvci1yZXBvcnRgYCBtdWx0aWNhc3QgZ3JvdXAgdG8gcmVjZWl2ZSBgYGVycm9yLWV2ZW50YGAuXG4gXG4gWUFNTC1iYXNlZCBJbnRlcmZhY2VcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQEAgLTExMSwzICsxMTIsMjMgQEAgRXhhbXBsZTogQ2xlYXIgYW4gZXJyb3IgY291bnRlciBmb3IgYSBnaXZlbiBub2RlXG4gXG4gICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1kbyBjbGVhci1lcnJvci1jb3VudGVyIC0tanNvbiAne1wibm9kZS1pZFwiOjAsIFwiZXJyb3ItaWRcIjoxfSdcbiAgICAgTm9uZVxuK1xuK0V4YW1wbGU6IFN1YnNjcmliZSB0byBgYGVycm9yLXJlcG9ydGBgIG11bHRpY2FzdCBncm91cFxuK1xuKy4uIGNvZGUtYmxvY2s6OiBiYXNoXG4rXG4rICAgIHN1ZG8geW5sIC0tZmFtaWx5IGRybV9yYXMgLS1vdXRwdXQtanNvbiAtLXN1YnNjcmliZSBlcnJvci1yZXBvcnRcbitcbisuLiBjb2RlLWJsb2NrOjoganNvblxuK1xuKyAgICB7XG4rICAgICAgICBcIm5hbWVcIjogXCJlcnJvci1ldmVudFwiLFxuKyAgICAgICAgXCJtc2dcIjoge1xuKyAgICAgICAgICAgIFwiZGV2aWNlLW5hbWVcIjogXCIwMDAwOjAzOjAwLjBcIixcbisgICAgICAgICAgICBcIm5vZGUtaWRcIjogMSxcbisgICAgICAgICAgICBcIm5vZGUtbmFtZVwiOiBcInVuY29ycmVjdGFibGUtZXJyb3JzXCIsXG4rICAgICAgICAgICAgXCJlcnJvci1pZFwiOiAxLFxuKyAgICAgICAgICAgIFwiZXJyb3ItbmFtZVwiOiBcImVycm9yX25hbWUxXCIsXG4rICAgICAgICAgICAgXCJlcnJvci12YWx1ZVwiOiAxXG4rICAgICAgICB9XG4rICAgIH1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuaW5kZXggZTExMzA1NmY4YzAxNmMuLjhhZWQzZDQ1MTVlNWFmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbFxuQEAgLTY5LDYgKzY5LDMzIEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZXJyb3ItdmFsdWVcbiAgICAgICAgIHR5cGU6IHUzMlxuICAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSByZXF1ZXN0ZWQgZXJyb3IgY291bnRlci5cbisgIC1cbisgICAgbmFtZTogZXJyb3ItZXZlbnQtYXR0cnNcbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXZpY2UtbmFtZVxuKyAgICAgICAgdHlwZTogc3RyaW5nXG4rICAgICAgICBkb2M6IERldmljZSAoUENJIEJERiwgVVVJRCkgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbm9kZS1pZFxuKyAgICAgICAgdHlwZTogdTMyXG4rICAgICAgICBkb2M6IElEIG9mIHRoZSBub2RlIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yLlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG5vZGUtbmFtZVxuKyAgICAgICAgdHlwZTogc3RyaW5nXG4rICAgICAgICBkb2M6IE5hbWUgb2YgdGhlIG5vZGUgdGhhdCByZXBvcnRlZCB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZXJyb3ItaWRcbisgICAgICAgIHR5cGU6IHUzMlxuKyAgICAgICAgZG9jOiBJRCBvZiB0aGUgZXJyb3IgY291bnRlci5cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBlcnJvci1uYW1lXG4rICAgICAgICB0eXBlOiBzdHJpbmdcbisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZXJyb3ItdmFsdWVcbisgICAgICAgIHR5cGU6IHUzMlxuKyAgICAgICAgZG9jOiBDdXJyZW50IHZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyLlxuIFxuIG9wZXJhdGlvbnM6XG4gICBsaXN0OlxuQEAgLTEyNCwzICsxNTEsMjQgQEAgb3BlcmF0aW9uczpcbiAgICAgICBkbzpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICppZC1hdHRyc1xuKyAgICAtXG4rICAgICAgbmFtZTogZXJyb3ItZXZlbnRcbisgICAgICBkb2M6IFx1MDAzZS1cbisgICAgICAgICAgIFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuXG4rICAgICAgICAgICBUaGUgZXZlbnQgaW5jbHVkZXMgdGhlIGRldmljZSwgbm9kZSBhbmQgZXJyb3IgaW5mb3JtYXRpb25cbisgICAgICAgICAgIG9mIHRoZSBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuXG4rICAgICAgYXR0cmlidXRlLXNldDogZXJyb3ItZXZlbnQtYXR0cnNcbisgICAgICBtY2dycDogZXJyb3ItcmVwb3J0XG4rICAgICAgZXZlbnQ6XG4rICAgICAgICBhdHRyaWJ1dGVzOlxuKyAgICAgICAgICAtIGRldmljZS1uYW1lXG4rICAgICAgICAgIC0gbm9kZS1pZFxuKyAgICAgICAgICAtIG5vZGUtbmFtZVxuKyAgICAgICAgICAtIGVycm9yLWlkXG4rICAgICAgICAgIC0gZXJyb3ItbmFtZVxuKyAgICAgICAgICAtIGVycm9yLXZhbHVlXG4rXG4rbWNhc3QtZ3JvdXBzOlxuKyAgbGlzdDpcbisgICAgLVxuKyAgICAgIG5hbWU6IGVycm9yLXJlcG9ydFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG5pbmRleCBkNmVhYjI5YTEzOTRjYS4uMzkxNTVmYjUxNGRlM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jXG5AQCAtNDEsNiArNDEsMTEgQEBcbiAgKiAgICBVc2Vyc3BhY2UgbXVzdCBwcm92aWRlIE5vZGUgSUQsIEVycm9yIElELlxuICAqICAgIENsZWFycyBzcGVjaWZpYyBlcnJvciBjb3VudGVyIG9mIGEgbm9kZSBpZiBzdXBwb3J0ZWQuXG4gICpcbisgKiA0LiBFUlJPUl9SRVBPUlQ6IFN1YnNjcmliZSB0byB0aGlzIG11bHRpY2FzdCBncm91cCB0byByZWNlaXZlIGVycm9yIGV2ZW50c1xuKyAqXG4rICogNS4gRVJST1JfRVZFTlQ6IFJlcG9ydCBhbiBlcnJvciBldmVudCB0byB1c2Vyc3BhY2UuIFRoZSBldmVudCBjb250YWlucyBkZXZpY2UsIG5vZGVcbisgKiAgICBhbmQgZXJyb3IgaW5mb3JtYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50LlxuKyAqXG4gICogTm9kZSByZWdpc3RyYXRpb246XG4gICpcbiAgKiAtIGRybV9yYXNfbm9kZV9yZWdpc3RlcigpOiBSZWdpc3RlcnMgYSBuZXcgbm9kZSBhbmQgYXNzaWduc1xuQEAgLTE4Niw2ICsxOTEsMzQgQEAgc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLFxuIFx0XHRcdCAgIHZhbHVlKTtcbiB9XG4gXG4rc3RhdGljIGludCBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsXG4rXHRcdFx0XHQgICAgIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSwgbm9kZS1cdTAwM2VkZXZpY2VfbmFtZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCwgbm9kZS1cdTAwM2VpZCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF9zdHJpbmcobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9OQU1FLCBub2RlLVx1MDAzZW5vZGVfbmFtZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsIGVycm9yX2lkKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSBubGFfcHV0X3N0cmluZyhtc2csIERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9OQU1FLCBlcnJvcl9uYW1lKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gbmxhX3B1dF91MzIobXNnLCBEUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfVkFMVUUsIHZhbHVlKTtcbit9XG4rXG4gc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxuIFx0XHRcdCAgICB1MzIgZXJyb3JfaWQpXG4ge1xuQEAgLTIyMiw2ICsyNTUsNzQgQEAgc3RhdGljIGludCBkb2l0X3JlcGx5X3ZhbHVlKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHUzMiBub2RlX2lkLFxuIFx0cmV0dXJuIGdlbmxtc2dfcmVwbHkobXNnLCBpbmZvKTtcbiB9XG4gXG4rLyoqXG4rICogZHJtX3Jhc19ubF9lcnJvcl9ldmVudCgpIC0gUmVwb3J0IGFuIGVycm9yIGV2ZW50XG4rICogQG5vZGU6IE5vZGUgc3RydWN0dXJlXG4rICogQGVycm9yX2lkOiBJRCBvZiB0aGUgZXJyb3JcbisgKiBAZXJyb3JfbmFtZTogTmFtZSBvZiB0aGUgZXJyb3JcbisgKiBAdmFsdWU6IFZhbHVlIG9mIHRoZSBlcnJvciBjb3VudGVyXG4rICpcbisgKiBSZXBvcnQgYW4gZXJyb3ItZXZlbnQgdG8gdXNlcnNwYWNlIHVzaW5nIHRoZSBlcnJvci1yZXBvcnQgbXVsdGljYXN0IGdyb3VwLlxuKyAqXG4rICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IG9ubHkuIFVzZXMgJUdGUF9LRVJORUwgYW5kIG11bHRpY2FzdHMgdG8gYWxsXG4rICogICAgICAgICAgbmV0bnMsIHdoaWNoIGlzIHVuYm91bmRlZCB3b3JrOyBjYWxsZXJzIGluIGludGVycnVwdCBoYW5kbGVyc1xuKyAqICAgICAgICAgIG9yIG90aGVyIGF0b21pYyBjb250ZXh0IG11c3QgZGVmZXIgZXZlbnQuXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbisgKi9cbitpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsIGNvbnN0IGNoYXIgKmVycm9yX25hbWUsXG4rXHRcdFx0ICAgdTMyIHZhbHVlKVxuK3tcbitcdHN0cnVjdCBnZW5sX2luZm8gaW5mbztcbitcdHN0cnVjdCBza19idWZmICptc2c7XG4rXHRzdHJ1Y3QgbmxhdHRyICpoZHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFub2RlIHx8ICFlcnJvcl9uYW1lKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdC8qIENoZWNrIHRoZSBub2RlIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkICovXG4rXHRpZiAoeGFfbG9hZChcdTAwMjZkcm1fcmFzX3hhLCBub2RlLVx1MDAzZWlkKSAhPSBub2RlKVxuK1x0XHRyZXR1cm4gLUVOT0VOVDtcbitcbitcdC8qIEN1cnJlbnRseSBvbmx5IEVycm9yIENvdW50ZXIgZXZlbnRzIGFyZSBzdXBwb3J0ZWQgKi9cbitcdGlmIChub2RlLVx1MDAzZXR5cGUgIT0gRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUilcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0LyogQ2hlY2sgdGhlIGVycm9yIElEIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgKi9cbitcdGlmIChlcnJvcl9pZCBcdTAwM2Mgbm9kZS1cdTAwM2VlcnJvcl9jb3VudGVyX3JhbmdlLmZpcnN0IHx8XG4rXHQgICAgZXJyb3JfaWQgXHUwMDNlIG5vZGUtXHUwMDNlZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGdlbmxfaW5mb19pbml0X250ZihcdTAwMjZpbmZvLCBcdTAwMjZkcm1fcmFzX25sX2ZhbWlseSwgRFJNX1JBU19DTURfRVJST1JfRVZFTlQpO1xuK1xuK1x0bXNnID0gZ2VubG1zZ19uZXcoTkxNU0dfR09PRFNJWkUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFtc2cpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0aGRyID0gZ2VubG1zZ19pcHV0KG1zZywgXHUwMDI2aW5mbyk7XG4rXHRpZiAoIWhkcikge1xuK1x0XHRyZXQgPSAtRU1TR1NJWkU7XG4rXHRcdGdvdG8gZnJlZV9tc2c7XG4rXHR9XG4rXG4rXHRyZXQgPSBtc2dfcHV0X2Vycm9yX2V2ZW50X2F0dHJzKG1zZywgbm9kZSwgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gY2FuY2VsX21zZztcbitcbitcdGdlbmxtc2dfZW5kKG1zZywgaGRyKTtcbitcdGdlbmxtc2dfbXVsdGljYXN0X2FsbG5zKFx1MDAyNmRybV9yYXNfbmxfZmFtaWx5LCBtc2csIDAsIERSTV9SQVNfTkxHUlBfRVJST1JfUkVQT1JUKTtcbitcbitcdHJldHVybiAwO1xuK1xuK2NhbmNlbF9tc2c6XG4rXHRnZW5sbXNnX2NhbmNlbChtc2csIGhkcik7XG4rZnJlZV9tc2c6XG4rXHRubG1zZ19mcmVlKG1zZyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitFWFBPUlRfU1lNQk9MKGRybV9yYXNfbmxfZXJyb3JfZXZlbnQpO1xuK1xuIC8qKlxuICAqIGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KCkgLSBEdW1wIGFsbCBFcnJvciBDb3VudGVyc1xuICAqIEBza2I6IE5ldGxpbmsgbWVzc2FnZSBidWZmZXJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuaW5kZXggZGVhMWMxYjI0OTRlODEuLjlkMzEyM2NjOWY5Y2FhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuY1xuQEAgLTU4LDYgKzU4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZHJtX3Jhc19ubF9vcHNbXSA9IHtcbiBcdH0sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGRybV9yYXNfbmxfbWNncnBzW10gPSB7XG4rXHRbRFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlRdID0geyBcImVycm9yLXJlcG9ydFwiLCB9LFxuK307XG4rXG4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbiBcdC5uYW1lXHRcdD0gRFJNX1JBU19GQU1JTFlfTkFNRSxcbiBcdC52ZXJzaW9uXHQ9IERSTV9SQVNfRkFNSUxZX1ZFUlNJT04sXG5AQCAtNjYsNCArNzAsNiBAQCBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuIFx0Lm1vZHVsZVx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0LnNwbGl0X29wc1x0PSBkcm1fcmFzX25sX29wcyxcbiBcdC5uX3NwbGl0X29wc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfb3BzKSxcbitcdC5tY2dycHNcdFx0PSBkcm1fcmFzX25sX21jZ3JwcyxcbitcdC5uX21jZ3Jwc1x0PSBBUlJBWV9TSVpFKGRybV9yYXNfbmxfbWNncnBzKSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG5pbmRleCBhMzk4NjQzNTcyYTVhMC4uMDNlYzI3NWFjYTkyOTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oXG5AQCAtMjEsNiArMjEsMTAgQEAgaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGRybV9yYXNfbmxfY2xlYXJfZXJyb3JfY291bnRlcl9kb2l0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRcdHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIFxuK2VudW0ge1xuK1x0RFJNX1JBU19OTEdSUF9FUlJPUl9SRVBPUlQsXG4rfTtcbitcbiBleHRlcm4gc3RydWN0IGdlbmxfZmFtaWx5IGRybV9yYXNfbmxfZmFtaWx5O1xuIFxuICNlbmRpZiAvKiBfTElOVVhfRFJNX1JBU19HRU5fSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG5pbmRleCA3OTM3ZDhiYTBlZDljZS4uNWNiZmQxMmQ2MWY0YjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZHJtX3Jhcy5jXG5AQCAtMTg1LDYgKzE4NSwzNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX25vZGVzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyoqXG4rICogeGVfZHJtX3Jhc19ldmVudCgpIC0gUmVwb3J0IGRybS1yYXMgZXJyb3IgZXZlbnQgdG8gdXNlcnNwYWNlXG4rICogQHhlOiB4ZSBkZXZpY2Ugc3RydWN0dXJlXG4rICogQGNvbXBvbmVudDogZXJyb3IgY29tcG9uZW50IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX2NvbXBvbmVudClcbisgKiBAc2V2ZXJpdHk6IGVycm9yIHNldmVyaXR5IChzZWUgXHUwMDI2ZW51bSBkcm1feGVfcmFzX2Vycm9yX3NldmVyaXR5KVxuKyAqIEB2YWx1ZTogdmFsdWUgb2YgZXJyb3IgY291bnRlclxuKyAqXG4rICogUmVwb3J0IGFuIGVycm9yLWV2ZW50IHRvIHVzZXJzcGFjZS5cbisgKi9cbit2b2lkIHhlX2RybV9yYXNfZXZlbnQoc3RydWN0IHhlX2RldmljZSAqeGUsIHU4IGNvbXBvbmVudCwgdTggc2V2ZXJpdHksIHUzMiB2YWx1ZSlcbit7XG4rXHRzdHJ1Y3QgeGVfZHJtX3JhcyAqcmFzID0gXHUwMDI2eGUtXHUwMDNlcmFzO1xuK1x0c3RydWN0IHhlX2RybV9yYXNfY291bnRlciAqaW5mbyA9IHJhcy1cdTAwM2VpbmZvW3NldmVyaXR5XTtcbitcdHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0LyogRXZlbnQgaXMgc3VwcG9ydGVkIG9ubHkgaWYgZHJtLXJhcyBpcyBlbmFibGVkICovXG4rXHRpZiAoIXhlLVx1MDAzZWluZm8uaGFzX2RybV9yYXMpXG4rXHRcdHJldHVybjtcbitcbitcdG5vZGUgPSBcdTAwMjZyYXMtXHUwMDNlbm9kZVtzZXZlcml0eV07XG4rXG4rXHRpZiAoIWluZm8gfHwgIWluZm9bY29tcG9uZW50XS5uYW1lKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyZXQgPSBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KG5vZGUsIGNvbXBvbmVudCwgaW5mb1tjb21wb25lbnRdLm5hbWUsIHZhbHVlKTtcbitcdGlmIChyZXQpXG4rXHRcdGRybV9lcnJfcmF0ZWxpbWl0ZWQoXHUwMDI2eGUtXHUwMDNlZHJtLCBcImRybS1yYXMgZXJyb3ItZXZlbnQgZmFpbGVkOiAlZCBmb3IgJXMgJXNcXG5cIiwgcmV0LFxuK1x0XHRcdFx0ICAgIGluZm9bY29tcG9uZW50XS5uYW1lLCBlcnJvcl9zZXZlcml0eVtzZXZlcml0eV0pO1xuK31cbitcbiAvKipcbiAgKiB4ZV9kcm1fcmFzX2luaXQoKSAtIEluaXRpYWxpemUgRFJNIFJBU1xuICAqIEB4ZTogeGUgZGV2aWNlIGluc3RhbmNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RybV9yYXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbmluZGV4IDM2NWM3MGU5M2U4MmZkLi5hZGQ5NmJmMWE3YWJkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kcm1fcmFzLmhcbkBAIC01LDExICs1LDE0IEBAXG4gI2lmbmRlZiBfWEVfRFJNX1JBU19IX1xuICNkZWZpbmUgX1hFX0RSTV9SQVNfSF9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rXG4gc3RydWN0IHhlX2RldmljZTtcbiBcbiAjZGVmaW5lIGZvcl9lYWNoX2Vycm9yX3NldmVyaXR5KGkpXHRcXFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFJNX1hFX1JBU19FUlJfU0VWX01BWDsgaSsrKVxuIFxuIGludCB4ZV9kcm1fcmFzX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuK3ZvaWQgeGVfZHJtX3Jhc19ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggY29tcG9uZW50LCB1OCBzZXZlcml0eSwgdTMyIHZhbHVlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmNcbmluZGV4IGEzMWUwNmI4YWE2N2FjLi5kNDNmNjE0ZGU3MjM3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jXG5AQCAtOTAsNiArOTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdwdV9oZWFsdGhfc3RhdGVzW10gPSB7XG4gfTtcbiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoZ3B1X2hlYWx0aF9zdGF0ZXMpID09IFhFX1JBU19IRUFMVEhfTUFYKTtcbiBcbitzdGF0aWMgaW50IGdldF9jb3VudGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCBzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICpjb3VudGVyLCB1MzIgKnZhbHVlKTtcbitcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiB7XG4gXHRzd2l0Y2ggKHNldmVyaXR5KSB7XG5AQCAtMTAyLDYgKzEwNCwxOCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19zZXZlcml0eSh1OCBzZXZlcml0eSlcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHU4IHhlX3RvX2RybV9yYXNfc2V2ZXJpdHkodTggc2V2ZXJpdHkpXG4re1xuK1x0c3dpdGNoIChzZXZlcml0eSkge1xuK1x0Y2FzZSBYRV9SQVNfU0VWX0NPUlJFQ1RBQkxFOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfU0VWX0NPUlJFQ1RBQkxFO1xuK1x0Y2FzZSBYRV9SQVNfU0VWX1VOQ09SUkVDVEFCTEU6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfVU5DT1JSRUNUQUJMRTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9TRVZfTUFYO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIHtcbiBcdHN3aXRjaCAoY29tcG9uZW50KSB7XG5AQCAtMTIwLDYgKzEzNCwyNCBAQCBzdGF0aWMgdTggZHJtX3RvX3hlX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuIFx0fVxuIH1cbiBcbitzdGF0aWMgdTggeGVfdG9fZHJtX3Jhc19jb21wb25lbnQodTggY29tcG9uZW50KVxuK3tcbitcdHN3aXRjaCAoY29tcG9uZW50KSB7XG4rXHRjYXNlIFhFX1JBU19DT01QX0RFVklDRV9NRU1PUlk6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0RFVklDRV9NRU1PUlk7XG4rXHRjYXNlIFhFX1JBU19DT01QX0NPUkVfQ09NUFVURTpcbitcdFx0cmV0dXJuIERSTV9YRV9SQVNfRVJSX0NPTVBfQ09SRV9DT01QVVRFO1xuK1x0Y2FzZSBYRV9SQVNfQ09NUF9QQ0lFOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9QQ0lFO1xuK1x0Y2FzZSBYRV9SQVNfQ09NUF9GQUJSSUM6XG4rXHRcdHJldHVybiBEUk1fWEVfUkFTX0VSUl9DT01QX0ZBQlJJQztcbitcdGNhc2UgWEVfUkFTX0NPTVBfU09DX0lOVEVSTkFMOlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9TT0NfSU5URVJOQUw7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gRFJNX1hFX1JBU19FUlJfQ09NUF9NQVg7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgcmFzX3N0YXR1c190b19lcnJubyh1MzIgc3RhdHVzKVxuIHtcbiBcdHN3aXRjaCAoc3RhdHVzKSB7XG5AQCAtMjE4LDYgKzI1MCwyNiBAQCBzdGF0aWMgdm9pZCByYXNfdXNwX2Flcl9pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuIFx0ZGV2X2RiZyhcdTAwMjZ1c3AtXHUwMDNlZGV2LCBcIlVuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3JzIGRvd25ncmFkZWQgYW5kIHVubWFza2VkXFxuXCIpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByYXNfc2VuZF9lcnJvcl9ldmVudChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTggc2V2ZXJpdHksIHU4IGNvbXBvbmVudClcbit7XG4rXHRzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzIGNvdW50ZXIgPSB7MH07XG4rXHR1OCBkcm1fc2V2ZXJpdHksIGRybV9jb21wb25lbnQ7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y291bnRlci5jb21tb24uc2V2ZXJpdHkgPSBzZXZlcml0eTtcbitcdGNvdW50ZXIuY29tbW9uLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbitcbitcdHJldCA9IGdldF9jb3VudGVyKHhlLCBcdTAwMjZjb3VudGVyLCBcdTAwMjZ2YWx1ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm47XG4rXG4rXHRkcm1fc2V2ZXJpdHkgPSB4ZV90b19kcm1fcmFzX3NldmVyaXR5KHNldmVyaXR5KTtcbitcdGRybV9jb21wb25lbnQgPSB4ZV90b19kcm1fcmFzX2NvbXBvbmVudChjb21wb25lbnQpO1xuK1xuK1x0eGVfZHJtX3Jhc19ldmVudCh4ZSwgZHJtX2NvbXBvbmVudCwgZHJtX3NldmVyaXR5LCB2YWx1ZSk7XG4rfVxuK1xuIHN0YXRpYyB1OCBoYW5kbGVfY29yZV9jb21wdXRlX2Vycm9ycyhzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpXG4ge1xuIFx0c3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICplcnJvcl9pbmZvID0gKHZvaWQgKilhcnItXHUwMDNlZGV0YWlscztcbkBAIC0zMTIsOCArMzY0LDEwIEBAIHZvaWQgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWQoc3RydWN0IHhlX2RldmljZSAqeGUsXG4gXHRzdHJ1Y3QgeGVfcmFzX3RocmVzaG9sZF9jcm9zc2VkICpwZW5kaW5nID0gKHZvaWQgKilcdTAwMjZyZXNwb25zZS1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyAqZXJyb3JzID0gcGVuZGluZy1cdTAwM2Vjb3VudGVycztcbiBcdHUzMiBpZCwgbmNvdW50ZXJzID0gcGVuZGluZy1cdTAwM2VuY291bnRlcnM7XG4rXHR1OCBzZW50ID0gMDtcbiBcbiBcdEJVSUxEX0JVR19PTihzaXplb2YocmVzcG9uc2UtXHUwMDNlZGF0YSkgXHUwMDNjIHNpemVvZigqcGVuZGluZykpO1xuK1x0QlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoc2VudCkgXHUwMDNjIFhFX1JBU19DT01QX01BWCk7XG4gXHR4ZV9kZXZpY2VfYXNzZXJ0X21lbV9hY2Nlc3MoeGUpO1xuIFxuIFx0aWYgKCFuY291bnRlcnMgfHwgbmNvdW50ZXJzIFx1MDAzZSBYRV9SQVNfTlVNX0NPVU5URVJTKVxuQEAgLTMyOSw2ICszODMsMTMgQEAgdm9pZCB4ZV9yYXNfY291bnRlcl90aHJlc2hvbGRfY3Jvc3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcbiBcbiBcdFx0eGVfd2Fybih4ZSwgXCJbUkFTXTogJXMgJXMgZGV0ZWN0ZWRcXG5cIixcbiBcdFx0XHRjb21wX3RvX3N0cihjb21wb25lbnQpLCBzZXZfdG9fc3RyKHNldmVyaXR5KSk7XG4rXG4rXHRcdC8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovXG4rXHRcdGlmIChzZW50IFx1MDAyNiBCSVQoY29tcG9uZW50KSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0c2VudCB8PSBCSVQoY29tcG9uZW50KTtcbitcbitcdFx0cmFzX3NlbmRfZXJyb3JfZXZlbnQoeGUsIHNldmVyaXR5LCBjb21wb25lbnQpO1xuIFx0fVxuIH1cbiBcbkBAIC0zODIsNiArNDQzLDcgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbiBcdGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBmaW5hbF9hY3Rpb247XG4gXHR1MzIgcmVtYWluaW5nID0gWEVfU1lTQ1RSTF9GTE9PRF9MSU1JVDtcbiBcdHN0cnVjdCB4ZV9yYXNfZ2V0X3NvY19lcnJvciByZXNwb25zZTtcbitcdHU4IHNlbnQgPSAwO1xuIFx0c2l6ZV90IHJsZW47XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTQyNSw2ICs0ODcsMTIgQEAgZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19wcm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbiBcdFx0XHR4ZV9pbmZvKHhlLCBcIltSQVNdOiAlcyAlcyBkZXRlY3RlZFxcblwiLCBjb21wX3RvX3N0cihjb21wb25lbnQpLFxuIFx0XHRcdFx0c2V2X3RvX3N0cihzZXZlcml0eSkpO1xuIFxuK1x0XHRcdC8qIFNlbmQgZXZlbnQgb25jZSBwZXIgY29tcG9uZW50ICovXG4rXHRcdFx0aWYgKCEoc2VudCBcdTAwMjYgQklUKGNvbXBvbmVudCkpKSB7XG4rXHRcdFx0XHRzZW50IHw9IEJJVChjb21wb25lbnQpO1xuK1x0XHRcdFx0cmFzX3NlbmRfZXJyb3JfZXZlbnQoeGUsIHNldmVyaXR5LCBjb21wb25lbnQpO1xuK1x0XHRcdH1cbitcbiBcdFx0XHRzd2l0Y2ggKGNvbXBvbmVudCkge1xuIFx0XHRcdGNhc2UgWEVfUkFTX0NPTVBfQ09SRV9DT01QVVRFOlxuIFx0XHRcdFx0YWN0aW9uID0gaGFuZGxlX2NvcmVfY29tcHV0ZV9lcnJvcnMoYXJyKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcmFzLmggYi9pbmNsdWRlL2RybS9kcm1fcmFzLmhcbmluZGV4IDBiZWVkZTNkZGM0ZTRiLi5lZTJjYWEwZWRjNmY5MiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvZHJtL2RybV9yYXMuaFxuKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oXG5AQCAtODAsOSArODAsMTQgQEAgc3RydWN0IGRybV9kZXZpY2U7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9SQVMpXG4gaW50IGRybV9yYXNfbm9kZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlKTtcbiB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpO1xuK2ludCBkcm1fcmFzX25sX2Vycm9yX2V2ZW50KHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUsIHUzMiBlcnJvcl9pZCwgY29uc3QgY2hhciAqZXJyb3JfbmFtZSxcbitcdFx0XHQgICB1MzIgdmFsdWUpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGUpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyB9XG4rc3RhdGljIGlubGluZSBpbnQgZHJtX3Jhc19ubF9lcnJvcl9ldmVudChzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsXG4rXHRcdFx0XHRcdCBjb25zdCBjaGFyICplcnJvcl9uYW1lLCB1MzIgdmFsdWUpXG4reyByZXR1cm4gMDsgfVxuICNlbmRpZlxuIFxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmhcbmluZGV4IDIxOGEzZWU4NjgwNTI3Li5lYWI4MjMxYWE4N2NiZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaFxuQEAgLTM4LDEzICszOCwyOCBAQCBlbnVtIHtcbiBcdERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCA9IChfX0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX01BWCAtIDEpXG4gfTtcbiBcbitlbnVtIHtcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19ERVZJQ0VfTkFNRSA9IDEsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTk9ERV9JRCxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19OT0RFX05BTUUsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfSUQsXG4rXHREUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfRVJST1JfTkFNRSxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19FUlJPUl9WQUxVRSxcbitcbitcdF9fRFJNX1JBU19BX0VSUk9SX0VWRU5UX0FUVFJTX01BWCxcbitcdERSTV9SQVNfQV9FUlJPUl9FVkVOVF9BVFRSU19NQVggPSAoX19EUk1fUkFTX0FfRVJST1JfRVZFTlRfQVRUUlNfTUFYIC0gMSlcbit9O1xuK1xuIGVudW0ge1xuIFx0RFJNX1JBU19DTURfTElTVF9OT0RFUyA9IDEsXG4gXHREUk1fUkFTX0NNRF9HRVRfRVJST1JfQ09VTlRFUixcbiBcdERSTV9SQVNfQ01EX0NMRUFSX0VSUk9SX0NPVU5URVIsXG4rXHREUk1fUkFTX0NNRF9FUlJPUl9FVkVOVCxcbiBcbiBcdF9fRFJNX1JBU19DTURfTUFYLFxuIFx0RFJNX1JBU19DTURfTUFYID0gKF9fRFJNX1JBU19DTURfTUFYIC0gMSlcbiB9O1xuIFxuKyNkZWZpbmUgRFJNX1JBU19NQ0dSUF9FUlJPUl9SRVBPUlRcdFwiZXJyb3ItcmVwb3J0XCJcbitcbiAjZW5kaWYgLyogX1VBUElfTElOVVhfRFJNX1JBU19IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNzowODoyMC4xNDk2MzkwNTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDE2ODg5MzE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBOZXRsaW5rIEVycm9yIEV2ZW50IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50LCBgZXJyb3ItZXZlbnRgLCB3aXRoaW4gdGhlIGBkcm1fcmFzYCBmYW1pbHkuICBUaGUgZ29hbCBpcyB0byBpbmZvcm0gdXNlcnNwYWNlIGFib3V0IGhhcmR3YXJlIGVycm9ycyBkZXRlY3RlZCBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgeGVgIGRyaXZlci4gV2UncmUgYWRkaW5nIGEgZnVuY3Rpb24gYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIHRvIHNlbmQgdGhpcyBldmVudC4gVGhlIGB4ZWAgZHJpdmVyIGlzIHNldCB1cCB0byBjYWxsIGByYXNfc2VuZF9lcnJvcl9ldmVudGAgd2hlbmV2ZXIgYSBSQVMgZXJyb3IsIG9yIGEgdGhyZXNob2xkIGJlaW5nIGNyb3NzZWQsIGlzIGRldGVjdGVkLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRpcmVjdGlvbiBvZiBkYXRhIGZsb3cuICBUaGlzIGlzIGFuIGV2ZW50ICp0byogdXNlcnNwYWNlLCBub3QgYSBjb21tYW5kICpmcm9tKiB1c2Vyc3BhY2UuIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuY2AgdG8gaW5jbHVkZSB0aGUgYGRybV9yYXNfbmxfZXJyb3JfZXZlbnRgIGZ1bmN0aW9uIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlLiBBbHNvLCBgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jYCBpcyBiZWluZyBhbHRlcmVkIHRvIGNhbGwgdGhpcyBuZXcgZnVuY3Rpb24gd2hlbmV2ZXIgYSBoYXJkd2FyZSBlcnJvciBpcyBkZXRlY3RlZC5cblxuVGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyBpZiB0aGVyZSBhcmUgYW55IG5ldyAqaW5wdXRzKiBmcm9tIHVzZXJzcGFjZSBiZWluZyBpbnRyb2R1Y2VkLiAgVGhlIG5ldGxpbmsgZXZlbnQgaXMgc2ltcGx5IHNlbnQgdG8gdXNlcnNwYWNlIOKAkyBlc3NlbnRpYWxseSBhIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20uICBVc2Vyc3BhY2UgY2FuIHN1YnNjcmliZSB0byB0aGUgbXVsdGljYXN0IGdyb3VwLCB3aGljaCBpcyBhIHN0YW5kYXJkIG5ldGxpbmsgZnVuY3Rpb25hbGl0eS4gVGhlIGFjdHVhbCBldmVudCBpdHNlbGYgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBrZXJuZWwgaW4gcmVzcG9uc2UgdG8gYSBoYXJkd2FyZSBlcnJvciBjb25kaXRpb24uIFRoZSBgZHJtX3Jhcy55YW1sYCBmaWxlIGNvbmZpcm1zIHRoaXM6IGl0IGRlc2NyaWJlcyB0aGUgYGVycm9yLWV2ZW50YCBhcyBhIHJlcG9ydGluZyBtZWNoYW5pc20gdGhhdCBpbmNsdWRlcyBhdHRyaWJ1dGVzIGxpa2UgZGV2aWNlIG5hbWUsIG5vZGUgSUQsIGFuZCBlcnJvciBpbmZvcm1hdGlvbi5cblxuSSdtIGNoZWNraW5nIHRoZSBlbnVtZXJhdGlvbiBmb3IgYERSTV9SQVNfQ01EX0VSUk9SX0VWRU5UYCwgYnV0IGl0J3MgYW4gZXZlbnQsIG5vdCBhIGNvbW1hbmQuIFRoZXJlIGFyZSBubyBuZXcgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiBgZHJtX3Jhc19ubC5jYCB0aGF0IHdvdWxkIHByb3ZpZGUgYSB3YXkgZm9yIHVzZXJzcGFjZSB0byB0cmlnZ2VyIHRoaXMgZXZlbnQuIEV4YW1pbmluZyB0aGUgYGRybV9yYXNfbmxfb3BzYCBhbmQgdGhlIGBkcm1fcmFzX25sX21jZ3Jwc2AgY29uZmlybXMgdGhhdCB0aGlzIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyBtdWx0aWNhc3QgZ3JvdXAgYW5kIGFuIGV2ZW50LiBJdCBkb2Vzbid0IGVuYWJsZSB1c2Vyc3BhY2UgdG8gc2VuZCBgRFJNX1JBU19DTURfRVJST1JfRVZFTlRgLiBUaGUgcGF0Y2ggY3JlYXRlcyB0aGUgbmV3IG11bHRpY2FzdCBncm91cCBgZXJyb3ItcmVwb3J0YC5cblxuQ3J1Y2lhbGx5LCBjYW4gU3l6a2FsbGVyLCBvciBhbnkgb3RoZXIgZnV6emVyLCB0cmlnZ2VyIHRoaXMgZXZlbnQ/IE5vdCBkaXJlY3RseSwgc2luY2UgdGhlIGV2ZW50IHJlbGllcyBvbiBoYXJkd2FyZSBlcnJvciBjb25kaXRpb25zIHdpdGhpbiB0aGUgYHhlYCBkcml2ZXIsIGFuZCBpdCdzIHNpbXBseSBpbmZvcm1pbmcgdXNlcnNwYWNlIG9mIHNvbWV0aGluZyB0aGF0IGhhcyBhbHJlYWR5IGhhcHBlbmVkLiBUaGVyZSdzIG5vIG5ldyBpb2N0bCBvciBuZXRsaW5rIGNvbW1hbmQgdG8gYWN0aXZlbHkgKnRyaWdnZXIqIHRoaXMgcmVwb3J0aW5nLiBUaGUgYWRkZWQgY29kZSBpcyBqdXN0IHJlc3BvbmRpbmcgdG8gZXhpc3RpbmcgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIGhhcmR3YXJlIGl0c2VsZi5cblxuSSdtIG5vdyBzYXRpc2ZpZWQuIFRoZXJlJ3Mgbm8gbmV3IGF0dGFjayBzdXJmYWNlIGNyZWF0ZWQgYmVjYXVzZSB0aGVyZSdzIG5vIG5ldyBpbnB1dCBmcm9tIHVzZXJzcGFjZSB0byBmdXp6LiBUaGUgb25seSB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gaXMgc3Vic2NyaWJpbmcgdG8gdGhlIG11bHRpY2FzdCBncm91cCwgYW5kIHRoYXQncyBoYW5kbGVkIGJ5IGdlbmVyaWMgbmV0bGluayBjb2RlLCBzbyBpdCBpcyBzYWZlLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4ZV9kcm1fcmFzX2V2ZW50YCBpcyBpbmRlZWQgY2FsbGVkIGZyb20gYHJhc19zZW5kX2Vycm9yX2V2ZW50YCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgeGVfcmFzX2NvdW50ZXJfdGhyZXNob2xkX2Nyb3NzZWRgIGFuZCBgeGVfcmFzX3Byb2Nlc3NfZXJyb3JzYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBoYXJkd2FyZSBlcnJvciBoYW5kbGluZyBwYXRocy4gIE5vIG5ldyBpbnB1dC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGUgcGF0Y2gganVzdCBhZGRzIGEga2VybmVsLXRvLXVzZXJzcGFjZSBtdWx0aWNhc3QgZXZlbnQgdG8gcmVwb3J0IFJBUyBlcnJvcnMsIHdpdGggbm8gYWRkZWQgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NzksIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDc6MDg6MzQuMzE4NTM0OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldGxpbmsgbXVsdGljYXN0IGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXJzcGFjZSB0byByZXBvcnQgaGFyZHdhcmUgUkFTIGVycm9ycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBpbnB1dHMsIGlvY3Rscywgb3IgbmV0bGluayBjb21tYW5kcyB0aGF0IGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXRsaW5rIG11bHRpY2FzdCBldmVudCBzZW50IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UgdG8gcmVwb3J0IGhhcmR3YXJlIFJBUyBlcnJvcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVzZXJzcGFjZS1jb250cm9sbGFibGUgaW5wdXRzLCBpb2N0bHMsIG9yIG5ldGxpbmsgY29tbWFuZHMgdGhhdCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkw7q8[1] Phase: Running StartedAt: 2026-07-23 07:08:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkw7q8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-23 07:08:46 +0000 UTC FinishedAt: 2026-07-23 07:08:51 +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,}