Name: series-workflowwxs2s Phase: Failed StartedAt: 2026-09-04 13:47:09 +0000 UTC FinishedAt: 2026-09-04 14:05:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxs2s[0] Phase: Succeeded StartedAt: 2026-09-04 13:47:09 +0000 UTC FinishedAt: 2026-09-04 14:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxs2s[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 13:47:09 +0000 UTC FinishedAt: 2026-09-04 14:05:23 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXG5pbmRleCA3NWExMjc1NDVlNWRkLi4xYzBjYTZkYWY1NDU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbkBAIC0xNTYsNiAmIzQzOzE1NiwxMCBAQCBzdHJ1Y3QgcmVhbHRla19vcHMge1xuIFx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbiBcdGludFx0KCpwaHlfd3JpdGUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4gXHRcdFx0ICAgICB1MTYgdmFsKTtcbiYjNDM7XHRpbnRcdCgqcGh5X3JlYWRfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4mIzQzO1x0XHRcdFx0aW50IHJlZ251bSk7XG4mIzQzO1x0aW50XHQoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbiYjNDM7XHRcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gfTtcbiBcbiBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNGMzMDU3NTYxMTZjYy4uOTk4ZjZiMmFkMTQwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pZl9icmlkZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLmhcJiMzNDtcbkBAIC0yMDIsNiAmIzQzOzIwMywxMCBAQFxuIC8qIFRoZSBQSFkgT0NQIGFkZHJlc3NlcyBvZiBQSFkgcmVnaXN0ZXJzIDB+MzEgc3RhcnQgaGVyZSAqL1xuICNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9QSFlSRUdfQkFTRVx0XHQweEE0MDBcbiBcbiYjNDM7I2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFXHRcdFx0MHhBNUM0XG4mIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWXHRcdFx0MHhBNUQwXG4mIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFXHRcdDB4QTVEMlxuJiM0MztcbiAvKiBFeHRlcm5hbCBpbnRlcmZhY2UgcG9ydCBtb2RlIHZhbHVlcyAtIHVzZWQgaW4gRElHSVRBTF9JTlRFUkZBQ0VfU0VMRUNUICovXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXHRcdDBcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXHRcdDFcbkBAIC0xMDQwLDYgJiM0MzsxMDQ1LDY2IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuJiM0MztcdFx0XHRcdCAgaW50IHJlZ251bSlcbiYjNDM7e1xuJiM0MztcdHUzMiBvY3BfYWRkcjtcbiYjNDM7XHR1MTYgdmFsO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX1BDU19FRUVfQUJMRSlcbiYjNDM7XHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQUJMRTtcbiYjNDM7XHRlbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbiYjNDM7XHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xuJiM0MztcdGVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxuJiM0MztcdFx0b2NwX2FkZHIgPSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9MUEFCTEU7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0LyogT25seSB0aGUgRUVFIHJlZ2lzdGVycyBhcmUgbWFwcGVkOyBvdGhlcnMgcmVhZCBhcyAwLCBhcyB0aGVcbiYjNDM7XHRcdCAqIGhhcmR3YXJlIGRvZXMsIHNvIHRoZSBnZW5lcmljIE1NRCBjb2RlIGlzIG5vdCB0cmlwcGVkIHVwIGJ5XG4mIzQzO1x0XHQgKiBhbiBlcnJvci5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXHUwMDI2dmFsKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVhZCBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCYjMzQ7LCBwaHksIG9jcF9hZGRyLFxuJiM0MztcdFx0XHRyZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB2YWw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcbiYjNDM7XHRcdFx0XHQgICBpbnQgZGV2YWQsIGludCByZWdudW0sIHUxNiB2YWwpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocGh5IFx1MDAzZSBSVEw4MzY1TUJfUEhZQUREUk1BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHQvKiBPbmx5IHRoZSBFRUUgYWR2ZXJ0aXNlbWVudCByZWdpc3RlciBpcyB3cml0YWJsZTsgd3JpdGVzIHRvIG90aGVyXG4mIzQzO1x0ICogcmVnaXN0ZXJzIGFyZSBpZ25vcmVkLCBhcyB0aGUgaGFyZHdhcmUgZG9lcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2YWQgIT0gTURJT19NTURfQU4gfHwgcmVnbnVtICE9IE1ESU9fQU5fRUVFX0FEVilcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEVixcbiYjNDM7XHRcdFx0XHQgICAgICB2YWwpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCYjMzQ7LCBwaHksXG4mIzQzO1x0XHRcdFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEViwgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxuIHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG4ge1xuQEAgLTE2MzksNiAmIzQzOzE3MDQsMTQgQEAgc3RhdGljIHZvaWQgcnRsODM2NW1iX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0ICovXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbiBcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdFx0LyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzXG4mIzQzO1x0XHQgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRtZW1jcHkoY29uZmlnLVx1MDAzZWxwaV9pbnRlcmZhY2VzLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXG4mIzQzO1x0XHQgICAgICAgc2l6ZW9mKGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcykpO1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWVlZV9lbmFibGVkX2RlZmF1bHQgPSB0cnVlO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG5AQCAtMzI3NSwxOCAmIzQzOzMzNDgsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgdTMyIHRpbWVyLCBib29sIHR4X2Nsb2NrX3N0b3ApXG4mIzQzO3tcbiYjNDM7XHQvKiBUaGUgaGFyZHdhcmUgbWFuYWdlcyBMUEkgaXRzZWxmOyB0aGVyZSBpcyBubyBNQUMtbGV2ZWwgTFBJIGNvbnRyb2wuXG4mIzQzO1x0ICogVGhpcyBjYWxsYmFjayBvbmx5IHNpZ25hbHMgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuJiM0MztcdCAqL1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGw4MzY1bWJfcGh5bGlua19tYWNfb3BzID0ge1xuIFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG4gXHQubWFjX2NvbmZpZyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19jb25maWcsXG4gXHQubWFjX2xpbmtfZG93biA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX2Rvd24sXG4gXHQubWFjX2xpbmtfdXAgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua191cCxcbiYjNDM7XHQubWFjX2VuYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSxcbiYjNDM7XHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBib29sIHJ0bDgzNjVtYl9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0LyogT25seSBpbnRlZ3JhdGVkLVBIWSBwb3J0cyBzdXBwb3J0IEVFRSwgbm90IHRoZSBleHRlcm5hbCBSR01JSSBwb3J0cy4gKi9cbiYjNDM7XHRyZXR1cm4gIXJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoZHMtXHUwMDNlcHJpdiwgcG9ydCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIG9ubHkgTFBJIHRpbWluZyBjb250cm9sICh0eF9scGlfdGltZXIpIGlzIGEgc2luZ2xlIGdsb2JhbFxuJiM0MztcdCAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpc1xuJiM0MztcdCAqIHBlci1wb3J0IGNhbGxiYWNrOyBsZWF2ZSBpdCBhdCBpdHMgcmVzZXQgZGVmYXVsdC4gUGVyLXBvcnQgRUVFIGlzXG4mIzQzO1x0ICogZHJpdmVuIHRocm91Z2ggdGhlIFBIWSBhZHZlcnRpc2VtZW50LiBSZWplY3QgdGhlIHBlci1wb3J0IFRYIExQSSBrbm9ic1xuJiM0MztcdCAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFlLVx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XG4mIzQzO1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtkaXNhYmxpbmcgRUVFIFRYIExQSSBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChlLVx1MDAzZXR4X2xwaV90aW1lcikge1xuJiM0MztcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7c2V0dGluZyB0aGUgRUVFIFRYIExQSSB0aW1lciBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgcnRsODM2NW1iX3N3aXRjaF9vcHMgPSB7XG4gXHQuZ2V0X3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sLFxuIFx0LmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCxcbiBcdC5zZXR1cCA9IHJ0bDgzNjVtYl9zZXR1cCxcbiBcdC50ZWFyZG93biA9IHJ0bDgzNjVtYl90ZWFyZG93bixcbiYjNDM7XHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXG4mIzQzO1x0LnNldF9tYWNfZWVlID0gcnRsODM2NW1iX3NldF9tYWNfZWVlLFxuIFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcbiBcdC5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLFxuIFx0LnBvcnRfYnJpZGdlX2xlYXZlID0gcnRsODN4eF9wb3J0X2JyaWRnZV9sZWF2ZSxcbkBAIC0zMzMyLDYgJiM0MzszNDUzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0ge1xuIFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxuIFx0LnBoeV9yZWFkID0gcnRsODM2NW1iX3BoeV9yZWFkLFxuIFx0LnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsXG4mIzQzO1x0LnBoeV9yZWFkX2M0NSA9IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUsXG4mIzQzO1x0LnBoeV93cml0ZV9jNDUgPSBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcbmluZGV4IDgxMjFlYzEyZmQ4YmEuLmFkNDJjMDVkMGE4OGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuQEAgLTYyLDYgJiM0Mzs2MiwyMiBAQCBzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuIFx0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV93cml0ZShwcml2LCBhZGRyLCByZWdudW0sIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4mIzQzO1x0XHRcdFx0ICAgICAgaW50IHJlZ251bSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZhZCxcbiYjNDM7XHRcdFx0XHQgICAgICAgaW50IHJlZ251bSwgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV93cml0ZV9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSwgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcbiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzXG5AQCAtOTUsNiAmIzQzOzExMSwxMCBAQCBpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIFx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSZWFsdGVrIHVzZXIgTUlJXCYjMzQ7O1xuIFx0YnVzLVx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xuIFx0YnVzLVx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkX2M0NSlcbiYjNDM7XHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1O1xuJiM0MztcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGVfYzQ1KVxuJiM0MztcdFx0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NTtcbiBcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslczp1c2VyX21paVwmIzM0OywgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiBcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMzM4OCw2ICYjNDM7MzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NDIpLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgzNjVNQi1WQyBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuJiM0MztcdFx0LnJlYWRfbW1kXHQ9IGdlbnBoeV9yZWFkX21tZF9jNDUsXG4mIzQzO1x0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQvKiBJbnRlcnJ1cHQgaGFuZGxpbmcgYW5hbG9nb3VzIHRvIFJUTDgzNjZSQiAqL1xuIFx0XHQuY29uZmlnX2ludHJcdD0gZ2VucGh5X25vX2NvbmZpZ19pbnRyLFxuIFx0XHQuaGFuZGxlX2ludGVycnVwdCA9IGdlbnBoeV9oYW5kbGVfaW50ZXJydXB0X25vX2FjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTQ1MmNhODNiYzNkYThjOGE3NDdmYzUxZjM2ZDkzOTc1MDFlMjkxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxNDowMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaCBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaAppbmRleCA3NWExMjc1NDVlNWRkLi4xYzBjYTZkYWY1NDU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oCkBAIC0xNTYsNiAmIzQzOzE1NiwxMCBAQCBzdHJ1Y3QgcmVhbHRla19vcHMgewogCWludAkoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTsKIAlpbnQJKCpwaHlfd3JpdGUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sCiAJCQkgICAgIHUxNiB2YWwpOwomIzQzOwlpbnQJKCpwaHlfcmVhZF9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCwKJiM0MzsJCQkJaW50IHJlZ251bSk7CiYjNDM7CWludAkoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCwKJiM0MzsJCQkJIGludCByZWdudW0sIHUxNiB2YWwpOwogfTsKIAogc3RydWN0IHJlYWx0ZWtfdmFyaWFudCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwppbmRleCA0YzMwNTc1NjExNmNjLi45OThmNmIyYWQxNDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl9icmlkZ2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl92bGFuLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7cmVhbHRlay5oJiMzNDsKQEAgLTIwMiw2ICYjNDM7MjAzLDEwIEBACiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi8KICNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9QSFlSRUdfQkFTRQkJMHhBNDAwCiAKJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEUJCQkweEE1QzQKJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEVgkJCTB4QTVEMAomIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFCQkweEE1RDIKJiM0MzsKIC8qIEV4dGVybmFsIGludGVyZmFjZSBwb3J0IG1vZGUgdmFsdWVzIC0gdXNlZCBpbiBESUdJVEFMX0lOVEVSRkFDRV9TRUxFQ1QgKi8KICNkZWZpbmUgUlRMODM2NU1CX0VYVF9QT1JUX01PREVfRElTQUJMRQkJMAogI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9SR01JSQkJMQpAQCAtMTA0MCw2ICYjNDM7MTA0NSw2NiBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgaW50IHJlZ251bSkKJiM0Mzt7CiYjNDM7CXUzMiBvY3BfYWRkcjsKJiM0MzsJdTE2IHZhbDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKHBoeSAmZ3Q7IFJUTDgzNjVNQl9QSFlBRERSTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgJmFtcDsmYW1wOyByZWdudW0gPT0gTURJT19QQ1NfRUVFX0FCTEUpCiYjNDM7CQlvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEU7CiYjNDM7CWVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOICZhbXA7JmFtcDsgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVikKJiM0MzsJCW9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWOwomIzQzOwllbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiAmYW1wOyZhbXA7IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUpCiYjNDM7CQlvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRTsKJiM0MzsJZWxzZQomIzQzOwkJLyogT25seSB0aGUgRUVFIHJlZ2lzdGVycyBhcmUgbWFwcGVkOyBvdGhlcnMgcmVhZCBhcyAwLCBhcyB0aGUKJiM0MzsJCSAqIGhhcmR3YXJlIGRvZXMsIHNvIHRoZSBnZW5lcmljIE1NRCBjb2RlIGlzIG5vdCB0cmlwcGVkIHVwIGJ5CiYjNDM7CQkgKiBhbiBlcnJvci4KJiM0MzsJCSAqLwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgJmFtcDt2YWwpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byByZWFkIFBIWSVkIE9DUCAlMDR4LCByZXQgJWRcbiYjMzQ7LCBwaHksIG9jcF9hZGRyLAomIzQzOwkJCXJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwKJiM0MzsJCQkJICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKHBoeSAmZ3Q7IFJUTDgzNjVNQl9QSFlBRERSTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CS8qIE9ubHkgdGhlIEVFRSBhZHZlcnRpc2VtZW50IHJlZ2lzdGVyIGlzIHdyaXRhYmxlOyB3cml0ZXMgdG8gb3RoZXIKJiM0MzsJICogcmVnaXN0ZXJzIGFyZSBpZ25vcmVkLCBhcyB0aGUgaGFyZHdhcmUgZG9lcy4KJiM0MzsJICovCiYjNDM7CWlmIChkZXZhZCAhPSBNRElPX01NRF9BTiB8fCByZWdudW0gIT0gTURJT19BTl9FRUVfQURWKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLAomIzQzOwkJCQkgICAgICB2YWwpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXG4mIzM0OywgcGh5LAomIzQzOwkJCVJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEViwgcmV0KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICoKIHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpCiB7CkBAIC0xNjM5LDYgJiM0MzsxNzA0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCSAqLwogCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUksCiAJCQkgIGNvbmZpZy0mZ3Q7c3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwomIzQzOwkJLyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzCiYjNDM7CQkgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLgomIzQzOwkJICovCiYjNDM7CQltZW1jcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcywKJiM0MzsJCSAgICAgICBzaXplb2YoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcykpOwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDsKJiM0MzsJCWNvbmZpZy0mZ3Q7ZWVlX2VuYWJsZWRfZGVmYXVsdCA9IHRydWU7CiAJCXJldHVybjsKIAl9CiAKQEAgLTMyNzUsMTggJiM0MzszMzQ4LDY2IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX2RldGVjdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKJiM0MzsJCQkJCSAgICAgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcCkKJiM0Mzt7CiYjNDM7CS8qIFRoZSBoYXJkd2FyZSBtYW5hZ2VzIExQSSBpdHNlbGY7IHRoZXJlIGlzIG5vIE1BQy1sZXZlbCBMUEkgY29udHJvbC4KJiM0MzsJICogVGhpcyBjYWxsYmFjayBvbmx5IHNpZ25hbHMgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLgomIzQzOwkgKi8KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKJiM0Mzt7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHsKIAkubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcywKIAkubWFjX2NvbmZpZyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19jb25maWcsCiAJLm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLAogCS5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLAomIzQzOwkubWFjX2VuYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSwKJiM0MzsJLm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaSwKIH07CiAKJiM0MztzdGF0aWMgYm9vbCBydGw4MzY1bWJfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKJiM0Mzt7CiYjNDM7CS8qIE9ubHkgaW50ZWdyYXRlZC1QSFkgcG9ydHMgc3VwcG9ydCBFRUUsIG5vdCB0aGUgZXh0ZXJuYWwgUkdNSUkgcG9ydHMuICovCiYjNDM7CXJldHVybiAhcnRsODM2NW1iX2dldF9wb3J0X2V4dGludChkcy0mZ3Q7cHJpdiwgcG9ydCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiYjNDM7CQkJCSBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKQomIzQzO3sKJiM0MzsJc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLSZndDtwcml2OwomIzQzOwomIzQzOwkvKiBUaGUgb25seSBMUEkgdGltaW5nIGNvbnRyb2wgKHR4X2xwaV90aW1lcikgaXMgYSBzaW5nbGUgZ2xvYmFsCiYjNDM7CSAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpcwomIzQzOwkgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpcwomIzQzOwkgKiBkcml2ZW4gdGhyb3VnaCB0aGUgUEhZIGFkdmVydGlzZW1lbnQuIFJlamVjdCB0aGUgcGVyLXBvcnQgVFggTFBJIGtub2JzCiYjNDM7CSAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAoIWUtJmd0O3R4X2xwaV9lbmFibGVkKSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtkaXNhYmxpbmcgRUVFIFRYIExQSSBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGUtJmd0O3R4X2xwaV90aW1lcikgewomIzQzOwkJZGV2X2Vycihwcml2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtzZXR0aW5nIHRoZSBFRUUgVFggTFBJIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0gewogCS5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsCiAJLmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCwKIAkuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsCiAJLnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLAomIzQzOwkuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsCiYjNDM7CS5zZXRfbWFjX2VlZSA9IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZSwKIAkucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLAogCS5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLAogCS5wb3J0X2JyaWRnZV9sZWF2ZSA9IHJ0bDgzeHhfcG9ydF9icmlkZ2VfbGVhdmUsCkBAIC0zMzMyLDYgJiM0MzszNDUzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0gewogCS5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCwKIAkucGh5X3JlYWQgPSBydGw4MzY1bWJfcGh5X3JlYWQsCiAJLnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsCiYjNDM7CS5waHlfcmVhZF9jNDUgPSBydGw4MzY1bWJfcGh5X3JlYWRfYzQ1LAomIzQzOwkucGh5X3dyaXRlX2M0NSA9IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1LAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jCmluZGV4IDgxMjFlYzEyZmQ4YmEuLmFkNDJjMDVkMGE4OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMKQEAgLTYyLDYgJiM0Mzs2MiwyMiBAQCBzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLAogCXJldHVybiBwcml2LSZndDtvcHMtJmd0O3BoeV93cml0ZShwcml2LCBhZGRyLCByZWdudW0sIHZhbCk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgICAgIGludCByZWdudW0pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLSZndDtwcml2OwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b3BzLSZndDtwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJcmV0dXJuIHByaXYtJmd0O29wcy0mZ3Q7cGh5X3dyaXRlX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtLCB2YWwpOwomIzQzO30KJiM0MzsKIC8qKgogICogcnRsODN4eF9zZXR1cF91c2VyX21kaW8oKSAtIHJlZ2lzdGVyIHRoZSB1c2VyIG1paSBidXMgZHJpdmVyCiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzCkBAIC05NSw2ICYjNDM7MTExLDEwIEBAIGludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpCiAJYnVzLSZndDtuYW1lID0gJiMzNDtSZWFsdGVrIHVzZXIgTUlJJiMzNDs7CiAJYnVzLSZndDtyZWFkID0gcnRsODN4eF91c2VyX21kaW9fcmVhZDsKIAlidXMtJmd0O3dyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7CiYjNDM7CWlmIChwcml2LSZndDtvcHMtJmd0O3BoeV9yZWFkX2M0NSkKJiM0MzsJCWJ1cy0mZ3Q7cmVhZF9jNDUgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NTsKJiM0MzsJaWYgKHByaXYtJmd0O29wcy0mZ3Q7cGh5X3dyaXRlX2M0NSkKJiM0MzsJCWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1OwogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslczp1c2VyX21paSYjMzQ7LCBkZXZfbmFtZShwcml2LSZndDtkZXYpKTsKIAlidXMtJmd0O3BhcmVudCA9IHByaXYtJmd0O2RldjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwppbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtMzM4OCw2ICYjNDM7MzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHsKIAl9LCB7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTQyKSwKIAkJLm5hbWUJCT0gJiMzNDtSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnJlYWRfbW1kCT0gZ2VucGh5X3JlYWRfbW1kX2M0NSwKJiM0MzsJCS53cml0ZV9tbWQJPSBnZW5waHlfd3JpdGVfbW1kX2M0NSwKIAkJLyogSW50ZXJydXB0IGhhbmRsaW5nIGFuYWxvZ291cyB0byBSVEw4MzY2UkIgKi8KIAkJLmNvbmZpZ19pbnRyCT0gZ2VucGh5X25vX2NvbmZpZ19pbnRyLAogCQkuaGFuZGxlX2ludGVycnVwdCA9IGdlbnBoeV9oYW5kbGVfaW50ZXJydXB0X25vX2FjaywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxOAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIERTQSBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AgZGlyZWN0b3J5OiBgcmVhbHRlay5oYCwgYHJ0bDgzNjVtYl9tYWluLmNgLCBgcnRsODN4eC5jYCwgYW5kIGV2ZW4gYSBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYCBkaXJlY3RvcnksIGByZWFsdGVrX21haW4uY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBsaWtlbHkgaW52b2x2ZXMgbW9kaWZpY2F0aW9ucyB0byBhIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgUmVhbHRlayBzd2l0Y2ggZHJpdmVyLCBwb3RlbnRpYWxseSBmb3IgUlRMODM2NU1CLCBSVEw4MzY2IG9yIHJlbGF0ZWQgbW9kZWxzLgoKTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaG93IGlzIHRoaXMgZHJpdmVyIGJvdW5kIGFuZCByZWdpc3RlcmVkPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGNhbiBJIGdldCBhdCBpdCB1c2luZyBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIHBhdGNoIGlzIHRlc3RhYmxlIHdpdGhvdXQgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgaWYgSSYjMzk7bSBsb29raW5nIGF0IGEgbW9yZSBjb21wbGV4IHNldHVwLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AgZGlyZWN0b3J5IHdpdGggYSBmZXcgcXVpY2sgZ3JlcHMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJ8bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfG1vZHVsZV9pMmNfZHJpdmVyfG1vZHVsZV9zcGlfZHJpdmVyfHBjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6ODpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtOS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMDpcdHJldHVybiBtZGlvX2RyaXZlcl9yZWdpc3RlcihkcnYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyNDpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg9OD1zdGF0aWMgaW5saW5lIGludCByZWFsdGVrX3NtaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC05LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTA6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKGRydik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTExLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM1MDI9c3RhdGljIGludCBydGw4MzY1bWJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzUwNjpcdHJldCA9IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg2Nj1zdGF0aWMgaW50IHJ0bDgzNjZyYl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE4NzA6XHRyZXQgPSByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnJ0bDgzNjZyYl9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODcxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjMwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUlRMODM2NU1CIERyaXZlciBhbmQgUmVhbHRlayBOZXR3b3JrIEhhcmR3YXJlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgaXMgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgY29kZSBwYXRocywgcGFydGljdWxhcmx5IGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgZml0IGludG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyY2hpdGVjdHVyZS4KCk5leHQsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIFJlYWx0ZWsmIzM5O3MgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBhbmQgUEhZIChQaHlzaWNhbCBMYXllcikgZHJpdmVycy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIG1hZGUsIGFuZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX1JFQUxURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTY6aWYgTkVUX0RTQV9SRUFMVEVLXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXHRib29sIFwmIzM0O1JlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfRFNBX1RBR19SVEw4XzRcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozOTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODM2NlJCIHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo1MDpcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy01MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcdFx0JiM0Mzs9IHJlYWx0ZWtfZHNhLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1x0XHRcdDo9IHJ0bDgzeHgub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgJiM0Mzs9IHJlYWx0ZWstbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1zbWkub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpICYjNDM7PSBydGw4MzY2Lm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE0LXJ0bDgzNjYtb2JqcyBcdFx0XHRcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxNTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xNi1ydGw4MzY2LW9ianMgXHRcdFx0XHQmIzQzOz0gcnRsODM2NnJiLWxlZHMub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE5LXJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC01LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIyOiNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9NDc9ZW51bSBydGw4MzY2X2xlZGdyb3VwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg6Njg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEUylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oPTk0PXN0cnVjdCBydGw4MzY2cmIge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk2LVx0Ym9vbCBwdmlkX2VuYWJsZWRbUlRMODM2NlJCX05VTV9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmgtOTgtXHRzdHJ1Y3QgcnRsODM2NnJiX2xlZCBsZWRzW1JUTDgzNjZSQl9OVU1fUE9SVFNdW1JUTDgzNjZSQl9OVU1fTEVER1JPVVBTXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI5MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFJlYWx0ZWsgRFNBIFN3aXRjaCBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gYE5FVF9EU0FfUkVBTFRFS2AuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYWxsIGFib3V0IHRob3NlIFJlYWx0ZWsgUlRMODM2NU1CLCBSVEw4MzY2UkIsIGFuZCBzaW1pbGFyIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHN0dWZmIHdpdGhvdXQgaGF2aW5nIHRoZSAqcmVhbCogaGFyZHdhcmU/IENhbiBJIHByb2JlIHRoZXNlIERTQSBzd2l0Y2hlcyBvciB0aGVpciBQSFkgZHJpdmVycyBpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgc3R1Y2sgbmVlZGluZyBhIHBoeXNpY2FsIHNldHVwPwoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCB3YXN0aW5nIG15IHRpbWUuIEFyZSB0aGVyZSBhbnkgbW9jayBkZXZpY2VzIG9yIHZpcnR1YWwgRFNBIGltcGxlbWVudGF0aW9ucyB0aGF0IEkmIzM5O20gb3Zlcmxvb2tpbmc/IE9yIGlzIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggZXNzZW50aWFsbHksIGJ5IGRlc2lnbiwgdGllZCB0byBoYXJkd2FyZSB0aGF0IEkgY2FuJiMzOTt0IGVtdWxhdGU/CgpBaGEhIExldCYjMzk7cyBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIGRvY3VtZW50IEkgaGF2ZSBoYW5keS4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KClJpZ2h0LCB0aGUgbm90ZSBvbiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIEl0IGxpc3RzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgZXRjLikgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBiZWNhdXNlIHRoZXkgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBgTkVUX0RTQV9SRUFMVEVLYCBvbmUgb2YgdGhvc2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4KCkFscmlnaHQsIGEgcXVpY2sgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBjb2RlLiBIb3cgYXJlIHRoZXNlIFJUTDgzNjVNQiAvIFJlYWx0ZWsgRFNBIHN3aXRjaGVzIGNvbm5lY3RlZCwgYW55d2F5PyBJJiMzOTtsbCBjaGVjayBgcnRsODM2NW1iX21haW4uY2AsIGByZWFsdGVrLXNtaS5jYCwgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gc2VlIGlmIEkgY2FuIGdsZWFuIGFueSBjbHVlcy4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIGEgaGludCBhcyB0byB0aGVpciBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21hdGNoX3RhYmxlfE1PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM0NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDc5LX07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0ODA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcnRsODM2NW1iX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzQ4Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM0ODQtXHRcdC5uYW1lID0gXCYjMzQ7cnRsODM2NW1iLXNtaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzQ4NTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDg2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM0OTI9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBydGw4MzY1bWJfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDk0LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozNDk1Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY1bWJfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM0OTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NnJiX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0My19O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY2cmJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NDY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NnJiX3NtaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0OC1cdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY2cmItc21pXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg0OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NnJiX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg1MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg1Nj1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjZyYl9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODU4LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjZyYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg1OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NnJiX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2MC1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4OTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBhdGNoOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIG1ldGljdWxvdXNseS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgQzQ1IE1ESU8gc3VwcG9ydCBhbmQgc29tZSBFRUUgZnVuY3Rpb25hbGl0eSB0byB0aGUgUmVhbHRlayBkcml2ZXJzLiBGaXJzdCwgd2UgaGF2ZSBjaGFuZ2VzIGluIGByZWFsdGVrLmhgIHdoaWNoIGFkZHMgZnVuY3Rpb24gcG9pbnRlciBwcm90b3R5cGVzIGZvciBgcGh5X3JlYWRfYzQ1YCBhbmQgYHBoeV93cml0ZV9jNDVgIHRvIHRoZSBgcmVhbHRla19vcHNgIHN0cnVjdHVyZS4gVGhlbiwgdGhlIG1lYXQgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGBydGw4MzY1bWJfbWFpbi5jYCwgd2hlcmUgdGhlIGFjdHVhbCBDNDUgcmVhZC93cml0ZSBmdW5jdGlvbnMgZm9yIHRoZSBQSFkgYXJlIGRlZmluZWQsIGFsb25nc2lkZSBzb21lIHBoeWxpbmsgYW5kIEVFRS1yZWxhdGVkIGZ1bmN0aW9ucy4gIFRoZXNlIGFyZSBnZXR0aW5nIGhvb2tlZCBpbnRvIHRoZSBgcnRsODM2NW1iX3N3aXRjaF9vcHNgIGFuZCBgcnRsODM2NW1iX29wc2AuIFdlIGFsc28gaGF2ZSBzaW1pbGFyIGltcGxlbWVudGF0aW9ucyBmb3IgYHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1YCwgYHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NWAsIGluIGBydGw4M3h4LmNgLCBjb25uZWN0ZWQgdG8gdGhlIGJ1cywgd2hpY2ggbWFrZXMgc2Vuc2UuIEZpbmFsbHksIG92ZXIgaW4gYHJlYWx0ZWtfbWFpbi5jYCwgd2UmIzM5O3JlIGFkZGluZyB0aGUgYGdlbnBoeV9yZWFkX21tZF9jNDVgIGFuZCBgZ2VucGh5X3dyaXRlX21tZF9jNDVgIG1ldGhvZHMgdG8gdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBlbnRyeS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSBldmVuICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5IHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBSVEw4MzY1TUIgaXMgYW4gZXh0ZXJuYWwgc3dpdGNoIElDLCBzb21ldGhpbmcgeW91JiMzOTtkIGZpbmQgaW4gYW4gZW1iZWRkZWQgc3lzdGVtLiAgSXQmIzM5O3MgY29ubmVjdGVkIHRvIGEgaG9zdCBTb0MgdmlhIE1ESU8gb3IgU01JLCBhbmQgdGhleSBhcmUgdXN1YWxseSBwcm9iZWQgdmlhIERldmljZSBUcmVlLgoKT24gYW1kNjQsIHdoaWNoIGlzIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBzdGFuZGFyZCB4ODYvYW1kNjQgc3lzdGVtcyAqZG9uJiMzOTt0KiB0eXBpY2FsbHkgaGF2ZSBhIERldmljZSBUcmVlIHNldHVwIGZvciB0aGVzZSBSZWFsdGVrIHN3aXRjaCBJQ3MsIHVubGVzcyBzb21lb25lIGhhcyBtb2NrZWQgdGhlbSBvciBzZXQgdXAgYSB0ZXN0IGVudmlyb25tZW50LCBhbmQgUUVNVSBjZXJ0YWlubHkgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVtLiAgU28sIHdlJiMzOTtyZSBsaWtlbHkgc3R1Y2sgaGVyZSB3aXRob3V0IHJlYWwgaGFyZHdhcmUuIENvdWxkIHN5emthbGxlciBoZWxwIHVzIG91dCBpbiB0aGlzIHJlZ2FyZD8gQ2FuIGl0IGluc3RhbnRpYXRlIGVpdGhlciBNRElPIG9yIFNNSSBwbGF0Zm9ybSBkcml2ZXJzIGZvciBhIFJlYWx0ZWsgc3dpdGNoIG9yIFBIWT8gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkga2luZCBvZiB2aXJ0dWFsIGJ1cyBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlLCBtYXliZSBOZXRsaW5rLCBvciBhIG1vY2sgZGV2aWNlLgoKSSYjMzk7bGwgY2hlY2sgYHJlYWx0ZWtfbWFpbi5jYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBQSFkgZHJpdmVyIHByb2JpbmcgbWVjaGFuaXNtLiBBIFJlYWx0ZWsgUEhZIGRyaXZlciBwcm9iZXMgd2hlbiBhbiBNRElPIGJ1cyBmaW5kcyBhIFBIWSB3aXRoIGEgbWF0Y2hpbmcgUEhZIElELCBhbmQgaW4gdGhpcyBjYXNlLCBpdOKAmXMgYDB4MDAxY2M5NDJgLiAgRG9lcyBRRU1VIG1vZGVsICp0aGF0KiBSZWFsdGVrIFBIWT8gTm8uIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBSVEw4MzY1TUIgRFNBIHN3aXRjaCBjaGlwIG9yIHRoZSBQSFkuIFNvLCBjYW4gd2UgaW5zdGFudGlhdGUgRFNBIG9yIFBIWSBkcml2ZXJzIHZpYSB1c2Vyc3BhY2Ugb3IgbW9jayBkZXZpY2VzPyAgSSB3aWxsIGFsc28gY2hlY2sgYHJlYWx0ZWtfc21pLmNgIGFuZCBgcmVhbHRlay1tZGlvLmNgIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDExCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBydGw4MzY1bWIgUHJvYmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgdGhlIGBydGw4MzY1bWJgIHByb2JlLiBTaW5jZSBJJiMzOTttIGxpa2VseSBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGRyaXZlciBiZWhhdmlvciwgcGlucG9pbnRpbmcgaXRzIG9yaWdpbiBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBmaW5kaW5nIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbjsgaXQmIzM5O3MgYWJvdXQgdW5kZXJzdGFuZGluZyAqd2hlcmUqIGl0JiMzOTtzIGludm9rZWQgaW4gdGhlIHByb2JlIHNlcXVlbmNlLCBhbmQgdGhlIGNvbnRleHQgYXJvdW5kIHRoYXQgY2FsbC4gSSBuZWVkIHRvIGtub3cgdGhlIGFzc29jaWF0ZWQgZGV2aWNlIHN0cnVjdHVyZXMsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB1c2luZyBteSBzdGFuZGFyZCBzZWFyY2ggdG9vbHMsIGxpa2VseSBgZ3JlcGAgb3IgYGZpbmRgLCB0YXJnZXRpbmcgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byBiZSBwcmVjaXNlIHdpdGggbXkgc2VhcmNoLCBwb3RlbnRpYWxseSBsb29raW5nIGZvciB0aGUgZXhhY3Qgc3RyaW5nLCBjb25zaWRlcmluZyBjYXNpbmcsIGFuZCBwb3RlbnRpYWxseSBsb29raW5nIGZvciBzdXJyb3VuZGluZyBrZXl3b3JkcyBzdWNoIGFzICYjMzQ7cHJvYmUmIzM0OyBvciAmIzM0O21vZHVsZV9pbml0JiMzNDsuIEZyb20gdGhlcmUgSSYjMzk7bGwgc3RhcnQgd29ya2luZyB0aHJvdWdoIHRoZSBjcm9zcyByZWZlcmVuY2VzIHVudGlsIEkgZmluZCBleGFjdGx5IHdoYXQgSSBhbSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE3MjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTE3PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgJiM0Mzs9IHJ0bDgzNjVtYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcdFx0ICBydGw4MzY1bWJfdGFibGUubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjE6XHRcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XHRcdCAgcnRsODM2NW1iX2wyLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Nz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjk6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX2wyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl90YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTMtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXHR1OCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMTUtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTIyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkga2V5O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVx0dTE2IG1lbWJlcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTY0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyNjI6ICogcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKCkgLSBnZXQgdGhlIG5leHQgVW5pY2FzdCBMMiBlbnRyeVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4MS0gKiovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVx0XHRcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4NjpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XHRydGw4MzY1bWJfbDJfZGF0YV90b191YyhkYXRhLCBcdTAwMjZ1Yyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA2LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMxMS1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMyOC1cdHVjLmFnZSA9IDE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XHRydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShcdTAwMjZ1YywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzEtXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNDU6aW50IHJ0bDgzNjVtYl9sMl9kZWxfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0OS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVx0dWMuYWdlID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2MTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NDk6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1My1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVx0bWMuaXNfc3RhdGljID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2NjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzQtXHRcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ3NTpcdFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXHUwMDI2bWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVx0XHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcdFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVx0fSBlbHNlIGlmIChyZXQgPT0gLUVOT0VOVCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyMS1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjYtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzEtXHRtYy5rZXkuaXZsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NTA6XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NTEtXHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cdH1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU2ODpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NzE6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTYtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOS1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjItXHRcdFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI1OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXHRcdFx0dTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyODppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0LSAqIHJlcXVpcmUgdGhlIHJ0bDgzNjdkIHZlbmRvciBkcml2ZXIuIFdpdGggYWxsIHRoaXMgdW5jZXJ0YWludHksIHRoZSBkcml2ZXIgaGFzXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTAtI2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTI6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3ZsYW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICogMy1iaXQgTVNCIGZpZWxkIChDVFJMMSkuIFRoZSBjaGlwIHJlc2V0cyB0aGVtIHRvIDB4MUZGRkY7IHNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjI6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjMtICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjktI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXHRcdDB4MDA0MFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzA6LyogU2VlIFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzMS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfVkxBTl9FR1JFU1NfTU9ERV9NQVNLXHRcdDB4MDAzMFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM0LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzU6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzYtICogQFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMOiBmb2xsb3cgdW50YWcgbWFzayBpbiBWTEFONGsgdGFibGUgZW50cnlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDQ1OmVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDYtXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4OTplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ5MC1cdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTUxOnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTItXHR1MzIgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NjA6c3RhdGljIHN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIgcnRsODM2NW1iX21pYl9jb3VudGVyc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NjEtXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIzOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNC1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjgtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzMC1cdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjM5LVx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1fc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUyLVx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2MC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2NC1cdHsgMHgwNTAwLCAweDgyRjAgfSwgeyAweDA1MDEsIDB4RjE5NSB9LCB7IDB4MDUwMiwgMHgzMUEyIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY2OTplbnVtIHJ0bDgzNjVtYl9waHlfaW50ZXJmYWNlX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NzAtXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4MC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjgxOiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgyLSAqIEBwb3J0OiB0aGUgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cdTAwM2UgeyBpZCwgc3VwcG9ydGVkX2ludGVyZmFjZXMgfS4gVG8gYmUgZW1iZWRkZWRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OiAqIGluIFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODgtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4OTpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5MC1cdGludCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2OTY6ICogc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gLSBzdGF0aWMgY2hpcC1zcGVjaWZpYyBpbmZvXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5Ny0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDUtICogYnkgdGhpcyBkcml2ZXIuIFdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIGFub3RoZXIgY2hpcCBpbiB0aGUgZmFtaWx5LCBhIG5ld1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzA4OnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMS1cdHUzMiBjaGlwX3ZlcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEyOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEzOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpqYW1fdGFibGU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNC1cdHNpemVfdCBqYW1fc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxOC0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzIwLVx0e1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI3LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjg6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjk6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzktXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc0MDpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc0MTpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzQyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1My1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzU0Olx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzU1Olx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY2LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Njc6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Njg6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MjplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzMtXHRSVEw4MzY1TUJfU1RQX1NUQVRFX0RJU0FCTEVEID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzc5OmVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODAtXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODU6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg2LVx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTA6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5MS1cdFJUTDgzNjVNQl9DUFVfRk9STUFUXzhCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5NTplbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTYtXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MDE6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgwMi0gKiBAZW5hYmxlOiBlbmFibGUvZGlzYWJsZSBoYXJkd2FyZSBpbnNlcnRpb24gb2YgQ1BVIHRhZyBpbiBzd2l0Y2gtXHUwMDNlQ1BVIGZyYW1lc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEyLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTM6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNi1cdHUzMiB0cmFwX3BvcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTg6XHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxOTpcdGVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiByeF9sZW5ndGg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyMDpcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI0OiAqIHN0cnVjdCBydGw4MzY1bWJfcG9ydCAtIHByaXZhdGUgcGVyLXBvcnQgZGF0YVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjUtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNi0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mjc6ICogQHN0YXRzOiBsaW5rIHN0YXRpc3RpY3MgcG9wdWxhdGVkIGJ5IHJ0bDgzNjVtYl9zdGF0c19wb2xsLCByZWFkeSBmb3IgYXRvbWljXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyODogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyOS0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMxLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzI6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMzLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODQxOiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0Mi0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU0OnN0cnVjdCBydGw4MzY1bWIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTUtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTYtXHRpbnQgaXJxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTc6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cdHN0cnVjdCBtdXRleCBtaWJfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYwOlx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYxLVx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY1OiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY3OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9wb2xsX2J1c3koc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzctXHRcdFx0XHQgICAgIHUzMiBvY3BfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTA2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDctXHRcdFx0XHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE4Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMyOlx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1MS1cdFx0XHRcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1ODpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkyOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA3LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAyMDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAyMS1cdFx0XHQgICAgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDM1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ5LVx0XHRcdFx0ICBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA3MTpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODI6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgzLVx0XHRcdFx0ICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA5NjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDk3LVx0XHRcdFx0ICAgICAgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOTpydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTExMTpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTItXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE1Olx0XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNi1cdFx0XHRcdTAwMjZtYi1cdTAwM2VjaGlwX2luZm8tXHUwMDNlZXh0aW50c1tpXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTExMjg9c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTI5OnJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMzAtXHRcdFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTEzMi1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTMzOlx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEzNDpcdHN0cnVjdCBydGw4MzY1bWIgKm1iO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTM1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTQ2LVx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExNDg6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0OTpcdFx0cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE1MC1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc3LVx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE3ODpcdCAqIGluIHRoZSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua197dXAsZG93bn0gZnVuY3Rpb25zLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc5LVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjc6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjQ3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNDkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyOTEte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjkyOlx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVx1MDAzZWNoaXBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MzpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyOTQtXHR1MzIgb3B0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNS0gKiB0aGVpciBtYXhpbXVtIGluIGl0cyBzd2l0Y2ggaW5pdCwgdW5jb25kaXRpb25hbGx5IGZvciB0aGUgd2hvbGUgY2hpcFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzM2OiAqIGZhbWlseS4gVGhlIGNoaXAgcmVzZXQgaW4gcnRsODM2NW1iX3NldHVwKCkgcHV0cyB0aGVtIGJhY2sgdG8gdGhlaXIgcmVzZXRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNy0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzQ0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzQ1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzNzE6c3RhdGljIGludCBydGw4MzY1bWJfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzcyLVx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc2Olx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpzZHNfamFtO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzc3LVx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc4Olx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwY3NfdG9fcnRsODM2NW1iKHBjcyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzktXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM4OC1cdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCkge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDQyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBEcml2ZXIgUmVnaXN0cmF0aW9uIGFuZCBQcm9iZSBGbG93KioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gaG93IHRoZXNlIFJlYWx0ZWsgU01JIGFuZCBNRElPIGRyaXZlcnMgYXJlIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0cmF0aW9uIGFuZCBwcm9iaW5nIHByb2Nlc3MgZm9yIHRoZSBgcnRsODM2NW1iX3NtaV9kcml2ZXJgIGFuZCBgcnRsODM2NW1iX21kaW9fZHJpdmVyYC4gSSBrbm93IHRoZXkmIzM5O3JlIGNyaXRpY2FsIGZvciBhY2Nlc3NpbmcgdGhlIHN3aXRjaCBoYXJkd2FyZSwgc28gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGByZWFsdGVrLXNtaS5jYCBhbmQgYHJlYWx0ZWstbWRpby5jYC4gVGhvc2Ugc291cmNlIGZpbGVzIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGxvZ2ljIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBJJiMzOTttIGFmdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlYWx0ZWtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1ODggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLKVx0XHQmIzQzOz0gcmVhbHRla19kc2Eub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXHRcdFx0Oj0gcnRsODN4eC5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICYjNDM7PSByZWFsdGVrLXNtaS5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03My17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03NS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA1Olx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XHQucmVnX3dyaXRlID0gcmVhbHRla19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA5LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjIte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19tZGlvX2luZm8pO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVx0aWYgKElTX0VSUihwcml2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXHRwcml2LVx1MDAzZW1kaW9fYWRkciA9IG1kaW9kZXYtXHUwMDNlYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDUtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTYte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3Olx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE3OS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxODppbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjUyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTU4LVx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVx1MDAzZW1kaW8sIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjY1Olx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTcwLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjcxOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sIDEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjc3OnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODMtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg5LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVx0LyogQWRkIGEgY2xpY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTI6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTAyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGRhdGEsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cdGZvciAoOyBsZW4gXHUwMDNlIDA7IGxlbi0tKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sICEhKGRhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyAobGVuIC0gMSkpKSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjU6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTMwLVx0XHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTM5OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcdFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDEsIFx1MDAyNmFjayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cdFx0aWYgKGFjayA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MjpcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcdHJldHVybiByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIGRhdGEsIDgpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cdC8qIFJlYWQgZGF0YSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXHUwMDI2dCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cdCpkYXRhID0gKHQgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVx0LyogU2VuZCBhbiBBQ0sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODY6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkwLVx0LyogUmVhZCBkYXRhICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCA4LCBcdTAwMjZ0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVx0KmRhdGEgPSAodCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTQtXHQvKiBTZW5kIGFuIEFDSyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIDB4MDEsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cdC8qIFNlbmQgUkVBRCBjb21tYW5kICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNtZF9yZWFkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXHQvKiBSZWFkIERBVEFbNzowXSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjc6XHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFx1MDAyNmxvKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjI4LVx0LyogUmVhZCBEQVRBWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEocHJpdiwgXHUwMDI2aGkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2Olx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cdFx0XHRcdCB1MzIgYWRkciwgdTMyIGRhdGEsIGJvb2wgYWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNTA6XHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTItXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBwcml2LVx1MDAzZXZhcmlhbnQtXHUwMDNlY21kX3dyaXRlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Ny1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXHQvKiBXcml0ZSBEQVRBWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cdGlmIChhY2spXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NDpcdFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAzZVx1MDAzZSA4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XHRcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2socHJpdiwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODItIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjg0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjkzOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1Olx0cmV0dXJuIHJlYWx0ZWtfc21pX3dyaXRlX3JlZyhjdHgsIHJlZywgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAyOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDQ6XHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwOTpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzExOlx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcdC5yZWdfcmVhZCA9IHJlYWx0ZWtfc21pX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMyMDogKiByZWFsdGVrX3NtaV9wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIFNNSS1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMy1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzUtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzOC1cdGlmIChJU19FUlIocHJpdikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjMtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NzogKiByZWFsdGVrX3NtaV9yZW1vdmUoKSAtIFJlbW92ZSB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM3ODpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM4OS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDg6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfc2h1dGRvd24sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTM6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjIwOnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MjE6c3RydWN0IHJlYWx0ZWtfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD00MT1zdHJ1Y3QgcnRsODM2Nl92bGFuXzRrIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NDg6c3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTUtXHRzdHJ1Y3QgZGV2aWNlXHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjgxOlx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cdGludFx0XHRcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDYtICogQGRldGVjdDogZGV0ZWN0cyB0aGUgY2hpcHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA5Olx0aW50XHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlx0aW50XHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMTpcdGludFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEyOlx0aW50XHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTMtXHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE1LVx0XHRcdFx0ICAgdTY0ICptaWJ2YWx1ZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2Olx0aW50XHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExODpcdGludFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExOS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XHRpbnRcdCgqZ2V0X3ZsYW5fNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcdGludFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI0Olx0aW50XHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjU6XHRpbnRcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjY6XHRib29sXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjc6XHRpbnRcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjg6XHRpbnRcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyOTpcdGludFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzA6XHRpbnRcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzEtXHRcdFx0XHQgICAgICB1MzIgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlx0aW50XHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVx0XHRcdFx0XHQgdTMyIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcdGludFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcdGludFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVx0XHRcdFx0ICAgICBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3Olx0aW50XHQoKnBvcnRfc2V0X3VjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXHRcdFx0XHRcdGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XHRpbnRcdCgqcG9ydF9zZXRfbWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cdFx0XHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcdGludFx0KCpwb3J0X3NldF9iY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVx0XHRcdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlx0aW50XHQoKmwyX2FkZF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ2Olx0aW50XHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ3LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5Olx0aW50XHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlx0XHRcdFx0ICBpbnQgcG9ydCwgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlx0aW50XHQoKmwyX2FkZF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlx0aW50XHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU1Olx0aW50XHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU2Olx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTc6XHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1OC1cdFx0XHQgICAgIHUxNiB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1OTpcdGludFx0KCpwaHlfcmVhZF9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXHRcdFx0XHRpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjE6XHRpbnRcdCgqcGh5X3dyaXRlX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2Mi1cdFx0XHRcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2NTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjYtXHRjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgKmRzX29wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjc6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjgtXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3OC0vKiBSVEw4MzY2IGxpYnJhcnkgaGVscGVycyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3OTppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODA6aW50IHJ0bDgzNjZfc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHZpZCwgdTMyIG1lbWJlcixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xODEtXHRcdCAgICAgdTMyIHVudGFnLCB1MzIgZmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODI6aW50IHJ0bDgzNjZfc2V0X3B2aWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgzLVx0XHQgICAgIHVuc2lnbmVkIGludCB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NDppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODU6aW50IHJ0bDgzNjZfZW5hYmxlX3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NjppbnQgcnRsODM2Nl9yZXNldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4Ny1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTU9dm9pZCBydGw4MzY2X2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTk3OmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDY1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBSVEw4M3h4IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcnRsODN4eGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBydGw4M3h4LmNgIGZpbGUuIFRoZSBlbnRyeSBwb2ludCBzZWVtcyB0byBiZSBgcnRsODN4eF9wcm9iZSgpYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgZGV0ZWN0ZWQgYW5kIGluaXRpYWxpemVkLiBTbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBydGw4M3h4LmNgIGFuZCBzdGFydCB0cmFjaW5nIHRocm91Z2ggdGhlIHByb2JlIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkLCBob3cgdGhlIHJlZ2lzdGVyIHNwYWNlIGlzIG1hcHBlZCwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaGVyZSwgdGhlIHNlcXVlbmNlIG9mIGNvbW1hbmRzLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgbW9kZWxzLCBpZiBpdCBkb2VzIGF0IGFsbC4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyB0aGlzIGRyaXZlci4gSSBob3BlIHRoZSBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGJlY2F1c2UgSSBoYXZlIGEgZmVlbGluZyBJJiMzOTtsbCBiZSBoZXJlIGZvciBhIGJpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCYjNDM7XG4gICAyOlx0XG4gICAzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7cmVhbHRlay5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG4gIDEyOlx0XG4gIDEzOlx0LyoqXG4gIDE0Olx0ICogcnRsODN4eF9sb2NrKCkgLSBMb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXG4gIDE1Olx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcbiAgMTY6XHQgKlxuICAxNzpcdCAqIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHJlZ21hcCB0byBiZSB1c2VkIGFzIHRoZSBsb2NrIGZ1bmN0aW9uLlxuICAxODpcdCAqIEl0IGlzIGFsc28gdXNlZCBleHRlcm5hbGx5IHRvIGJsb2NrIHJlZ21hcCBiZWZvcmUgZXhlY3V0aW5nIG11bHRpcGxlXG4gIDE5Olx0ICogb3BlcmF0aW9ucyB0aGF0IG11c3QgaGFwcGVuIGluIHNlcXVlbmNlICh3aGljaCB3aWxsIHVzZVxuICAyMDpcdCAqIHJlYWx0ZWtfcHJpdi5tYXBfbm9sb2NrIGluc3RlYWQpLlxuICAyMTpcdCAqXG4gIDIyOlx0ICogQ29udGV4dDogQ2FuIHNsZWVwLiBIb2xkcyBwcml2LVx1MDAzZW1hcF9sb2NrIGxvY2suXG4gIDIzOlx0ICogUmV0dXJuOiBub3RoaW5nXG4gIDI0Olx0ICovXG4gIDI1Olx0dm9pZCBydGw4M3h4X2xvY2sodm9pZCAqY3R4KVxuICAyNjpcdHtcbiAgMjc6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG4gIDI4Olx0XG4gIDI5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWFwX2xvY2spO1xuICAzMDpcdH1cbiAgMzE6XHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X2xvY2ssIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAgMzI6XHRcbiAgMzM6XHQvKipcbiAgMzQ6XHQgKiBydGw4M3h4X3VubG9jaygpIC0gVW5sb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXG4gIDM1Olx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcbiAgMzY6XHQgKlxuICAzNzpcdCAqIFRoaXMgZnVuY3Rpb24gdW5sb2NrcyB0aGUgbG9jayBhY3F1aXJlZCBieSBydGw4M3h4X2xvY2suXG4gIDM4Olx0ICpcbiAgMzk6XHQgKiBDb250ZXh0OiBSZWxlYXNlcyBwcml2LVx1MDAzZW1hcF9sb2NrIGxvY2suXG4gIDQwOlx0ICogUmV0dXJuOiBub3RoaW5nXG4gIDQxOlx0ICovXG4gIDQyOlx0dm9pZCBydGw4M3h4X3VubG9jayh2b2lkICpjdHgpXG4gIDQzOlx0e1xuICA0NDpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbiAgNDU6XHRcbiAgNDY6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAgNDc6XHR9XG4gIDQ4Olx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF91bmxvY2ssIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAgNDk6XHRcbiAgNTA6XHRzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXG4gIDUxOlx0e1xuICA1MjpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuICA1MzpcdFxuICA1NDpcdFx0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKHByaXYsIGFkZHIsIHJlZ251bSk7XG4gIDU1Olx0fVxuICA1NjpcdFxuICA1NzpcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXG4gIDU4Olx0XHRcdFx0XHQgICB1MTYgdmFsKVxuICA1OTpcdHtcbiAgNjA6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1OTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIHJ0bDgzeHguYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgYSBzcGVjaWZpYyBzY2VuYXJpby4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IGludG8gYHJ0bDgzeHguY2AsIGZvY3VzaW5nIG9uIGxpbmVzIDEyMCB0aHJvdWdoIDIyMC4gSSByZW1lbWJlciB0aGF0IHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgdmFyaW91cyBQSFkgcmVnaXN0ZXJzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBwYXJ0IHdoZXJlIGl0IHNldHMgdXAgdGhlIGluaXRpYWwgbGluayBzZXR0aW5ncyBmb3IgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgaXQgaGFuZGxlcyB0aGUgYXV0by1uZWdvdGlhdGlvbiwgY29uc2lkZXJpbmcgd2hhdCBoYXMgYmVlbiByZXBvcnRlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyByZWdpc3RlciBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTIwOlx0XG4gMTIxOlx0XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG4gMTIyOlx0XHRpZiAocmV0KSB7XG4gMTIzOlx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3VuYWJsZSB0byByZWdpc3RlciBNRElPIGJ1cyAlc1xcblwmIzM0OyxcbiAxMjQ6XHRcdFx0XHRidXMtXHUwMDNlaWQpO1xuIDEyNTpcdFx0XHRnb3RvIGVycl9wdXRfbm9kZTtcbiAxMjY6XHRcdH1cbiAxMjc6XHRcbiAxMjg6XHRcdHByaXYtXHUwMDNldXNlcl9taWlfYnVzID0gYnVzO1xuIDEyOTpcdFxuIDEzMDpcdGVycl9wdXRfbm9kZTpcbiAxMzE6XHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuIDEzMjpcdFxuIDEzMzpcdFx0cmV0dXJuIHJldDtcbiAxMzQ6XHR9XG4gMTM1Olx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9zZXR1cF91c2VyX21kaW8sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAxMzY6XHRcbiAxMzc6XHQvKipcbiAxMzg6XHQgKiBydGw4M3h4X3Byb2JlKCkgLSBwcm9iZSBhIFJlYWx0ZWsgc3dpdGNoXG4gMTM5Olx0ICogQGRldjogdGhlIGRldmljZSBiZWluZyBwcm9iZWRcbiAxNDA6XHQgKiBAaW50ZXJmYWNlX2luZm86IHNwZWNpZmljIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGluZm8uXG4gMTQxOlx0ICpcbiAxNDI6XHQgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHJlYWx0ZWtfcHJpdiBhbmQgcmVhZHMgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdHJlZVxuIDE0MzpcdCAqIG5vZGUuIFRoZSBzd2l0Y2ggaXMgaGFyZCByZXNldHRlZCBpZiBhIG1ldGhvZCBpcyBwcm92aWRlZC5cbiAxNDQ6XHQgKlxuIDE0NTpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cbiAxNDY6XHQgKiBSZXR1cm46IFBvaW50ZXIgdG8gdGhlIHJlYWx0ZWtfcHJpdiBvciBFUlJfUFRSKCkgaW4gY2FzZSBvZiBmYWlsdXJlLlxuIDE0NzpcdCAqXG4gMTQ4Olx0ICogVGhlIHJlYWx0ZWtfcHJpdiBwb2ludGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZnJlZWQgYXMgaXQgaXMgY29udHJvbGxlZCBieVxuIDE0OTpcdCAqIGRldnJlcy5cbiAxNTA6XHQgKi9cbiAxNTE6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpcbiAxNTI6XHRydGw4M3h4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldixcbiAxNTM6XHRcdCAgICAgIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvICppbnRlcmZhY2VfaW5mbylcbiAxNTQ6XHR7XG4gMTU1Olx0XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50ICp2YXI7XG4gMTU2Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuIDE1NzpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmMgPSB7XG4gMTU4Olx0XHRcdC5yZWdfYml0cyA9IDEwLCAvKiBBNC4uQTAgUjQuLlIwICovXG4gMTU5Olx0XHRcdC52YWxfYml0cyA9IDE2LFxuIDE2MDpcdFx0XHQucmVnX3N0cmlkZSA9IDEsXG4gMTYxOlx0XHRcdC5tYXhfcmVnaXN0ZXIgPSAweGZmZmYsXG4gMTYyOlx0XHRcdC5yZWdfZm9ybWF0X2VuZGlhbiA9IFJFR01BUF9FTkRJQU5fQklHLFxuIDE2MzpcdFx0XHQucmVnX3JlYWQgPSBpbnRlcmZhY2VfaW5mby1cdTAwM2VyZWdfcmVhZCxcbiAxNjQ6XHRcdFx0LnJlZ193cml0ZSA9IGludGVyZmFjZV9pbmZvLVx1MDAzZXJlZ193cml0ZSxcbiAxNjU6XHRcdFx0LmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLFxuIDE2NjpcdFx0XHQubG9jayA9IHJ0bDgzeHhfbG9jayxcbiAxNjc6XHRcdFx0LnVubG9jayA9IHJ0bDgzeHhfdW5sb2NrLFxuIDE2ODpcdFx0fTtcbiAxNjk6XHRcdGludCByZXQ7XG4gMTcwOlx0XG4gMTcxOlx0XHR2YXIgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiAxNzI6XHRcdGlmICghdmFyKVxuIDE3MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAxNzQ6XHRcbiAxNzU6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplX2FkZChzaXplb2YoKnByaXYpLCB2YXItXHUwMDNlY2hpcF9kYXRhX3N6KSxcbiAxNzY6XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4gMTc3Olx0XHRpZiAoIXByaXYpXG4gMTc4Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDE3OTpcdFxuIDE4MDpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VtYXBfbG9jayk7XG4gMTgxOlx0XHRpZiAocmV0KVxuIDE4MjpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE4MzpcdFxuIDE4NDpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2V2bGFuX2xvY2spO1xuIDE4NTpcdFx0aWYgKHJldClcbiAxODY6XHRcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiAxODc6XHRcbiAxODg6XHRcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFx1MDAyNnByaXYtXHUwMDNlbDJfbG9jayk7XG4gMTg5Olx0XHRpZiAocmV0KVxuIDE5MDpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE5MTpcdFxuIDE5MjpcdFx0cmMubG9ja19hcmcgPSBwcml2O1xuIDE5MzpcdFx0cHJpdi1cdTAwM2VtYXAgPSBkZXZtX3JlZ21hcF9pbml0KGRldiwgTlVMTCwgcHJpdiwgXHUwMDI2cmMpO1xuIDE5NDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZW1hcCkpIHtcbiAxOTU6XHRcdFx0cmV0ID0gUFRSX0VSUihwcml2LVx1MDAzZW1hcCk7XG4gMTk2Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDE5NzpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE5ODpcdFx0fVxuIDE5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA1NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUTDgzeHggRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcnRsODN4eF9wcm9iZSgpYCBuZWVkcyBgb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGFuIE9GIChEZXZpY2UgVHJlZSkgZGV2aWNlLCBsaWtlbHkgYSBwbGF0Zm9ybSBkcml2ZXIgb3IgTURJTyBkcml2ZXIuIExvb2tpbmcgYXQgdGhlIGBydGw4MzY1bWJfb2ZfbWF0Y2hgIHRhYmxlLCBpdCYjMzk7cyBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoLiBUaGlzIGRyaXZlciwgYXMgSSByZWNhbGwsIHRhbGtzIHRvIHRoZSBzd2l0Y2ggaGFyZHdhcmUgdmlhIFNNSSAoR1BJTykgb3IgTURJTy4gSXQgYWJzb2x1dGVseSByZXF1aXJlcyB0aGF0IHRoZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcCBiZSBjb25uZWN0ZWQgYW5kIHJlc3BvbmRpbmcuCgpOb3csIHRoZSBjcnVjaWFsIHBvaW50OiBXZSYjMzk7cmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgc3BlY2lmaWNhbGx5LCBRRU1VIG9yIHBlcmhhcHMgR0NFIG9uIHg4Nl82NC9hbWQ2NC4gSSBrbm93LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHRleHQsIHRoYXQgdGhlcmUmIzM5O3MgKm5vKiBlbXVsYXRlZCBSVEw4MzY1TUIgRFNBIHN3aXRjaCBjaGlwIGluIFFFTVUuIERTQSBzd2l0Y2hlcywgYW5kIGJ5IGV4dGVuc2lvbiBoYXJkd2FyZSBzd2l0Y2ggY2hpcHMgbGlrZSB0aGUgUmVhbHRlayBSVEw4MzY1TUIgb3IgUlRMODM2NlJCLCBjYW5ub3QgYmUgcHJvYmVkIHdpdGhvdXQgdGhhdCBwaHlzaWNhbCBwcmVzZW5jZSwgdGhlIGNvcnJlY3QgT0YgZGV2aWNldHJlZSBub2RlLCBhbmQsIGNyaXRpY2FsbHksIGEgaGFyZHdhcmUgcmVzcG9uc2UuCgpUaGlzIHNpdHVhdGlvbiBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgc2NlbmFyaW8uIFRoZSB0ZXh0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIFNtYXJ0TklDcy4gSWYgdGhleSBuZWVkIGEgY2FyZCBvciBBU0lDLCB0aGVuIFFFTVUgaXNuJiMzOTt0IGdvaW5nIHRvIGVtdWxhdGUgdGhlbS4KCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBpcyBzaW1pbGFybHkgaW5hY2Nlc3NpYmxlLiBMZXQmIzM5O3MgbG9vayBhdCBgcmVhbHRla19tYWluLmNgLiBBaCwgdGhlIGBSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldGAgUEhZIHdpdGggSUQgYDB4MDAxY2M5NDJgIGlzIHJlZ2lzdGVyZWQgdGhlcmUuIFBIWSBkcml2ZXJzIHByb2JlIGJhc2VkIG9uIE1ESU8gYnVzIHJlYWRzIG9mIE1JSV9QSFlTSUQxLzIgYW5kIG1hdGNoaW5nIHRoZSBJRC4gQnV0LCBhZ2FpbiwgdGhlcmUmIzM5O3Mgbm8gZW11bGF0aW9uIGhlcmUuIFFFTVUgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIFJlYWx0ZWsgUlRMODM2NU1CIFBIWXMgb3IgRFNBIHN3aXRjaGVzLgoKVGhlIGNvcmUgcHJvYmxlbSwgZnJvbSBhIHByb2JpbmcgcGVyc3BlY3RpdmUgaXMsIHdoZXJlJiMzOTtzIHRoZSBidXMgYW5kIHdoZXJlJiMzOTtzIHRoZSByZXNwb25zZT8gSXQgc2VlbXMgdW5saWtlbHkuCgpMZXQmIzM5O3MgZG8gb25lIGxhc3QgY2hlY2sgdGhvdWdoLCB0byBtYWtlIGFic29sdXRlbHkgc3VyZTogSXMgdGhlcmUgKmFueSogdmlydHVhbCBidXMgb3Igc29mdHdhcmUgZW11bGF0aW9uIHRoYXQgY291bGQgaW52b2tlIHRoZXNlIGNhbGxiYWNrcywgZXZlbiBhIERTQSBtb2NrIGRyaXZlcj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXJlIGlzbiYjMzk7dCBzb21ldGhpbmcgc25lYWt5IGluIHRoZSBrZXJuZWwgdGhhdCB3b3VsZCBnaXZlIHRoZSAqYXBwZWFyYW5jZSogb2YgaGFyZHdhcmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYW55dGhpbmcgRFNBIG1vY2sgcmVsYXRlZCBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNjk1CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZHNhX2xvb3AuY2AgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciBpdCYjMzk7cyBmb2N1c2VkIG9uIHRlc3RpbmcgdGhlIERTQSBjb3JlLCBzcGVjaWZpY2FsbHkgdXNpbmcgdGhlIGBkc2FfbG9vcF9kcml2ZXJgLiBIb3dldmVyLCBpdCYjMzk7cyBleHBsaWNpdGx5ICpub3QqIHVzaW5nIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggb3IgYHJ0bDgzNjVtYmAgZHJpdmVycyBpbiBhICYjMzQ7cmVhbCYjMzQ7IHdheS4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvZGUgaW4gYHJlYWx0ZWsuaGAsIGBydGw4MzY1bWJfbWFpbi5jYCwgYHJ0bDgzeHguY2AsIGFuZCBgcmVhbHRla19tYWluLmNgIOKAkyBhbGwgcmVsYXRlZCB0byB0aGUgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGFuZCBpdHMgaW50ZWdyYXRlZCBSVEw4MzY1TUItVkMgUEhZLgoKTXkgaW5pdGlhbCB0aG91Z2h0cz8gVGhpcyBzY3JlYW1zICYjMzQ7ZGVkaWNhdGVkIGhhcmR3YXJlIHJlcXVpcmVkLiYjMzQ7IFRoZXNlIFJlYWx0ZWsgY29tcG9uZW50cyBhcmUgZGVzaWduZWQgdG8gYmUgY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTywgYW5kIHJlbHkgb24gZWl0aGVyIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBlbnRyeSBvciBNRElPIGJ1cyBjb25maWd1cmF0aW9uLiBJbXBvcnRhbnRseSwgbmVpdGhlciB0aGUgc3dpdGNoIEFTSUMgbm9yIHRoZSBQSFkgYXJlIGVtdWxhdGVkIGluIHR5cGljYWwgdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50LgoKTGV0IG1lIGJyZWFrIGRvd24gdGhlIHJlYXNvbmluZyBzeXN0ZW1hdGljYWxseToKCiogICAqKlVucmVhY2hhYmxlIEhhcmR3YXJlOioqIFRoZSBSVEw4MzY1TUIgc3dpdGNoIGFuZCBQSFkgYXJlICpwaHlzaWNhbGx5KiB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBzb2Z0d2FyZSwgaXQgY2Fubm90IGludGVyYWN0IHdpdGggbm9uLWV4aXN0ZW50IGhhcmR3YXJlLgoqICAgKipXb3J0aEZ1enppbmcgRmxhZzoqKiBHaXZlbiB0aGUgbGFjayBvZiBoYXJkd2FyZSBwcmVzZW5jZSwgdGhlcmUmIzM5O3Mgbm8gcmVhbGlzdGljIGNoYW5jZSB0aGF0IGZ1enppbmcgd2lsbCBwcm9kdWNlIGFueSBtZWFuaW5nZnVsIHJlc3VsdHMuIFRoZXJlZm9yZSwgc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRlY2lzaW9uLgoqICAgKipDb25maWd1cmF0aW9uIENvbmNlcm5zOioqIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBpcnJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhleSBhcmUgZWZmZWN0aXZlbHkgbnVsbCBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LgoKVGhlIHBhdGNoJiMzOTtzIGFjdHVhbCBmdW5jdGlvbiDigJMgYWRkaW5nIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhbmQgRUVFIHN1cHBvcnQg4oCTIGlzIGlycmVsZXZhbnQuIFRoZSBoYXJkd2FyZSYjMzk7cyBpbmFjY2Vzc2liaWxpdHkgaXMgdGhlIGtleSBkZXRlcm1pbmVyLiBXZSBhcmUgdGFsa2luZyBhYm91dCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyBhbmQgUEhZIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYW5kIHByb2JlZCB2aWEgRGV2aWNlIFRyZWUuIFRoZSBQSFkgSUQgc3BlY2lmaWNhbGx5IG1hcHMgdG8gUlRMODM2NU1CLVZDLiBHaXZlbiB0aGUgaGFyZHdhcmUmIzM5O3MgYWJzZW5jZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gY2FsbGluZyB0aGlzIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzoyOC45OTU1OTM2OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyMzkwMzQzMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjI4Ljk5NTU5ODIzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4MTcwMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjAzOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaCBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaFxcbmluZGV4IDc1YTEyNzU0NWU1ZGQuLjFjMGNhNmRhZjU0NTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXFxuQEAgLTE1Niw2ICsxNTYsMTAgQEAgc3RydWN0IHJlYWx0ZWtfb3BzIHtcXG4gXFx0aW50XFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XFxuIFxcdGludFxcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbiBcXHRcXHRcXHQgICAgIHUxNiB2YWwpO1xcbitcXHRpbnRcXHQoKnBoeV9yZWFkX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHRpbnQgcmVnbnVtKTtcXG4rXFx0aW50XFx0KCpwaHlfd3JpdGVfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuK1xcdFxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcXG4gfTtcXG4gXFxuIHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbmluZGV4IDRjMzA1NzU2MTE2Y2MuLjk5OGY2YjJhZDE0MDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcXG5AQCAtMTAxLDYgKzEwMSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfdmxhbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInJlYWx0ZWsuaFxcXCJcXG5AQCAtMjAyLDYgKzIwMywxMCBAQFxcbiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX1BIWVJFR19CQVNFXFx0XFx0MHhBNDAwXFxuIFxcbisjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEVcXHRcXHRcXHQweEE1QzRcXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFZcXHRcXHRcXHQweEE1RDBcXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9MUEFCTEVcXHRcXHQweEE1RDJcXG4rXFxuIC8qIEV4dGVybmFsIGludGVyZmFjZSBwb3J0IG1vZGUgdmFsdWVzIC0gdXNlZCBpbiBESUdJVEFMX0lOVEVSRkFDRV9TRUxFQ1QgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXFx0XFx0MFxcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXFx0XFx0MVxcbkBAIC0xMDQwLDYgKzEwNDUsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHQgIGludCByZWdudW0pXFxuK3tcXG4rXFx0dTMyIG9jcF9hZGRyO1xcbitcXHR1MTYgdmFsO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHBoeSBcXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fUENTX0VFRV9BQkxFKVxcbitcXHRcXHRvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEU7XFxuK1xcdGVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuK1xcdFxcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xcbitcXHRlbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxcbitcXHRcXHRvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRTtcXG4rXFx0ZWxzZVxcbitcXHRcXHQvKiBPbmx5IHRoZSBFRUUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQ7IG90aGVycyByZWFkIGFzIDAsIGFzIHRoZVxcbitcXHRcXHQgKiBoYXJkd2FyZSBkb2VzLCBzbyB0aGUgZ2VuZXJpYyBNTUQgY29kZSBpcyBub3QgdHJpcHBlZCB1cCBieVxcbitcXHRcXHQgKiBhbiBlcnJvci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZhaWxlZCB0byByZWFkIFBIWSVkIE9DUCAlMDR4LCByZXQgJWRcXFxcblxcXCIsIHBoeSwgb2NwX2FkZHIsXFxuK1xcdFxcdFxcdHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB2YWw7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbit7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGh5IFxcdTAwM2UgUlRMODM2NU1CX1BIWUFERFJNQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0LyogT25seSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgcmVnaXN0ZXIgaXMgd3JpdGFibGU7IHdyaXRlcyB0byBvdGhlclxcbitcXHQgKiByZWdpc3RlcnMgYXJlIGlnbm9yZWQsIGFzIHRoZSBoYXJkd2FyZSBkb2VzLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRldmFkICE9IE1ESU9fTU1EX0FOIHx8IHJlZ251bSAhPSBNRElPX0FOX0VFRV9BRFYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHZhbCk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWlsZWQgdG8gd3JpdGUgUEhZJWQgT0NQICUwNHgsIHJldCAlZFxcXFxuXFxcIiwgcGh5LFxcbitcXHRcXHRcXHRSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxcbiBydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxcbiB7XFxuQEAgLTE2MzksNiArMTcwNCwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJLFxcbiBcXHRcXHRcXHQgIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0LyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzXFxuK1xcdFxcdCAqIExQSSBvbiBpdHMgb3duLCBzbyBqdXN0IGFkdmVydGlzZSBMUEkgYXdhcmVuZXNzIHRvIHBoeWxpbmsuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRtZW1jcHkoY29uZmlnLVxcdTAwM2VscGlfaW50ZXJmYWNlcywgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyxcXG4rXFx0XFx0ICAgICAgIHNpemVvZihjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzKSk7XFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7XFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlZWVlX2VuYWJsZWRfZGVmYXVsdCA9IHRydWU7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG5AQCAtMzI3NSwxOCArMzM0OCw2NiBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9kZXRlY3Qoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcClcXG4re1xcbitcXHQvKiBUaGUgaGFyZHdhcmUgbWFuYWdlcyBMUEkgaXRzZWxmOyB0aGVyZSBpcyBubyBNQUMtbGV2ZWwgTFBJIGNvbnRyb2wuXFxuK1xcdCAqIFRoaXMgY2FsbGJhY2sgb25seSBzaWduYWxzIExQSSBhd2FyZW5lc3MgdG8gcGh5bGluay5cXG4rXFx0ICovXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuK3tcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4gXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuIFxcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG4gXFx0Lm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLFxcbiBcXHQubWFjX2xpbmtfdXAgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua191cCxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXFxuK1xcdC5tYWNfZGlzYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXFxuIH07XFxuIFxcbitzdGF0aWMgYm9vbCBydGw4MzY1bWJfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4re1xcbitcXHQvKiBPbmx5IGludGVncmF0ZWQtUEhZIHBvcnRzIHN1cHBvcnQgRUVFLCBub3QgdGhlIGV4dGVybmFsIFJHTUlJIHBvcnRzLiAqL1xcbitcXHRyZXR1cm4gIXJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoZHMtXFx1MDAzZXByaXYsIHBvcnQpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG4re1xcbitcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHQvKiBUaGUgb25seSBMUEkgdGltaW5nIGNvbnRyb2wgKHR4X2xwaV90aW1lcikgaXMgYSBzaW5nbGUgZ2xvYmFsXFxuK1xcdCAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpc1xcbitcXHQgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpc1xcbitcXHQgKiBkcml2ZW4gdGhyb3VnaCB0aGUgUEhZIGFkdmVydGlzZW1lbnQuIFJlamVjdCB0aGUgcGVyLXBvcnQgVFggTFBJIGtub2JzXFxuK1xcdCAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uXFxuK1xcdCAqL1xcbitcXHRpZiAoIWUtXFx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XFxuK1xcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZGlzYWJsaW5nIEVFRSBUWCBMUEkgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGUtXFx1MDAzZXR4X2xwaV90aW1lcikge1xcbitcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcInNldHRpbmcgdGhlIEVFRSBUWCBMUEkgdGltZXIgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgcnRsODM2NW1iX3N3aXRjaF9vcHMgPSB7XFxuIFxcdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXFxuIFxcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXFxuIFxcdC5zZXR1cCA9IHJ0bDgzNjVtYl9zZXR1cCxcXG4gXFx0LnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLFxcbitcXHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXFxuK1xcdC5zZXRfbWFjX2VlZSA9IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZSxcXG4gXFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcXG4gXFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXFxuIFxcdC5wb3J0X2JyaWRnZV9sZWF2ZSA9IHJ0bDgzeHhfcG9ydF9icmlkZ2VfbGVhdmUsXFxuQEAgLTMzMzIsNiArMzQ1Myw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4gXFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxcbiBcXHQucGh5X3JlYWQgPSBydGw4MzY1bWJfcGh5X3JlYWQsXFxuIFxcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxcbitcXHQucGh5X3JlYWRfYzQ1ID0gcnRsODM2NW1iX3BoeV9yZWFkX2M0NSxcXG4rXFx0LnBoeV93cml0ZV9jNDUgPSBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXFxuaW5kZXggODEyMWVjMTJmZDhiYS4uYWQ0MmMwNWQwYTg4ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcXG5AQCAtNjIsNiArNjIsMjIgQEAgc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG4gXFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtKVxcbit7XFxuK1xcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbit7XFxuK1xcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfd3JpdGVfYzQ1KHByaXYsIGFkZHIsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcXG4gICogQGRzOiBEU0Egc3dpdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHVzZXJfbWlpX2J1c1xcbkBAIC05NSw2ICsxMTEsMTAgQEAgaW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0YnVzLVxcdTAwM2VuYW1lID0gXFxcIlJlYWx0ZWsgdXNlciBNSUlcXFwiO1xcbiBcXHRidXMtXFx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xcbiBcXHRidXMtXFx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkX2M0NSlcXG4rXFx0XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1O1xcbitcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfd3JpdGVfYzQ1KVxcbitcXHRcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NTtcXG4gXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXM6dXNlcl9taWlcXFwiLCBkZXZfbmFtZShwcml2LVxcdTAwM2VkZXYpKTtcXG4gXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBwcml2LVxcdTAwM2VkZXY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggMTc3YjYyYTdiMmQxNi4uYWQ4MDE3ZTkxYjRmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTMzODgsNiArMzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcXG4gXFx0fSwge1xcbiBcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk0MiksXFxuIFxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbitcXHRcXHQucmVhZF9tbWRcXHQ9IGdlbnBoeV9yZWFkX21tZF9jNDUsXFxuK1xcdFxcdC53cml0ZV9tbWRcXHQ9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxcbiBcXHRcXHQvKiBJbnRlcnJ1cHQgaGFuZGxpbmcgYW5hbG9nb3VzIHRvIFJUTDgzNjZSQiAqL1xcbiBcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGdlbnBoeV9ub19jb25maWdfaW50cixcXG4gXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBnZW5waHlfaGFuZGxlX2ludGVycnVwdF9ub19hY2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjI5LjQ1NDQzNzg0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTAyNzgwMTc2NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmggYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbmluZGV4IDc1YTEyNzU0NWU1ZGQuLjFjMGNhNmRhZjU0NTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaFxuQEAgLTE1Niw2ICsxNTYsMTAgQEAgc3RydWN0IHJlYWx0ZWtfb3BzIHtcbiBcdGludFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XG4gXHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCAgICAgdTE2IHZhbCk7XG4rXHRpbnRcdCgqcGh5X3JlYWRfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4rXHRcdFx0XHRpbnQgcmVnbnVtKTtcbitcdGludFx0KCpwaHlfd3JpdGVfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gfTtcbiBcbiBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNGMzMDU3NTYxMTZjYy4uOTk4ZjZiMmFkMTQwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMDEsNiArMTAxLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfdmxhbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJyZWFsdGVrLmhcIlxuQEAgLTIwMiw2ICsyMDMsMTAgQEBcbiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi9cbiAjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfUEhZUkVHX0JBU0VcdFx0MHhBNDAwXG4gXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFXHRcdFx0MHhBNUM0XG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFZcdFx0XHQweEE1RDBcbisjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRVx0XHQweEE1RDJcbitcbiAvKiBFeHRlcm5hbCBpbnRlcmZhY2UgcG9ydCBtb2RlIHZhbHVlcyAtIHVzZWQgaW4gRElHSVRBTF9JTlRFUkZBQ0VfU0VMRUNUICovXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXHRcdDBcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXHRcdDFcbkBAIC0xMDQwLDYgKzEwNDUsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWRfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbitcdFx0XHRcdCAgaW50IHJlZ251bSlcbit7XG4rXHR1MzIgb2NwX2FkZHI7XG4rXHR1MTYgdmFsO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX1BDU19FRUVfQUJMRSlcbitcdFx0b2NwX2FkZHIgPSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFO1xuK1x0ZWxzZSBpZiAoZGV2YWQgPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXG4rXHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xuK1x0ZWxzZSBpZiAoZGV2YWQgPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUpXG4rXHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFO1xuK1x0ZWxzZVxuK1x0XHQvKiBPbmx5IHRoZSBFRUUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQ7IG90aGVycyByZWFkIGFzIDAsIGFzIHRoZVxuK1x0XHQgKiBoYXJkd2FyZSBkb2VzLCBzbyB0aGUgZ2VuZXJpYyBNTUQgY29kZSBpcyBub3QgdHJpcHBlZCB1cCBieVxuK1x0XHQgKiBhbiBlcnJvci5cbitcdFx0ICovXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiZmFpbGVkIHRvIHJlYWQgUEhZJWQgT0NQICUwNHgsIHJldCAlZFxcblwiLCBwaHksIG9jcF9hZGRyLFxuK1x0XHRcdHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG4rXHRcdFx0XHQgICBpbnQgZGV2YWQsIGludCByZWdudW0sIHUxNiB2YWwpXG4re1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdC8qIE9ubHkgdGhlIEVFRSBhZHZlcnRpc2VtZW50IHJlZ2lzdGVyIGlzIHdyaXRhYmxlOyB3cml0ZXMgdG8gb3RoZXJcbitcdCAqIHJlZ2lzdGVycyBhcmUgaWdub3JlZCwgYXMgdGhlIGhhcmR3YXJlIGRvZXMuXG4rXHQgKi9cbitcdGlmIChkZXZhZCAhPSBNRElPX01NRF9BTiB8fCByZWdudW0gIT0gTURJT19BTl9FRUVfQURWKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLFxuK1x0XHRcdFx0ICAgICAgdmFsKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbitcdFx0XHRcImZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCIsIHBoeSxcbitcdFx0XHRSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpcbiBydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxuIHtcbkBAIC0xNjM5LDYgKzE3MDQsMTQgQEAgc3RhdGljIHZvaWQgcnRsODM2NW1iX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0ICovXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbiBcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdC8qIEludGVncmF0ZWQgUEhZcyBzdXBwb3J0IEVFRSBhdCAxMDBNLzFHOyB0aGUgaGFyZHdhcmUgbWFuYWdlc1xuK1x0XHQgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuK1x0XHQgKi9cbitcdFx0bWVtY3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcywgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLFxuK1x0XHQgICAgICAgc2l6ZW9mKGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcykpO1xuK1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7XG4rXHRcdGNvbmZpZy1cdTAwM2VlZWVfZW5hYmxlZF9kZWZhdWx0ID0gdHJ1ZTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuQEAgLTMyNzUsMTggKzMzNDgsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbitcdFx0XHRcdFx0ICAgICAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxuK3tcbitcdC8qIFRoZSBoYXJkd2FyZSBtYW5hZ2VzIExQSSBpdHNlbGY7IHRoZXJlIGlzIG5vIE1BQy1sZXZlbCBMUEkgY29udHJvbC5cbitcdCAqIFRoaXMgY2FsbGJhY2sgb25seSBzaWduYWxzIExQSSBhd2FyZW5lc3MgdG8gcGh5bGluay5cbitcdCAqL1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbit7XG4rfVxuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMgPSB7XG4gXHQubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcbiBcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcbiBcdC5tYWNfbGlua19kb3duID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbiBcdC5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLFxuK1x0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXG4rXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxuIH07XG4gXG4rc3RhdGljIGJvb2wgcnRsODM2NW1iX3N1cHBvcnRfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4re1xuK1x0LyogT25seSBpbnRlZ3JhdGVkLVBIWSBwb3J0cyBzdXBwb3J0IEVFRSwgbm90IHRoZSBleHRlcm5hbCBSR01JSSBwb3J0cy4gKi9cbitcdHJldHVybiAhcnRsODM2NW1iX2dldF9wb3J0X2V4dGludChkcy1cdTAwM2Vwcml2LCBwb3J0KTtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MzY1bWJfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbitcdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxuK3tcbitcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1xuK1x0LyogVGhlIG9ubHkgTFBJIHRpbWluZyBjb250cm9sICh0eF9scGlfdGltZXIpIGlzIGEgc2luZ2xlIGdsb2JhbFxuK1x0ICogcGVyLXNwZWVkIHJlZ2lzdGVyIHNoYXJlZCBieSBhbGwgcG9ydHMsIHNvIGl0IGNhbm5vdCBiZSBzZXQgZnJvbSB0aGlzXG4rXHQgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpc1xuK1x0ICogZHJpdmVuIHRocm91Z2ggdGhlIFBIWSBhZHZlcnRpc2VtZW50LiBSZWplY3QgdGhlIHBlci1wb3J0IFRYIExQSSBrbm9ic1xuK1x0ICogcmF0aGVyIHRoYW4gc2lsZW50bHkgaWdub3JpbmcgdGhlbS5cbitcdCAqL1xuK1x0aWYgKCFlLVx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XG4rXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiZGlzYWJsaW5nIEVFRSBUWCBMUEkgaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0aWYgKGUtXHUwMDNldHhfbHBpX3RpbWVyKSB7XG4rXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJzZXR0aW5nIHRoZSBFRUUgVFggTFBJIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0ge1xuIFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcbiBcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXG4gXHQuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsXG4gXHQudGVhcmRvd24gPSBydGw4MzY1bWJfdGVhcmRvd24sXG4rXHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXG4rXHQuc2V0X21hY19lZWUgPSBydGw4MzY1bWJfc2V0X21hY19lZWUsXG4gXHQucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLFxuIFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXG4gXHQucG9ydF9icmlkZ2VfbGVhdmUgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2xlYXZlLFxuQEAgLTMzMzIsNiArMzQ1Myw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcbiBcdC5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCxcbiBcdC5waHlfcmVhZCA9IHJ0bDgzNjVtYl9waHlfcmVhZCxcbiBcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxuK1x0LnBoeV9yZWFkX2M0NSA9IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUsXG4rXHQucGh5X3dyaXRlX2M0NSA9IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuaW5kZXggODEyMWVjMTJmZDhiYS4uYWQ0MmMwNWQwYTg4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXG5AQCAtNjIsNiArNjIsMjIgQEAgc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcbiBcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGUocHJpdiwgYWRkciwgcmVnbnVtLCB2YWwpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgICAgICBpbnQgcmVnbnVtKVxuK3tcbitcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgICAgICAgaW50IHJlZ251bSwgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG4rXG4rXHRyZXR1cm4gcHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3dyaXRlX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuK31cbitcbiAvKipcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcbiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzXG5AQCAtOTUsNiArMTExLDEwIEBAIGludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRidXMtXHUwMDNlbmFtZSA9IFwiUmVhbHRlayB1c2VyIE1JSVwiO1xuIFx0YnVzLVx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xuIFx0YnVzLVx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XG4rXHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWRfYzQ1KVxuK1x0XHRidXMtXHUwMDNlcmVhZF9jNDUgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NTtcbitcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGVfYzQ1KVxuK1x0XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1O1xuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXM6dXNlcl9taWlcIiwgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiBcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMzM4OCw2ICszMzg4LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0fSwge1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk0MiksXG4gXHRcdC5uYW1lXHRcdD0gXCJSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldFwiLFxuK1x0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbitcdFx0LndyaXRlX21tZFx0PSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcbiBcdFx0LyogSW50ZXJydXB0IGhhbmRsaW5nIGFuYWxvZ291cyB0byBSVEw4MzY2UkIgKi9cbiBcdFx0LmNvbmZpZ19pbnRyXHQ9IGdlbnBoeV9ub19jb25maWdfaW50cixcbiBcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBnZW5waHlfaGFuZGxlX2ludGVycnVwdF9ub19hY2ssXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzoyOS40NTQ0MzkwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTY4MzMwODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlYWx0ZWsgRFNBIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSBpdCdzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3Rvcnk6IGByZWFsdGVrLmhgLCBgcnRsODM2NW1iX21haW4uY2AsIGBydGw4M3h4LmNgLCBhbmQgZXZlbiBhIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9gIGRpcmVjdG9yeSwgYHJlYWx0ZWtfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGxpa2VseSBpbnZvbHZlcyBtb2RpZmljYXRpb25zIHRvIGEgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIHBvdGVudGlhbGx5IGZvciBSVEw4MzY1TUIsIFJUTDgzNjYgb3IgcmVsYXRlZCBtb2RlbHMuXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGhvdyBpcyB0aGlzIGRyaXZlciBib3VuZCBhbmQgcmVnaXN0ZXJlZD8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlLCBvciBjYW4gSSBnZXQgYXQgaXQgdXNpbmcgc3RhbmRhcmQgUUVNVSBvciBldmVuIHN5emthbGxlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBwYXRjaCBpcyB0ZXN0YWJsZSB3aXRob3V0IHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIEknbSBsb29raW5nIGF0IGEgbW9yZSBjb21wbGV4IHNldHVwLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3Rvcnkgd2l0aCBhIGZldyBxdWljayBncmVwcyB0byBnZXQgYSBoYW5kbGUgb24gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxOCwiT3V0cHV0VG9rZW5zIjo3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjM0LjYyMjc3Mjg5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY2NDkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcnxtb2R1bGVfbWRpb19kcml2ZXJ8bWRpb19kcml2ZXJfcmVnaXN0ZXJ8bW9kdWxlX2kyY19kcml2ZXJ8bW9kdWxlX3NwaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMDpcXHRyZXR1cm4gbWRpb19kcml2ZXJfcmVnaXN0ZXIoZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD0yMD12b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTg9c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTkte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTA6XFx0cmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihkcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNTAyPXN0YXRpYyBpbnQgcnRsODM2NW1iX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM1MDY6XFx0cmV0ID0gcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM1MDctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NjY9c3RhdGljIGludCBydGw4MzY2cmJfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODcwOlxcdHJldCA9IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnJ0bDgzNjZyYl9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzozNC42NzE0NDM0OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTQ2MjI1NTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw4MzY1TUIgRHJpdmVyIGFuZCBSZWFsdGVrIE5ldHdvcmsgSGFyZHdhcmUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgaXMgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgY29kZSBwYXRocywgcGFydGljdWxhcmx5IGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgZml0IGludG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyY2hpdGVjdHVyZS5cblxuTmV4dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgUmVhbHRlaydzIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgYW5kIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlcnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgaW5mb3JtIG1lIGFib3V0IHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlLCBhbmQgZ3VpZGUgbXkgbmV4dCBzdGVwcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0Ni4xMzM3MDE5NTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk3MjAwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxNjppZiBORVRfRFNBX1JFQUxURUtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTg6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDRfQVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjUwOlxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6NTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQikgKz0gcnRsODM2Ni5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTQtcnRsODM2Ni1vYmpzIFxcdFxcdFxcdFxcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE2LXJ0bDgzNjYtb2JqcyBcXHRcXHRcXHRcXHQrPSBydGw4MzY2cmItbGVkcy5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xOS1ydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJTykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMjojZWxzZSAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaD00Nz1lbnVtIHJ0bDgzNjZfbGVkZ3JvdXBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC02Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo2ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9OTQ9c3RydWN0IHJ0bDgzNjZyYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC05Ni1cXHRib29sIHB2aWRfZW5hYmxlZFtSVEw4MzY2UkJfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk4LVxcdHN0cnVjdCBydGw4MzY2cmJfbGVkIGxlZHNbUlRMODM2NlJCX05VTV9QT1JUU11bUlRMODM2NlJCX05VTV9MRURHUk9VUFNdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0Ni40MzA5MTAwMTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzM1MjIxMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgUmVhbHRlayBEU0EgU3dpdGNoIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gYE5FVF9EU0FfUkVBTFRFS2AuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYWxsIGFib3V0IHRob3NlIFJlYWx0ZWsgUlRMODM2NU1CLCBSVEw4MzY2UkIsIGFuZCBzaW1pbGFyIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHN0dWZmIHdpdGhvdXQgaGF2aW5nIHRoZSAqcmVhbCogaGFyZHdhcmU/IENhbiBJIHByb2JlIHRoZXNlIERTQSBzd2l0Y2hlcyBvciB0aGVpciBQSFkgZHJpdmVycyBpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgc3R1Y2sgbmVlZGluZyBhIHBoeXNpY2FsIHNldHVwP1xuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3Qgd2FzdGluZyBteSB0aW1lLiBBcmUgdGhlcmUgYW55IG1vY2sgZGV2aWNlcyBvciB2aXJ0dWFsIERTQSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBJJ20gb3Zlcmxvb2tpbmc/IE9yIGlzIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggZXNzZW50aWFsbHksIGJ5IGRlc2lnbiwgdGllZCB0byBoYXJkd2FyZSB0aGF0IEkgY2FuJ3QgZW11bGF0ZT9cblxuQWhhISBMZXQncyBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIGRvY3VtZW50IEkgaGF2ZSBoYW5keS4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5SaWdodCwgdGhlIG5vdGUgb24gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBrZXkuIEl0IGxpc3RzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgZXRjLikgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBiZWNhdXNlIHRoZXkgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBORVRfRFNBX1JFQUxURUtgIG9uZSBvZiB0aG9zZT8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuXG5cbkFscmlnaHQsIGEgcXVpY2sgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBjb2RlLiBIb3cgYXJlIHRoZXNlIFJUTDgzNjVNQiAvIFJlYWx0ZWsgRFNBIHN3aXRjaGVzIGNvbm5lY3RlZCwgYW55d2F5PyBJJ2xsIGNoZWNrIGBydGw4MzY1bWJfbWFpbi5jYCwgYHJlYWx0ZWstc21pLmNgLCBhbmQgYHJlYWx0ZWstbWRpby5jYCB0byBzZWUgaWYgSSBjYW4gZ2xlYW4gYW55IGNsdWVzLiBIb3BlZnVsbHksIEknbGwgZmluZCBhIGhpbnQgYXMgdG8gdGhlaXIgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyOTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDM6NDkuNzY2MTMzNjY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTc5MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX21hdGNoX3RhYmxlfE1PRFVMRV9ERVZJQ0VfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDc5LX07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozNDgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzQ4Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4NC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0ODU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNDkyPXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NW1iX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDk0LVxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0OTU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ5Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY2cmJfb2ZfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jLTE4NDMtfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjZyYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xODQ2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJ0bDgzNjZyYl9zbWlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY2cmItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODQ5OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjZyYl9vZl9tYXRjaCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODUwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xODU2PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NnJiX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg1OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY2cmItbWRpb1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg1OTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY2cmJfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2MC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0OS44MTM3MTc3MTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTE4NTM0OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBQYXRjaDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgbWV0aWN1bG91c2x5LiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIEM0NSBNRElPIHN1cHBvcnQgYW5kIHNvbWUgRUVFIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIFJlYWx0ZWsgZHJpdmVycy4gRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyBpbiBgcmVhbHRlay5oYCB3aGljaCBhZGRzIGZ1bmN0aW9uIHBvaW50ZXIgcHJvdG90eXBlcyBmb3IgYHBoeV9yZWFkX2M0NWAgYW5kIGBwaHlfd3JpdGVfYzQ1YCB0byB0aGUgYHJlYWx0ZWtfb3BzYCBzdHJ1Y3R1cmUuIFRoZW4sIHRoZSBtZWF0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBgcnRsODM2NW1iX21haW4uY2AsIHdoZXJlIHRoZSBhY3R1YWwgQzQ1IHJlYWQvd3JpdGUgZnVuY3Rpb25zIGZvciB0aGUgUEhZIGFyZSBkZWZpbmVkLCBhbG9uZ3NpZGUgc29tZSBwaHlsaW5rIGFuZCBFRUUtcmVsYXRlZCBmdW5jdGlvbnMuICBUaGVzZSBhcmUgZ2V0dGluZyBob29rZWQgaW50byB0aGUgYHJ0bDgzNjVtYl9zd2l0Y2hfb3BzYCBhbmQgYHJ0bDgzNjVtYl9vcHNgLiBXZSBhbHNvIGhhdmUgc2ltaWxhciBpbXBsZW1lbnRhdGlvbnMgZm9yIGBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NWAsIGBydGw4M3h4X3VzZXJfbWRpb193cml0ZV9jNDVgLCBpbiBgcnRsODN4eC5jYCwgY29ubmVjdGVkIHRvIHRoZSBidXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBGaW5hbGx5LCBvdmVyIGluIGByZWFsdGVrX21haW4uY2AsIHdlJ3JlIGFkZGluZyB0aGUgYGdlbnBoeV9yZWFkX21tZF9jNDVgIGFuZCBgZ2VucGh5X3dyaXRlX21tZF9jNDVgIG1ldGhvZHMgdG8gdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBlbnRyeS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIGV2ZW4gKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHkgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gVGhlIFJUTDgzNjVNQiBpcyBhbiBleHRlcm5hbCBzd2l0Y2ggSUMsIHNvbWV0aGluZyB5b3UnZCBmaW5kIGluIGFuIGVtYmVkZGVkIHN5c3RlbS4gIEl0J3MgY29ubmVjdGVkIHRvIGEgaG9zdCBTb0MgdmlhIE1ESU8gb3IgU01JLCBhbmQgdGhleSBhcmUgdXN1YWxseSBwcm9iZWQgdmlhIERldmljZSBUcmVlLlxuXG5PbiBhbWQ2NCwgd2hpY2ggaXMgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHN0YW5kYXJkIHg4Ni9hbWQ2NCBzeXN0ZW1zICpkb24ndCogdHlwaWNhbGx5IGhhdmUgYSBEZXZpY2UgVHJlZSBzZXR1cCBmb3IgdGhlc2UgUmVhbHRlayBzd2l0Y2ggSUNzLCB1bmxlc3Mgc29tZW9uZSBoYXMgbW9ja2VkIHRoZW0gb3Igc2V0IHVwIGEgdGVzdCBlbnZpcm9ubWVudCwgYW5kIFFFTVUgY2VydGFpbmx5IGRvZXNuJ3QgZW11bGF0ZSB0aGVtLiAgU28sIHdlJ3JlIGxpa2VseSBzdHVjayBoZXJlIHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gQ291bGQgc3l6a2FsbGVyIGhlbHAgdXMgb3V0IGluIHRoaXMgcmVnYXJkPyBDYW4gaXQgaW5zdGFudGlhdGUgZWl0aGVyIE1ESU8gb3IgU01JIHBsYXRmb3JtIGRyaXZlcnMgZm9yIGEgUmVhbHRlayBzd2l0Y2ggb3IgUEhZPyBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IGtpbmQgb2YgdmlydHVhbCBidXMgb3IgdXNlcnNwYWNlIGludGVyZmFjZSwgbWF5YmUgTmV0bGluaywgb3IgYSBtb2NrIGRldmljZS5cblxuSSdsbCBjaGVjayBgcmVhbHRla19tYWluLmNgIGFnYWluLCBzcGVjaWZpY2FsbHkgdGhlIFBIWSBkcml2ZXIgcHJvYmluZyBtZWNoYW5pc20uIEEgUmVhbHRlayBQSFkgZHJpdmVyIHByb2JlcyB3aGVuIGFuIE1ESU8gYnVzIGZpbmRzIGEgUEhZIHdpdGggYSBtYXRjaGluZyBQSFkgSUQsIGFuZCBpbiB0aGlzIGNhc2UsIGl04oCZcyBgMHgwMDFjYzk0MmAuICBEb2VzIFFFTVUgbW9kZWwgKnRoYXQqIFJlYWx0ZWsgUEhZPyBOby4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGNoaXAgb3IgdGhlIFBIWS4gU28sIGNhbiB3ZSBpbnN0YW50aWF0ZSBEU0Egb3IgUEhZIGRyaXZlcnMgdmlhIHVzZXJzcGFjZSBvciBtb2NrIGRldmljZXM/ICBJIHdpbGwgYWxzbyBjaGVjayBgcmVhbHRla19zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo1Ny4zMzIyNTYwOTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDQ2MTM4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo1Ny41MzI3MzEyNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTM4MTk1ODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBydGw4MzY1bWIgUHJvYmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHJ0bDgzNjVtYmAgcHJvYmUuIFNpbmNlIEknbSBsaWtlbHkgZGVidWdnaW5nIG9yIG1vZGlmeWluZyBkcml2ZXIgYmVoYXZpb3IsIHBpbnBvaW50aW5nIGl0cyBvcmlnaW4gaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBmaW5kaW5nIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbjsgaXQncyBhYm91dCB1bmRlcnN0YW5kaW5nICp3aGVyZSogaXQncyBpbnZva2VkIGluIHRoZSBwcm9iZSBzZXF1ZW5jZSwgYW5kIHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGNhbGwuIEkgbmVlZCB0byBrbm93IHRoZSBhc3NvY2lhdGVkIGRldmljZSBzdHJ1Y3R1cmVzLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEknbSBnb2luZyB0byBzdGFydCBieSB1c2luZyBteSBzdGFuZGFyZCBzZWFyY2ggdG9vbHMsIGxpa2VseSBgZ3JlcGAgb3IgYGZpbmRgLCB0YXJnZXRpbmcgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSdsbCBuZWVkIHRvIGJlIHByZWNpc2Ugd2l0aCBteSBzZWFyY2gsIHBvdGVudGlhbGx5IGxvb2tpbmcgZm9yIHRoZSBleGFjdCBzdHJpbmcsIGNvbnNpZGVyaW5nIGNhc2luZywgYW5kIHBvdGVudGlhbGx5IGxvb2tpbmcgZm9yIHN1cnJvdW5kaW5nIGtleXdvcmRzIHN1Y2ggYXMgXCJwcm9iZVwiIG9yIFwibW9kdWxlX2luaXRcIi4gRnJvbSB0aGVyZSBJJ2xsIHN0YXJ0IHdvcmtpbmcgdGhyb3VnaCB0aGUgY3Jvc3MgcmVmZXJlbmNlcyB1bnRpbCBJIGZpbmQgZXhhY3RseSB3aGF0IEkgYW0gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDExLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDIuOTE0NjkyMjY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDgyNjg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MzY1bWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT0xNz1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSArPSBydGw4MzY1bWIub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlxcdFxcdCAgcnRsODM2NW1iX3RhYmxlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIxOlxcdFxcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XFx0XFx0ICBydGw4MzY1bWJfbDIubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5ODpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5OiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX3RhYmxlLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkzLVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkga2V5O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cXHR1OCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTE1LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEyMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXFx0dTE2IG1lbWJlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjE2NDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YywgdTE2ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjYyOiAqIHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YygpIC0gZ2V0IHRoZSBuZXh0IFVuaWNhc3QgTDIgZW50cnlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODEtICoqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODY6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoZGF0YSwgXFx1MDAyNnVjKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMjgtXFx0dWMuYWdlID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMxLVxcdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzQ1OmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXFx0dWMuYWdlID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNjE6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDQ5OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTMtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXFx0bWMuaXNfc3RhdGljID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NjY6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc0LVxcdFxcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NzU6XFx0XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXFx1MDAyNm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXFx0XFx0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlxcdFxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVxcdH0gZWxzZSBpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjEtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI2LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMxLVxcdG1jLmtleS5pdmwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzQtXFx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTUwOlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTUxLVxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVxcdH1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1Njg6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NjktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVxcdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTcxOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTktXFx0XFx0XFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIyLVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyNTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXFx0XFx0XFx0dTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6Mjg6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NC0gKiByZXF1aXJlIHRoZSBydGw4MzY3ZCB2ZW5kb3IgZHJpdmVyLiBXaXRoIGFsbCB0aGlzIHVuY2VydGFpbnR5LCB0aGUgZHJpdmVyIGhhc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMC0jaW5jbHVkZSBcXFwicnRsODN4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTExOiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMjojaW5jbHVkZSBcXFwicnRsODM2NW1iX3ZsYW4uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjYxLSAqIDMtYml0IE1TQiBmaWVsZCAoQ1RSTDEpLiBUaGUgY2hpcCByZXNldHMgdGhlbSB0byAweDFGRkZGOyBzZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MjogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjMtICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyOS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcXHRcXHQweDAwNDBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQzMDovKiBTZWUgXFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzEtI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX1ZMQU5fRUdSRVNTX01PREVfTUFTS1xcdFxcdDB4MDAzMFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzQtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzU6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM2LSAqIEBSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTDogZm9sbG93IHVudGFnIG1hc2sgaW4gVkxBTjRrIHRhYmxlIGVudHJ5XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ0NTplbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Ni1cXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4OC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4OTplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00OTAtXFx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NTE6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTItXFx0dTMyIG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTYwOnN0YXRpYyBzdHJ1Y3QgcnRsODM2NW1iX21pYl9jb3VudGVyIHJ0bDgzNjVtYl9taWJfY291bnRlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU2MS1cXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjM6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNC1cXHR1MTYgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjgtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92Y1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjMwLVxcdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzOS1cXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDgtICogb3B0aW9uLCB3aGljaCBpcyB3aGF0IFJUTDgzNjdTIHBhcnRzIHNlZW4gc28gZmFyIHJlcG9ydC4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTItXFx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjM6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2NC1cXHR7IDB4MDUwMCwgMHg4MkYwIH0sIHsgMHgwNTAxLCAweEYxOTUgfSwgeyAweDA1MDIsIDB4MzFBMiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Njk6ZW51bSBydGw4MzY1bWJfcGh5X2ludGVyZmFjZV9tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3MC1cXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjgxOiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Mi0gKiBAcG9ydDogdGhlIHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cXHUwMDNlIHsgaWQsIHN1cHBvcnRlZF9pbnRlcmZhY2VzIH0uIFRvIGJlIGVtYmVkZGVkXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODc6ICogaW4gXFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg5OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5MC1cXHRpbnQgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njk2OiAqIHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIC0gc3RhdGljIGNoaXAtc3BlY2lmaWMgaW5mb1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk3LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA1LSAqIGJ5IHRoaXMgZHJpdmVyLiBXaGVuIGFkZGluZyBzdXBwb3J0IGZvciBhbm90aGVyIGNoaXAgaW4gdGhlIGZhbWlseSwgYSBuZXdcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNjogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwODpzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDktXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzExLVxcdHUzMiBjaGlwX3ZlcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMjpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEzOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqamFtX3RhYmxlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE0LVxcdHNpemVfdCBqYW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE4LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyMC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyNy1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI4OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI5OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzM5LVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NDA6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NDE6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc0Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTMtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1NDpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1NTpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzU2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2Ni1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY3OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY4OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzcxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcyOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzMtXFx0UlRMODM2NU1CX1NUUF9TVEFURV9ESVNBQkxFRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3OTplbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4MC1cXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODU6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4Ni1cXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5MDplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5MS1cXHRSVEw4MzY1TUJfQ1BVX0ZPUk1BVF84QllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTU6ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5Ni1cXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MDE6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDItICogQGVuYWJsZTogZW5hYmxlL2Rpc2FibGUgaGFyZHdhcmUgaW5zZXJ0aW9uIG9mIENQVSB0YWcgaW4gc3dpdGNoLVxcdTAwM2VDUFUgZnJhbWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMzpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNi1cXHR1MzIgdHJhcF9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE3OlxcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4OlxcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxOTpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4gcnhfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODIwOlxcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODIxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNDogKiBzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgLSBwcml2YXRlIHBlci1wb3J0IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNS0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNi0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI3OiAqIEBzdGF0czogbGluayBzdGF0aXN0aWNzIHBvcHVsYXRlZCBieSBydGw4MzY1bWJfc3RhdHNfcG9sbCwgcmVhZHkgZm9yIGF0b21pY1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI4OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyOS0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzI6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzMy1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NDE6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0Mi0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU0OnN0cnVjdCBydGw4MzY1bWIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU1LVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTYtXFx0aW50IGlycTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NzpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4OlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cXHRzdHJ1Y3QgbXV0ZXggbWliX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjA6XFx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2MS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg2NzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzY6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzctXFx0XFx0XFx0XFx0ICAgICB1MzIgb2NwX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkwNjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNy1cXHRcXHRcXHRcXHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTQ6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE4OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMyOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTEtXFx0XFx0XFx0XFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU4OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05OTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTI6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMjA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDIxLVxcdFxcdFxcdCAgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzNDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ5LVxcdFxcdFxcdFxcdCAgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4MjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgzLVxcdFxcdFxcdFxcdCAgIGludCBkZXZhZCwgaW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwOTY6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDk3LVxcdFxcdFxcdFxcdCAgICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTA5OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEwLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTE6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEyLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTU6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE2LVxcdFxcdFxcdFxcdTAwMjZtYi1cXHUwMDNlY2hpcF9pbmZvLVxcdTAwM2VleHRpbnRzW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMTI4PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMjk6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMzAtXFx0XFx0XFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTMyLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMzM6XFx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMzQ6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ni1cXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTQ4OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0OTpcXHRcXHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE1MC1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNzctXFx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExNzg6XFx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc5LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjI3OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNDg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjg5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjkxLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyOTI6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjkzOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjk0LVxcdHUzMiBvcHRpb247XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzUtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzY6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNy0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNDQtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzQ1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzcxOnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzItXFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM3NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc2OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzctXFx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM3ODpcXHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzktXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM4OC1cXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDIuOTU5NTI0OTE3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxMjQzOTExNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEcml2ZXIgUmVnaXN0cmF0aW9uIGFuZCBQcm9iZSBGbG93KipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhlc2UgUmVhbHRlayBTTUkgYW5kIE1ESU8gZHJpdmVycyBhcmUgaW5pdGlhbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWdpc3RyYXRpb24gYW5kIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhlIGBydGw4MzY1bWJfc21pX2RyaXZlcmAgYW5kIGBydGw4MzY1bWJfbWRpb19kcml2ZXJgLiBJIGtub3cgdGhleSdyZSBjcml0aWNhbCBmb3IgYWNjZXNzaW5nIHRoZSBzd2l0Y2ggaGFyZHdhcmUsIHNvIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGByZWFsdGVrLXNtaS5jYCBhbmQgYHJlYWx0ZWstbWRpby5jYC4gVGhvc2Ugc291cmNlIGZpbGVzIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGxvZ2ljIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBJJ20gYWZ0ZXIuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ0MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjA4LjA4MzkxODY1M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzEwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhbHRla19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTg4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjM6cmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo2OnJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS03LWVuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTA6cmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTEtZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjQ0OnN0YXRpYyBpbnQgcmVhbHRla19tZGlvX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy00NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy00Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NzI6c3RhdGljIGludCByZWFsdGVrX21kaW9fcmVhZCh2b2lkICpjdHgsIHUzMiByZWcsIHUzMiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTczLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTc1LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19pbnRlcmZhY2VfaW5mbyByZWFsdGVrX21kaW9faW5mbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDU6XFx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA2OlxcdC5yZWdfd3JpdGUgPSByZWFsdGVrX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTExMS0gKiBAbWRpb2RldjogbWRpb19kZXZpY2UgdG8gcHJvYmUgb24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTIxOmludCByZWFsdGVrX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyMi17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTI0OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcXHRwcml2ID0gcnRsODN4eF9wcm9iZShkZXYsIFxcdTAwMjZyZWFsdGVrX21kaW9faW5mbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVxcdGlmIChJU19FUlIocHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXFx0cHJpdi1cXHUwMDNlbWRpb19hZGRyID0gbWRpb2Rldi1cXHUwMDNlYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMzM6XFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTQzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19wcm9iZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0NS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ3LSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE1NTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE1Ni17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjY6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3JlbW92ZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE2OC0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTcwLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSBzaHV0dGluZyBkb3duLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE3ODp2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc5LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE4NzpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fc2h1dGRvd24sIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjE4OmludCByZWFsdGVrX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyMDp2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjMzOnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6Mzg6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0NzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfY2xrX2RlbGF5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NTI6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RhcnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTgtXFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjU5OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY0LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NjU6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzAtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NzE6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzItXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3MzpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Nzc6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RvcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Nzk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04My1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4NDpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04NS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjg2OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODktXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVxcdC8qIEFkZCBhIGNsaWNrICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo5MjpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy05My1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjk0OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDI6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfd3JpdGVfYml0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgZGF0YSwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDQtXFx0Zm9yICg7IGxlbiBcXHUwMDNlIDA7IGxlbi0tKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDU6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sICEhKGRhdGEgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyAobGVuIC0gMSkpKSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDk6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMTM6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTE0LVxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMTg6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfcmVhZF9iaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBsZW4sIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEyNTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyOC1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEyOTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMzAtXFx0XFx0dSA9ICEhZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMzgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMzk6c3RhdGljIGludCByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2soc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcXHRcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgMSwgXFx1MDAyNmFjayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDgtXFx0XFx0aWYgKGFjayA9PSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNTktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjEte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTYyOlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjM6XFx0cmV0dXJuIHJlYWx0ZWtfc21pX3dhaXRfZm9yX2Fjayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjY6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlX25vYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY4OlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE3MjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNzYtXFx0LyogUmVhZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDgsIFxcdTAwMjZ0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cXHQqZGF0YSA9ICh0IFxcdTAwMjYgMHhmZik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4MC1cXHQvKiBTZW5kIGFuIEFDSyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgMHgwMCwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE4NjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTAtXFx0LyogUmVhZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTE6XFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDgsIFxcdTAwMjZ0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5Mi1cXHQqZGF0YSA9ICh0IFxcdTAwMjYgMHhmZik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5NC1cXHQvKiBTZW5kIGFuIEFDSyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTk1OlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgMHgwMSwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMDk6XFx0cmVhbHRla19zbWlfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTEtXFx0LyogU2VuZCBSRUFEIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZWNtZF9yZWFkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTYtXFx0LyogU2V0IEFERFJbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cXHQvKiBTZXQgQUREUlsxNTo4XSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjIyOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXFx0LyogUmVhZCBEQVRBWzc6MF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyNzpcXHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFxcdTAwMjZsbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjgtXFx0LyogUmVhZCBEQVRBWzE1OjhdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjk6XFx0cmVhbHRla19zbWlfcmVhZF9ieXRlMShwcml2LCBcXHUwMDI2aGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIzNjpcXHRyZWFsdGVrX3NtaV9zdG9wKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNDMtXFx0XFx0XFx0XFx0IHUzMiBhZGRyLCB1MzIgZGF0YSwgYm9vbCBhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1MDpcXHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Mi1cXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1MzpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZWNtZF93cml0ZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU3LVxcdC8qIFNldCBBRERSWzc6MF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1ODpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIGFkZHIgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjItXFx0LyogU2V0IEFERFJbMTU6OF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIGFkZHIgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY3LVxcdC8qIFdyaXRlIERBVEFbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgZGF0YSBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cXHRpZiAoYWNrKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjc0OlxcdFxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgZGF0YSBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XFx0XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2Fjayhwcml2LCBkYXRhIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI4Mi0gb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlxcdHJlYWx0ZWtfc21pX3N0b3AocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODQtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyOTM6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9yZWdfbm9hY2sodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI5NTpcXHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKGN0eCwgcmVnLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwMS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDI6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwNDpcXHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwNS19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMDYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMDgte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzA5OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTE6XFx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMi19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTU6XFx0LnJlZ19yZWFkID0gcmVhbHRla19zbWlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcXHQucmVnX3dyaXRlID0gcmVhbHRla19zbWlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzIwOiAqIHJlYWx0ZWtfc21pX3Byb2JlKCkgLSBQcm9iZSBhIHBsYXRmb3JtIGRldmljZSBmb3IgYW4gU01JLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzIte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzM3OlxcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXFx1MDAyNnJlYWx0ZWtfc21pX2luZm8pO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM4LVxcdGlmIChJU19FUlIocHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM1My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcXHRwcml2LVxcdTAwM2V3cml0ZV9yZWdfbm9hY2sgPSByZWFsdGVrX3NtaV93cml0ZV9yZWdfbm9hY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM2My19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzY3OiAqIHJlYWx0ZWtfc21pX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYSBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc4OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM4NzpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9yZW1vdmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5MS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHNodXR0aW5nIGRvd24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM5OTp2b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDAte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDA3LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQwODpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9zaHV0ZG93biwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoxMzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE5OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjA6dm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6Mjk6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDozMzpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0MjpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0yMD1zdHJ1Y3QgcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoyMTpzdHJ1Y3QgcmVhbHRla19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTQxPXN0cnVjdCBydGw4MzY2X3ZsYW5fNGsge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDo0ODpzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjU0OnN0cnVjdCByZWFsdGVrX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC01NS1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0KmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04MC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6ODE6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtODItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjk0OlxcdGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cXHRpbnRcXHRcXHRcXHQoKndyaXRlX3JlZ19ub2Fjaykodm9pZCAqY3R4LCB1MzIgYWRkciwgdTMyIGRhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMDU6ICogc3RydWN0IHJlYWx0ZWtfb3BzIC0gdnRhYmxlIGZvciB0aGUgcGVyLVNNSS1jaGlwdHlwZSBvcGVyYXRpb25zXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNi0gKiBAZGV0ZWN0OiBkZXRlY3RzIHRoZSBjaGlwdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwODpzdHJ1Y3QgcmVhbHRla19vcHMge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMDk6XFx0aW50XFx0KCpkZXRlY3QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTA6XFx0aW50XFx0KCpyZXNldF9jaGlwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTExOlxcdGludFxcdCgqc2V0dXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTI6XFx0aW50XFx0KCpnZXRfbWliX2NvdW50ZXIpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExMy1cXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTUtXFx0XFx0XFx0XFx0ICAgdTY0ICptaWJ2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExNjpcXHRpbnRcXHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE4OlxcdGludFxcdCgqc2V0X3ZsYW5fbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBpbmRleCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE5LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XFx0aW50XFx0KCpnZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjI6XFx0aW50XFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjQ6XFx0aW50XFx0KCpnZXRfbWNfaW5kZXgpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgKnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNTpcXHRpbnRcXHQoKnNldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNjpcXHRib29sXFx0KCppc192bGFuX3ZhbGlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgdmxhbik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNzpcXHRpbnRcXHQoKmVuYWJsZV92bGFuKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyODpcXHRpbnRcXHQoKmVuYWJsZV92bGFuNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI5OlxcdGludFxcdCgqZW5hYmxlX3BvcnQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzMDpcXHRpbnRcXHQoKnBvcnRfYWRkX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzMS1cXHRcXHRcXHRcXHQgICAgICB1MzIgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzMjpcXHRpbnRcXHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzMy1cXHRcXHRcXHRcXHRcXHQgdTMyIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzQ6XFx0aW50XFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzU6XFx0aW50XFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzNi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3OlxcdGludFxcdCgqcG9ydF9zZXRfdWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXFx0XFx0XFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XFx0aW50XFx0KCpwb3J0X3NldF9tY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cXHRcXHRcXHRcXHRcXHRib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcXHRpbnRcXHQoKnBvcnRfc2V0X2JjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVxcdFxcdFxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlxcdGludFxcdCgqbDJfYWRkX3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ1LVxcdFxcdFxcdCAgICAgdTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNDY6XFx0aW50XFx0KCpsMl9kZWxfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDctXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXFx0XFx0XFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0OTpcXHRpbnRcXHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1MDpcXHRcXHRcXHRcXHQgIGludCBwb3J0LCBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlxcdGludFxcdCgqbDJfYWRkX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1MzpcXHRpbnRcXHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1NC1cXHRcXHRcXHQgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltFVEhfQUxFTl0sIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTU6XFx0aW50XFx0KCpsMl9mbHVzaCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTY6XFx0aW50XFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NzpcXHRpbnRcXHQoKnBoeV93cml0ZSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU4LVxcdFxcdFxcdCAgICAgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1OTpcXHRpbnRcXHQoKnBoeV9yZWFkX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXFx0XFx0XFx0XFx0aW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MTpcXHRpbnRcXHQoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTYyLVxcdFxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2NTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTY2LVxcdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjc6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2OC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTc4LS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3OTppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTgwOmludCBydGw4MzY2X3NldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCB2aWQsIHUzMiBtZW1iZXIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4MS1cXHRcXHQgICAgIHUzMiB1bnRhZywgdTMyIGZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4MjppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgzLVxcdFxcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NDppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTg1OmludCBydGw4MzY2X2VuYWJsZV92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTg2OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4Ny1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5NT12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NzpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDguMTI4Mzk0ODcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxNDAwNDQ2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUlRMODN4eCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydGw4M3h4YCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHJ0bDgzeHguY2AgZmlsZS4gVGhlIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBydGw4M3h4X3Byb2JlKClgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byBgcnRsODN4eC5jYCBhbmQgc3RhcnQgdHJhY2luZyB0aHJvdWdoIHRoZSBwcm9iZSBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkLCBob3cgdGhlIHJlZ2lzdGVyIHNwYWNlIGlzIG1hcHBlZCwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaGVyZSwgdGhlIHNlcXVlbmNlIG9mIGNvbW1hbmRzLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgbW9kZWxzLCBpZiBpdCBkb2VzIGF0IGFsbC4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyB0aGlzIGRyaXZlci4gSSBob3BlIHRoZSBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGJlY2F1c2UgSSBoYXZlIGEgZmVlbGluZyBJJ2xsIGJlIGhlcmUgZm9yIGEgYml0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjE1LjI2ODQ0MjcwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCtcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl9icmlkZ2UuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjaW5jbHVkZSBcXFwicmVhbHRlay5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcInJ0bDgzeHguaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LyoqXFxuICAxNDpcXHQgKiBydGw4M3h4X2xvY2soKSAtIExvY2tzIHRoZSBtdXRleCB1c2VkIGJ5IHJlZ21hcHNcXG4gIDE1OlxcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuICAxNjpcXHQgKlxcbiAgMTc6XFx0ICogVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gcmVnbWFwIHRvIGJlIHVzZWQgYXMgdGhlIGxvY2sgZnVuY3Rpb24uXFxuICAxODpcXHQgKiBJdCBpcyBhbHNvIHVzZWQgZXh0ZXJuYWxseSB0byBibG9jayByZWdtYXAgYmVmb3JlIGV4ZWN1dGluZyBtdWx0aXBsZVxcbiAgMTk6XFx0ICogb3BlcmF0aW9ucyB0aGF0IG11c3QgaGFwcGVuIGluIHNlcXVlbmNlICh3aGljaCB3aWxsIHVzZVxcbiAgMjA6XFx0ICogcmVhbHRla19wcml2Lm1hcF9ub2xvY2sgaW5zdGVhZCkuXFxuICAyMTpcXHQgKlxcbiAgMjI6XFx0ICogQ29udGV4dDogQ2FuIHNsZWVwLiBIb2xkcyBwcml2LVxcdTAwM2VtYXBfbG9jayBsb2NrLlxcbiAgMjM6XFx0ICogUmV0dXJuOiBub3RoaW5nXFxuICAyNDpcXHQgKi9cXG4gIDI1OlxcdHZvaWQgcnRsODN4eF9sb2NrKHZvaWQgKmN0eClcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gIDMwOlxcdH1cXG4gIDMxOlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfbG9jaywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuICAzMjpcXHRcXG4gIDMzOlxcdC8qKlxcbiAgMzQ6XFx0ICogcnRsODN4eF91bmxvY2soKSAtIFVubG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xcbiAgMzU6XFx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcXG4gIDM2OlxcdCAqXFxuICAzNzpcXHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9ja3MgdGhlIGxvY2sgYWNxdWlyZWQgYnkgcnRsODN4eF9sb2NrLlxcbiAgMzg6XFx0ICpcXG4gIDM5OlxcdCAqIENvbnRleHQ6IFJlbGVhc2VzIHByaXYtXFx1MDAzZW1hcF9sb2NrIGxvY2suXFxuICA0MDpcXHQgKiBSZXR1cm46IG5vdGhpbmdcXG4gIDQxOlxcdCAqL1xcbiAgNDI6XFx0dm9pZCBydGw4M3h4X3VubG9jayh2b2lkICpjdHgpXFxuICA0MzpcXHR7XFxuICA0NDpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gIDQ3OlxcdH1cXG4gIDQ4OlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5sb2NrLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxcbiAgNTE6XFx0e1xcbiAgNTI6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQocHJpdiwgYWRkciwgcmVnbnVtKTtcXG4gIDU1OlxcdH1cXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG4gIDU4OlxcdFxcdFxcdFxcdFxcdCAgIHUxNiB2YWwpXFxuICA1OTpcXHR7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDoxNS4yNjg1MjgxNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc5NDk0NTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydGw4M3h4LmMgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgYSBzcGVjaWZpYyBzY2VuYXJpby4gTGV0J3Mgc2VlLi4uIEknbGwganVtcCBzdHJhaWdodCBpbnRvIGBydGw4M3h4LmNgLCBmb2N1c2luZyBvbiBsaW5lcyAxMjAgdGhyb3VnaCAyMjAuIEkgcmVtZW1iZXIgdGhhdCBzZWN0aW9uIGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgUEhZIHJlZ2lzdGVycy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBwYXJ0IHdoZXJlIGl0IHNldHMgdXAgdGhlIGluaXRpYWwgbGluayBzZXR0aW5ncyBmb3IgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGhvdyBpdCBoYW5kbGVzIHRoZSBhdXRvLW5lZ290aWF0aW9uLCBjb25zaWRlcmluZyB3aGF0IGhhcyBiZWVuIHJlcG9ydGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBkZXNjcmlwdGl2ZSBlbm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDoyMC4wNjM0NzY3NzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMjA6XFx0XFxuIDEyMTpcXHRcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbiAxMjI6XFx0XFx0aWYgKHJldCkge1xcbiAxMjM6XFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJ1bmFibGUgdG8gcmVnaXN0ZXIgTURJTyBidXMgJXNcXFxcblxcXCIsXFxuIDEyNDpcXHRcXHRcXHRcXHRidXMtXFx1MDAzZWlkKTtcXG4gMTI1OlxcdFxcdFxcdGdvdG8gZXJyX3B1dF9ub2RlO1xcbiAxMjY6XFx0XFx0fVxcbiAxMjc6XFx0XFxuIDEyODpcXHRcXHRwcml2LVxcdTAwM2V1c2VyX21paV9idXMgPSBidXM7XFxuIDEyOTpcXHRcXG4gMTMwOlxcdGVycl9wdXRfbm9kZTpcXG4gMTMxOlxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMzQ6XFx0fVxcbiAxMzU6XFx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9zZXR1cF91c2VyX21kaW8sIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHQvKipcXG4gMTM4OlxcdCAqIHJ0bDgzeHhfcHJvYmUoKSAtIHByb2JlIGEgUmVhbHRlayBzd2l0Y2hcXG4gMTM5OlxcdCAqIEBkZXY6IHRoZSBkZXZpY2UgYmVpbmcgcHJvYmVkXFxuIDE0MDpcXHQgKiBAaW50ZXJmYWNlX2luZm86IHNwZWNpZmljIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGluZm8uXFxuIDE0MTpcXHQgKlxcbiAxNDI6XFx0ICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyByZWFsdGVrX3ByaXYgYW5kIHJlYWRzIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRyZWVcXG4gMTQzOlxcdCAqIG5vZGUuIFRoZSBzd2l0Y2ggaXMgaGFyZCByZXNldHRlZCBpZiBhIG1ldGhvZCBpcyBwcm92aWRlZC5cXG4gMTQ0OlxcdCAqXFxuIDE0NTpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDE0NjpcXHQgKiBSZXR1cm46IFBvaW50ZXIgdG8gdGhlIHJlYWx0ZWtfcHJpdiBvciBFUlJfUFRSKCkgaW4gY2FzZSBvZiBmYWlsdXJlLlxcbiAxNDc6XFx0ICpcXG4gMTQ4OlxcdCAqIFRoZSByZWFsdGVrX3ByaXYgcG9pbnRlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGZyZWVkIGFzIGl0IGlzIGNvbnRyb2xsZWQgYnlcXG4gMTQ5OlxcdCAqIGRldnJlcy5cXG4gMTUwOlxcdCAqL1xcbiAxNTE6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqXFxuIDE1MjpcXHRydGw4M3h4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gMTUzOlxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvICppbnRlcmZhY2VfaW5mbylcXG4gMTU0OlxcdHtcXG4gMTU1OlxcdFxcdGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgKnZhcjtcXG4gMTU2OlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuIDE1NzpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYyA9IHtcXG4gMTU4OlxcdFxcdFxcdC5yZWdfYml0cyA9IDEwLCAvKiBBNC4uQTAgUjQuLlIwICovXFxuIDE1OTpcXHRcXHRcXHQudmFsX2JpdHMgPSAxNixcXG4gMTYwOlxcdFxcdFxcdC5yZWdfc3RyaWRlID0gMSxcXG4gMTYxOlxcdFxcdFxcdC5tYXhfcmVnaXN0ZXIgPSAweGZmZmYsXFxuIDE2MjpcXHRcXHRcXHQucmVnX2Zvcm1hdF9lbmRpYW4gPSBSRUdNQVBfRU5ESUFOX0JJRyxcXG4gMTYzOlxcdFxcdFxcdC5yZWdfcmVhZCA9IGludGVyZmFjZV9pbmZvLVxcdTAwM2VyZWdfcmVhZCxcXG4gMTY0OlxcdFxcdFxcdC5yZWdfd3JpdGUgPSBpbnRlcmZhY2VfaW5mby1cXHUwMDNlcmVnX3dyaXRlLFxcbiAxNjU6XFx0XFx0XFx0LmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLFxcbiAxNjY6XFx0XFx0XFx0LmxvY2sgPSBydGw4M3h4X2xvY2ssXFxuIDE2NzpcXHRcXHRcXHQudW5sb2NrID0gcnRsODN4eF91bmxvY2ssXFxuIDE2ODpcXHRcXHR9O1xcbiAxNjk6XFx0XFx0aW50IHJldDtcXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0dmFyID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuIDE3MjpcXHRcXHRpZiAoIXZhcilcXG4gMTczOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZV9hZGQoc2l6ZW9mKCpwcml2KSwgdmFyLVxcdTAwM2VjaGlwX2RhdGFfc3opLFxcbiAxNzY6XFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbiAxNzc6XFx0XFx0aWYgKCFwcml2KVxcbiAxNzg6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuIDE4MTpcXHRcXHRpZiAocmV0KVxcbiAxODI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXZsYW5fbG9jayk7XFxuIDE4NTpcXHRcXHRpZiAocmV0KVxcbiAxODY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTg3OlxcdFxcbiAxODg6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWwyX2xvY2spO1xcbiAxODk6XFx0XFx0aWYgKHJldClcXG4gMTkwOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdHJjLmxvY2tfYXJnID0gcHJpdjtcXG4gMTkzOlxcdFxcdHByaXYtXFx1MDAzZW1hcCA9IGRldm1fcmVnbWFwX2luaXQoZGV2LCBOVUxMLCBwcml2LCBcXHUwMDI2cmMpO1xcbiAxOTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VtYXApKSB7XFxuIDE5NTpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHByaXYtXFx1MDAzZW1hcCk7XFxuIDE5NjpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInJlZ21hcCBpbml0IGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxOTg6XFx0XFx0fVxcbiAxOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjIwLjA2MzU4NzA5MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjEwMDUxNzg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUTDgzeHggRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHJ0bDgzeHhfcHJvYmUoKWAgbmVlZHMgYG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhbiBPRiAoRGV2aWNlIFRyZWUpIGRldmljZSwgbGlrZWx5IGEgcGxhdGZvcm0gZHJpdmVyIG9yIE1ESU8gZHJpdmVyLiBMb29raW5nIGF0IHRoZSBgcnRsODM2NW1iX29mX21hdGNoYCB0YWJsZSwgaXQncyBjbGVhciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2guIFRoaXMgZHJpdmVyLCBhcyBJIHJlY2FsbCwgdGFsa3MgdG8gdGhlIHN3aXRjaCBoYXJkd2FyZSB2aWEgU01JIChHUElPKSBvciBNRElPLiBJdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIHRoYXQgdGhlIHBoeXNpY2FsIHN3aXRjaCBjaGlwIGJlIGNvbm5lY3RlZCBhbmQgcmVzcG9uZGluZy5cblxuTm93LCB0aGUgY3J1Y2lhbCBwb2ludDogV2UncmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgc3BlY2lmaWNhbGx5LCBRRU1VIG9yIHBlcmhhcHMgR0NFIG9uIHg4Nl82NC9hbWQ2NC4gSSBrbm93LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHRleHQsIHRoYXQgdGhlcmUncyAqbm8qIGVtdWxhdGVkIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGNoaXAgaW4gUUVNVS4gRFNBIHN3aXRjaGVzLCBhbmQgYnkgZXh0ZW5zaW9uIGhhcmR3YXJlIHN3aXRjaCBjaGlwcyBsaWtlIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBvciBSVEw4MzY2UkIsIGNhbm5vdCBiZSBwcm9iZWQgd2l0aG91dCB0aGF0IHBoeXNpY2FsIHByZXNlbmNlLCB0aGUgY29ycmVjdCBPRiBkZXZpY2V0cmVlIG5vZGUsIGFuZCwgY3JpdGljYWxseSwgYSBoYXJkd2FyZSByZXNwb25zZS5cblxuVGhpcyBzaXR1YXRpb24gYWxpZ25zIHBlcmZlY3RseSB3aXRoIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNjZW5hcmlvLiBUaGUgdGV4dCBleHBsaWNpdGx5IG1lbnRpb25zIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBTbWFydE5JQ3MuIElmIHRoZXkgbmVlZCBhIGNhcmQgb3IgQVNJQywgdGhlbiBRRU1VIGlzbid0IGdvaW5nIHRvIGVtdWxhdGUgdGhlbS5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgUmVhbHRlayBQSFkgZHJpdmVyIGlzIHNpbWlsYXJseSBpbmFjY2Vzc2libGUuIExldCdzIGxvb2sgYXQgYHJlYWx0ZWtfbWFpbi5jYC4gQWgsIHRoZSBgUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRgIFBIWSB3aXRoIElEIGAweDAwMWNjOTQyYCBpcyByZWdpc3RlcmVkIHRoZXJlLiBQSFkgZHJpdmVycyBwcm9iZSBiYXNlZCBvbiBNRElPIGJ1cyByZWFkcyBvZiBNSUlfUEhZU0lEMS8yIGFuZCBtYXRjaGluZyB0aGUgSUQuIEJ1dCwgYWdhaW4sIHRoZXJlJ3Mgbm8gZW11bGF0aW9uIGhlcmUuIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgUmVhbHRlayBSVEw4MzY1TUIgUEhZcyBvciBEU0Egc3dpdGNoZXMuXG5cblRoZSBjb3JlIHByb2JsZW0sIGZyb20gYSBwcm9iaW5nIHBlcnNwZWN0aXZlIGlzLCB3aGVyZSdzIHRoZSBidXMgYW5kIHdoZXJlJ3MgdGhlIHJlc3BvbnNlPyBJdCBzZWVtcyB1bmxpa2VseS5cblxuTGV0J3MgZG8gb25lIGxhc3QgY2hlY2sgdGhvdWdoLCB0byBtYWtlIGFic29sdXRlbHkgc3VyZTogSXMgdGhlcmUgKmFueSogdmlydHVhbCBidXMgb3Igc29mdHdhcmUgZW11bGF0aW9uIHRoYXQgY291bGQgaW52b2tlIHRoZXNlIGNhbGxiYWNrcywgZXZlbiBhIERTQSBtb2NrIGRyaXZlcj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXJlIGlzbid0IHNvbWV0aGluZyBzbmVha3kgaW4gdGhlIGtlcm5lbCB0aGF0IHdvdWxkIGdpdmUgdGhlICphcHBlYXJhbmNlKiBvZiBoYXJkd2FyZS4gSSdsbCBzZWFyY2ggZm9yIGFueXRoaW5nIERTQSBtb2NrIHJlbGF0ZWQgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNTcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTowNi4xNjQxMDk4MzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzkzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDYuMjE1OTA4OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMTg2NzYyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGRzYV9sb29wLmNgIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGNsZWFyIGl0J3MgZm9jdXNlZCBvbiB0ZXN0aW5nIHRoZSBEU0EgY29yZSwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoZSBgZHNhX2xvb3BfZHJpdmVyYC4gSG93ZXZlciwgaXQncyBleHBsaWNpdGx5ICpub3QqIHVzaW5nIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggb3IgYHJ0bDgzNjVtYmAgZHJpdmVycyBpbiBhIFwicmVhbFwiIHdheS4gSXQncyBtb2RpZnlpbmcgY29kZSBpbiBgcmVhbHRlay5oYCwgYHJ0bDgzNjVtYl9tYWluLmNgLCBgcnRsODN4eC5jYCwgYW5kIGByZWFsdGVrX21haW4uY2Ag4oCTIGFsbCByZWxhdGVkIHRvIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggYW5kIGl0cyBpbnRlZ3JhdGVkIFJUTDgzNjVNQi1WQyBQSFkuXG5cbk15IGluaXRpYWwgdGhvdWdodHM/IFRoaXMgc2NyZWFtcyBcImRlZGljYXRlZCBoYXJkd2FyZSByZXF1aXJlZC5cIiBUaGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgYXJlIGRlc2lnbmVkIHRvIGJlIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8sIGFuZCByZWx5IG9uIGVpdGhlciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgZW50cnkgb3IgTURJTyBidXMgY29uZmlndXJhdGlvbi4gSW1wb3J0YW50bHksIG5laXRoZXIgdGhlIHN3aXRjaCBBU0lDIG5vciB0aGUgUEhZIGFyZSBlbXVsYXRlZCBpbiB0eXBpY2FsIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC5cblxuTGV0IG1lIGJyZWFrIGRvd24gdGhlIHJlYXNvbmluZyBzeXN0ZW1hdGljYWxseTpcblxuKiAgICoqVW5yZWFjaGFibGUgSGFyZHdhcmU6KiogVGhlIFJUTDgzNjVNQiBzd2l0Y2ggYW5kIFBIWSBhcmUgKnBoeXNpY2FsbHkqIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTm8gbWF0dGVyIGhvdyBjbGV2ZXIgdGhlIHNvZnR3YXJlLCBpdCBjYW5ub3QgaW50ZXJhY3Qgd2l0aCBub24tZXhpc3RlbnQgaGFyZHdhcmUuXG4qICAgKipXb3J0aEZ1enppbmcgRmxhZzoqKiBHaXZlbiB0aGUgbGFjayBvZiBoYXJkd2FyZSBwcmVzZW5jZSwgdGhlcmUncyBubyByZWFsaXN0aWMgY2hhbmNlIHRoYXQgZnV6emluZyB3aWxsIHByb2R1Y2UgYW55IG1lYW5pbmdmdWwgcmVzdWx0cy4gVGhlcmVmb3JlLCBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgaXMgdGhlIGNvcnJlY3QgZGVjaXNpb24uXG4qICAgKipDb25maWd1cmF0aW9uIENvbmNlcm5zOioqIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBpcnJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhleSBhcmUgZWZmZWN0aXZlbHkgbnVsbCBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LlxuXG5UaGUgcGF0Y2gncyBhY3R1YWwgZnVuY3Rpb24g4oCTIGFkZGluZyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYW5kIEVFRSBzdXBwb3J0IOKAkyBpcyBpcnJlbGV2YW50LiBUaGUgaGFyZHdhcmUncyBpbmFjY2Vzc2liaWxpdHkgaXMgdGhlIGtleSBkZXRlcm1pbmVyLiBXZSBhcmUgdGFsa2luZyBhYm91dCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyBhbmQgUEhZIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYW5kIHByb2JlZCB2aWEgRGV2aWNlIFRyZWUuIFRoZSBQSFkgSUQgc3BlY2lmaWNhbGx5IG1hcHMgdG8gUlRMODM2NU1CLVZDLiBHaXZlbiB0aGUgaGFyZHdhcmUncyBhYnNlbmNlLCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM2OTUsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjEyLjIzNDU4Nzg5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgQ2xhdXNlIDQ1IE1ESU8gcmVhZC93cml0ZSBhbmQgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBzdXBwb3J0IGZvciBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMgYW5kIHRoZSBSVEw4MzY1TUItVkMgaW50ZWdyYXRlZCBQSFkgZHJpdmVyLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggaGFyZHdhcmUgKGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8pIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNToxMi4yMzQ2MTYzNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwxs2s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 13:47:09 +0000 UTC FinishedAt: 2026-09-04 14:05:13 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXG5pbmRleCA3NWExMjc1NDVlNWRkLi4xYzBjYTZkYWY1NDU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbkBAIC0xNTYsNiAmIzQzOzE1NiwxMCBAQCBzdHJ1Y3QgcmVhbHRla19vcHMge1xuIFx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbiBcdGludFx0KCpwaHlfd3JpdGUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4gXHRcdFx0ICAgICB1MTYgdmFsKTtcbiYjNDM7XHRpbnRcdCgqcGh5X3JlYWRfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4mIzQzO1x0XHRcdFx0aW50IHJlZ251bSk7XG4mIzQzO1x0aW50XHQoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbiYjNDM7XHRcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gfTtcbiBcbiBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNGMzMDU3NTYxMTZjYy4uOTk4ZjZiMmFkMTQwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pZl9icmlkZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLmhcJiMzNDtcbkBAIC0yMDIsNiAmIzQzOzIwMywxMCBAQFxuIC8qIFRoZSBQSFkgT0NQIGFkZHJlc3NlcyBvZiBQSFkgcmVnaXN0ZXJzIDB+MzEgc3RhcnQgaGVyZSAqL1xuICNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9QSFlSRUdfQkFTRVx0XHQweEE0MDBcbiBcbiYjNDM7I2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFXHRcdFx0MHhBNUM0XG4mIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWXHRcdFx0MHhBNUQwXG4mIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFXHRcdDB4QTVEMlxuJiM0MztcbiAvKiBFeHRlcm5hbCBpbnRlcmZhY2UgcG9ydCBtb2RlIHZhbHVlcyAtIHVzZWQgaW4gRElHSVRBTF9JTlRFUkZBQ0VfU0VMRUNUICovXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXHRcdDBcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXHRcdDFcbkBAIC0xMDQwLDYgJiM0MzsxMDQ1LDY2IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuJiM0MztcdFx0XHRcdCAgaW50IHJlZ251bSlcbiYjNDM7e1xuJiM0MztcdHUzMiBvY3BfYWRkcjtcbiYjNDM7XHR1MTYgdmFsO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX1BDU19FRUVfQUJMRSlcbiYjNDM7XHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQUJMRTtcbiYjNDM7XHRlbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbiYjNDM7XHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xuJiM0MztcdGVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxuJiM0MztcdFx0b2NwX2FkZHIgPSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9MUEFCTEU7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0LyogT25seSB0aGUgRUVFIHJlZ2lzdGVycyBhcmUgbWFwcGVkOyBvdGhlcnMgcmVhZCBhcyAwLCBhcyB0aGVcbiYjNDM7XHRcdCAqIGhhcmR3YXJlIGRvZXMsIHNvIHRoZSBnZW5lcmljIE1NRCBjb2RlIGlzIG5vdCB0cmlwcGVkIHVwIGJ5XG4mIzQzO1x0XHQgKiBhbiBlcnJvci5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXHUwMDI2dmFsKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVhZCBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCYjMzQ7LCBwaHksIG9jcF9hZGRyLFxuJiM0MztcdFx0XHRyZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB2YWw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcbiYjNDM7XHRcdFx0XHQgICBpbnQgZGV2YWQsIGludCByZWdudW0sIHUxNiB2YWwpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocGh5IFx1MDAzZSBSVEw4MzY1TUJfUEhZQUREUk1BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHQvKiBPbmx5IHRoZSBFRUUgYWR2ZXJ0aXNlbWVudCByZWdpc3RlciBpcyB3cml0YWJsZTsgd3JpdGVzIHRvIG90aGVyXG4mIzQzO1x0ICogcmVnaXN0ZXJzIGFyZSBpZ25vcmVkLCBhcyB0aGUgaGFyZHdhcmUgZG9lcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2YWQgIT0gTURJT19NTURfQU4gfHwgcmVnbnVtICE9IE1ESU9fQU5fRUVFX0FEVilcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEVixcbiYjNDM7XHRcdFx0XHQgICAgICB2YWwpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCYjMzQ7LCBwaHksXG4mIzQzO1x0XHRcdFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEViwgcmV0KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxuIHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG4ge1xuQEAgLTE2MzksNiAmIzQzOzE3MDQsMTQgQEAgc3RhdGljIHZvaWQgcnRsODM2NW1iX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0ICovXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbiBcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1xuJiM0MztcdFx0LyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzXG4mIzQzO1x0XHQgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRtZW1jcHkoY29uZmlnLVx1MDAzZWxwaV9pbnRlcmZhY2VzLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXG4mIzQzO1x0XHQgICAgICAgc2l6ZW9mKGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcykpO1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWVlZV9lbmFibGVkX2RlZmF1bHQgPSB0cnVlO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG5AQCAtMzI3NSwxOCAmIzQzOzMzNDgsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgdTMyIHRpbWVyLCBib29sIHR4X2Nsb2NrX3N0b3ApXG4mIzQzO3tcbiYjNDM7XHQvKiBUaGUgaGFyZHdhcmUgbWFuYWdlcyBMUEkgaXRzZWxmOyB0aGVyZSBpcyBubyBNQUMtbGV2ZWwgTFBJIGNvbnRyb2wuXG4mIzQzO1x0ICogVGhpcyBjYWxsYmFjayBvbmx5IHNpZ25hbHMgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuJiM0MztcdCAqL1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4mIzQzO3tcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGw4MzY1bWJfcGh5bGlua19tYWNfb3BzID0ge1xuIFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG4gXHQubWFjX2NvbmZpZyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19jb25maWcsXG4gXHQubWFjX2xpbmtfZG93biA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX2Rvd24sXG4gXHQubWFjX2xpbmtfdXAgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua191cCxcbiYjNDM7XHQubWFjX2VuYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSxcbiYjNDM7XHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBib29sIHJ0bDgzNjVtYl9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0LyogT25seSBpbnRlZ3JhdGVkLVBIWSBwb3J0cyBzdXBwb3J0IEVFRSwgbm90IHRoZSBleHRlcm5hbCBSR01JSSBwb3J0cy4gKi9cbiYjNDM7XHRyZXR1cm4gIXJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoZHMtXHUwMDNlcHJpdiwgcG9ydCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIG9ubHkgTFBJIHRpbWluZyBjb250cm9sICh0eF9scGlfdGltZXIpIGlzIGEgc2luZ2xlIGdsb2JhbFxuJiM0MztcdCAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpc1xuJiM0MztcdCAqIHBlci1wb3J0IGNhbGxiYWNrOyBsZWF2ZSBpdCBhdCBpdHMgcmVzZXQgZGVmYXVsdC4gUGVyLXBvcnQgRUVFIGlzXG4mIzQzO1x0ICogZHJpdmVuIHRocm91Z2ggdGhlIFBIWSBhZHZlcnRpc2VtZW50LiBSZWplY3QgdGhlIHBlci1wb3J0IFRYIExQSSBrbm9ic1xuJiM0MztcdCAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFlLVx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XG4mIzQzO1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtkaXNhYmxpbmcgRUVFIFRYIExQSSBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChlLVx1MDAzZXR4X2xwaV90aW1lcikge1xuJiM0MztcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7c2V0dGluZyB0aGUgRUVFIFRYIExQSSB0aW1lciBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgcnRsODM2NW1iX3N3aXRjaF9vcHMgPSB7XG4gXHQuZ2V0X3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sLFxuIFx0LmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCxcbiBcdC5zZXR1cCA9IHJ0bDgzNjVtYl9zZXR1cCxcbiBcdC50ZWFyZG93biA9IHJ0bDgzNjVtYl90ZWFyZG93bixcbiYjNDM7XHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXG4mIzQzO1x0LnNldF9tYWNfZWVlID0gcnRsODM2NW1iX3NldF9tYWNfZWVlLFxuIFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcbiBcdC5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLFxuIFx0LnBvcnRfYnJpZGdlX2xlYXZlID0gcnRsODN4eF9wb3J0X2JyaWRnZV9sZWF2ZSxcbkBAIC0zMzMyLDYgJiM0MzszNDUzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0ge1xuIFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxuIFx0LnBoeV9yZWFkID0gcnRsODM2NW1iX3BoeV9yZWFkLFxuIFx0LnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsXG4mIzQzO1x0LnBoeV9yZWFkX2M0NSA9IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUsXG4mIzQzO1x0LnBoeV93cml0ZV9jNDUgPSBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcbmluZGV4IDgxMjFlYzEyZmQ4YmEuLmFkNDJjMDVkMGE4OGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuQEAgLTYyLDYgJiM0Mzs2MiwyMiBAQCBzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuIFx0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV93cml0ZShwcml2LCBhZGRyLCByZWdudW0sIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4mIzQzO1x0XHRcdFx0ICAgICAgaW50IHJlZ251bSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXZhZCxcbiYjNDM7XHRcdFx0XHQgICAgICAgaW50IHJlZ251bSwgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV93cml0ZV9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSwgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcbiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzXG5AQCAtOTUsNiAmIzQzOzExMSwxMCBAQCBpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIFx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtSZWFsdGVrIHVzZXIgTUlJXCYjMzQ7O1xuIFx0YnVzLVx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xuIFx0YnVzLVx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkX2M0NSlcbiYjNDM7XHRcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1O1xuJiM0MztcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGVfYzQ1KVxuJiM0MztcdFx0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NTtcbiBcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslczp1c2VyX21paVwmIzM0OywgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiBcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMzM4OCw2ICYjNDM7MzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NDIpLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgzNjVNQi1WQyBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuJiM0MztcdFx0LnJlYWRfbW1kXHQ9IGdlbnBoeV9yZWFkX21tZF9jNDUsXG4mIzQzO1x0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQvKiBJbnRlcnJ1cHQgaGFuZGxpbmcgYW5hbG9nb3VzIHRvIFJUTDgzNjZSQiAqL1xuIFx0XHQuY29uZmlnX2ludHJcdD0gZ2VucGh5X25vX2NvbmZpZ19pbnRyLFxuIFx0XHQuaGFuZGxlX2ludGVycnVwdCA9IGdlbnBoeV9oYW5kbGVfaW50ZXJydXB0X25vX2FjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTQ1MmNhODNiYzNkYThjOGE3NDdmYzUxZjM2ZDkzOTc1MDFlMjkxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxNDowMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaCBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaAppbmRleCA3NWExMjc1NDVlNWRkLi4xYzBjYTZkYWY1NDU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oCkBAIC0xNTYsNiAmIzQzOzE1NiwxMCBAQCBzdHJ1Y3QgcmVhbHRla19vcHMgewogCWludAkoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTsKIAlpbnQJKCpwaHlfd3JpdGUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sCiAJCQkgICAgIHUxNiB2YWwpOwomIzQzOwlpbnQJKCpwaHlfcmVhZF9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCwKJiM0MzsJCQkJaW50IHJlZ251bSk7CiYjNDM7CWludAkoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCwKJiM0MzsJCQkJIGludCByZWdudW0sIHUxNiB2YWwpOwogfTsKIAogc3RydWN0IHJlYWx0ZWtfdmFyaWFudCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwppbmRleCA0YzMwNTc1NjExNmNjLi45OThmNmIyYWQxNDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl9icmlkZ2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl92bGFuLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7cmVhbHRlay5oJiMzNDsKQEAgLTIwMiw2ICYjNDM7MjAzLDEwIEBACiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi8KICNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9QSFlSRUdfQkFTRQkJMHhBNDAwCiAKJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEUJCQkweEE1QzQKJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEVgkJCTB4QTVEMAomIzQzOyNkZWZpbmUgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFCQkweEE1RDIKJiM0MzsKIC8qIEV4dGVybmFsIGludGVyZmFjZSBwb3J0IG1vZGUgdmFsdWVzIC0gdXNlZCBpbiBESUdJVEFMX0lOVEVSRkFDRV9TRUxFQ1QgKi8KICNkZWZpbmUgUlRMODM2NU1CX0VYVF9QT1JUX01PREVfRElTQUJMRQkJMAogI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9SR01JSQkJMQpAQCAtMTA0MCw2ICYjNDM7MTA0NSw2NiBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgaW50IHJlZ251bSkKJiM0Mzt7CiYjNDM7CXUzMiBvY3BfYWRkcjsKJiM0MzsJdTE2IHZhbDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKHBoeSAmZ3Q7IFJUTDgzNjVNQl9QSFlBRERSTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgJmFtcDsmYW1wOyByZWdudW0gPT0gTURJT19QQ1NfRUVFX0FCTEUpCiYjNDM7CQlvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEU7CiYjNDM7CWVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOICZhbXA7JmFtcDsgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVikKJiM0MzsJCW9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWOwomIzQzOwllbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiAmYW1wOyZhbXA7IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUpCiYjNDM7CQlvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRTsKJiM0MzsJZWxzZQomIzQzOwkJLyogT25seSB0aGUgRUVFIHJlZ2lzdGVycyBhcmUgbWFwcGVkOyBvdGhlcnMgcmVhZCBhcyAwLCBhcyB0aGUKJiM0MzsJCSAqIGhhcmR3YXJlIGRvZXMsIHNvIHRoZSBnZW5lcmljIE1NRCBjb2RlIGlzIG5vdCB0cmlwcGVkIHVwIGJ5CiYjNDM7CQkgKiBhbiBlcnJvci4KJiM0MzsJCSAqLwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgJmFtcDt2YWwpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byByZWFkIFBIWSVkIE9DUCAlMDR4LCByZXQgJWRcbiYjMzQ7LCBwaHksIG9jcF9hZGRyLAomIzQzOwkJCXJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwKJiM0MzsJCQkJICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKHBoeSAmZ3Q7IFJUTDgzNjVNQl9QSFlBRERSTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CS8qIE9ubHkgdGhlIEVFRSBhZHZlcnRpc2VtZW50IHJlZ2lzdGVyIGlzIHdyaXRhYmxlOyB3cml0ZXMgdG8gb3RoZXIKJiM0MzsJICogcmVnaXN0ZXJzIGFyZSBpZ25vcmVkLCBhcyB0aGUgaGFyZHdhcmUgZG9lcy4KJiM0MzsJICovCiYjNDM7CWlmIChkZXZhZCAhPSBNRElPX01NRF9BTiB8fCByZWdudW0gIT0gTURJT19BTl9FRUVfQURWKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLAomIzQzOwkJCQkgICAgICB2YWwpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXG4mIzM0OywgcGh5LAomIzQzOwkJCVJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FEViwgcmV0KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICoKIHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpCiB7CkBAIC0xNjM5LDYgJiM0MzsxNzA0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCSAqLwogCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUksCiAJCQkgIGNvbmZpZy0mZ3Q7c3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwomIzQzOwkJLyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzCiYjNDM7CQkgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLgomIzQzOwkJICovCiYjNDM7CQltZW1jcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcywKJiM0MzsJCSAgICAgICBzaXplb2YoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcykpOwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDsKJiM0MzsJCWNvbmZpZy0mZ3Q7ZWVlX2VuYWJsZWRfZGVmYXVsdCA9IHRydWU7CiAJCXJldHVybjsKIAl9CiAKQEAgLTMyNzUsMTggJiM0MzszMzQ4LDY2IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX2RldGVjdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKJiM0MzsJCQkJCSAgICAgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcCkKJiM0Mzt7CiYjNDM7CS8qIFRoZSBoYXJkd2FyZSBtYW5hZ2VzIExQSSBpdHNlbGY7IHRoZXJlIGlzIG5vIE1BQy1sZXZlbCBMUEkgY29udHJvbC4KJiM0MzsJICogVGhpcyBjYWxsYmFjayBvbmx5IHNpZ25hbHMgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLgomIzQzOwkgKi8KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKJiM0Mzt7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHsKIAkubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcywKIAkubWFjX2NvbmZpZyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19jb25maWcsCiAJLm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLAogCS5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLAomIzQzOwkubWFjX2VuYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSwKJiM0MzsJLm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaSwKIH07CiAKJiM0MztzdGF0aWMgYm9vbCBydGw4MzY1bWJfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKJiM0Mzt7CiYjNDM7CS8qIE9ubHkgaW50ZWdyYXRlZC1QSFkgcG9ydHMgc3VwcG9ydCBFRUUsIG5vdCB0aGUgZXh0ZXJuYWwgUkdNSUkgcG9ydHMuICovCiYjNDM7CXJldHVybiAhcnRsODM2NW1iX2dldF9wb3J0X2V4dGludChkcy0mZ3Q7cHJpdiwgcG9ydCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODM2NW1iX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiYjNDM7CQkJCSBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKQomIzQzO3sKJiM0MzsJc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLSZndDtwcml2OwomIzQzOwomIzQzOwkvKiBUaGUgb25seSBMUEkgdGltaW5nIGNvbnRyb2wgKHR4X2xwaV90aW1lcikgaXMgYSBzaW5nbGUgZ2xvYmFsCiYjNDM7CSAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpcwomIzQzOwkgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpcwomIzQzOwkgKiBkcml2ZW4gdGhyb3VnaCB0aGUgUEhZIGFkdmVydGlzZW1lbnQuIFJlamVjdCB0aGUgcGVyLXBvcnQgVFggTFBJIGtub2JzCiYjNDM7CSAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAoIWUtJmd0O3R4X2xwaV9lbmFibGVkKSB7CiYjNDM7CQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtkaXNhYmxpbmcgRUVFIFRYIExQSSBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGUtJmd0O3R4X2xwaV90aW1lcikgewomIzQzOwkJZGV2X2Vycihwcml2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtzZXR0aW5nIHRoZSBFRUUgVFggTFBJIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0gewogCS5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsCiAJLmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCwKIAkuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsCiAJLnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLAomIzQzOwkuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsCiYjNDM7CS5zZXRfbWFjX2VlZSA9IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZSwKIAkucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLAogCS5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLAogCS5wb3J0X2JyaWRnZV9sZWF2ZSA9IHJ0bDgzeHhfcG9ydF9icmlkZ2VfbGVhdmUsCkBAIC0zMzMyLDYgJiM0MzszNDUzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0gewogCS5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCwKIAkucGh5X3JlYWQgPSBydGw4MzY1bWJfcGh5X3JlYWQsCiAJLnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsCiYjNDM7CS5waHlfcmVhZF9jNDUgPSBydGw4MzY1bWJfcGh5X3JlYWRfYzQ1LAomIzQzOwkucGh5X3dyaXRlX2M0NSA9IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1LAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jCmluZGV4IDgxMjFlYzEyZmQ4YmEuLmFkNDJjMDVkMGE4OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMKQEAgLTYyLDYgJiM0Mzs2MiwyMiBAQCBzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLAogCXJldHVybiBwcml2LSZndDtvcHMtJmd0O3BoeV93cml0ZShwcml2LCBhZGRyLCByZWdudW0sIHZhbCk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgICAgIGludCByZWdudW0pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLSZndDtwcml2OwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b3BzLSZndDtwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsCiYjNDM7CQkJCSAgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJcmV0dXJuIHByaXYtJmd0O29wcy0mZ3Q7cGh5X3dyaXRlX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtLCB2YWwpOwomIzQzO30KJiM0MzsKIC8qKgogICogcnRsODN4eF9zZXR1cF91c2VyX21kaW8oKSAtIHJlZ2lzdGVyIHRoZSB1c2VyIG1paSBidXMgZHJpdmVyCiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzCkBAIC05NSw2ICYjNDM7MTExLDEwIEBAIGludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpCiAJYnVzLSZndDtuYW1lID0gJiMzNDtSZWFsdGVrIHVzZXIgTUlJJiMzNDs7CiAJYnVzLSZndDtyZWFkID0gcnRsODN4eF91c2VyX21kaW9fcmVhZDsKIAlidXMtJmd0O3dyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7CiYjNDM7CWlmIChwcml2LSZndDtvcHMtJmd0O3BoeV9yZWFkX2M0NSkKJiM0MzsJCWJ1cy0mZ3Q7cmVhZF9jNDUgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NTsKJiM0MzsJaWYgKHByaXYtJmd0O29wcy0mZ3Q7cGh5X3dyaXRlX2M0NSkKJiM0MzsJCWJ1cy0mZ3Q7d3JpdGVfYzQ1ID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1OwogCXNucHJpbnRmKGJ1cy0mZ3Q7aWQsIE1JSV9CVVNfSURfU0laRSwgJiMzNDslczp1c2VyX21paSYjMzQ7LCBkZXZfbmFtZShwcml2LSZndDtkZXYpKTsKIAlidXMtJmd0O3BhcmVudCA9IHByaXYtJmd0O2RldjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwppbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwpAQCAtMzM4OCw2ICYjNDM7MzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHsKIAl9LCB7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTQyKSwKIAkJLm5hbWUJCT0gJiMzNDtSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnJlYWRfbW1kCT0gZ2VucGh5X3JlYWRfbW1kX2M0NSwKJiM0MzsJCS53cml0ZV9tbWQJPSBnZW5waHlfd3JpdGVfbW1kX2M0NSwKIAkJLyogSW50ZXJydXB0IGhhbmRsaW5nIGFuYWxvZ291cyB0byBSVEw4MzY2UkIgKi8KIAkJLmNvbmZpZ19pbnRyCT0gZ2VucGh5X25vX2NvbmZpZ19pbnRyLAogCQkuaGFuZGxlX2ludGVycnVwdCA9IGdlbnBoeV9oYW5kbGVfaW50ZXJydXB0X25vX2FjaywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxOAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIERTQSBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AgZGlyZWN0b3J5OiBgcmVhbHRlay5oYCwgYHJ0bDgzNjVtYl9tYWluLmNgLCBgcnRsODN4eC5jYCwgYW5kIGV2ZW4gYSBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYCBkaXJlY3RvcnksIGByZWFsdGVrX21haW4uY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBsaWtlbHkgaW52b2x2ZXMgbW9kaWZpY2F0aW9ucyB0byBhIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgUmVhbHRlayBzd2l0Y2ggZHJpdmVyLCBwb3RlbnRpYWxseSBmb3IgUlRMODM2NU1CLCBSVEw4MzY2IG9yIHJlbGF0ZWQgbW9kZWxzLgoKTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogaG93IGlzIHRoaXMgZHJpdmVyIGJvdW5kIGFuZCByZWdpc3RlcmVkPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGNhbiBJIGdldCBhdCBpdCB1c2luZyBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIHBhdGNoIGlzIHRlc3RhYmxlIHdpdGhvdXQgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgaWYgSSYjMzk7bSBsb29raW5nIGF0IGEgbW9yZSBjb21wbGV4IHNldHVwLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AgZGlyZWN0b3J5IHdpdGggYSBmZXcgcXVpY2sgZ3JlcHMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJ8bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfG1vZHVsZV9pMmNfZHJpdmVyfG1vZHVsZV9zcGlfZHJpdmVyfHBjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6ODpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtOS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMDpcdHJldHVybiBtZGlvX2RyaXZlcl9yZWdpc3RlcihkcnYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyNDpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg9OD1zdGF0aWMgaW5saW5lIGludCByZWFsdGVrX3NtaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC05LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTA6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKGRydik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTExLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM1MDI9c3RhdGljIGludCBydGw4MzY1bWJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzUwNjpcdHJldCA9IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg2Nj1zdGF0aWMgaW50IHJ0bDgzNjZyYl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE4NzA6XHRyZXQgPSByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnJ0bDgzNjZyYl9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODcxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjMwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUlRMODM2NU1CIERyaXZlciBhbmQgUmVhbHRlayBOZXR3b3JrIEhhcmR3YXJlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgaXMgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgY29kZSBwYXRocywgcGFydGljdWxhcmx5IGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgZml0IGludG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyY2hpdGVjdHVyZS4KCk5leHQsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIFJlYWx0ZWsmIzM5O3MgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBhbmQgUEhZIChQaHlzaWNhbCBMYXllcikgZHJpdmVycy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIG1hZGUsIGFuZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX1JFQUxURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTY6aWYgTkVUX0RTQV9SRUFMVEVLXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXHRib29sIFwmIzM0O1JlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfRFNBX1RBR19SVEw4XzRcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozOTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODM2NlJCIHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo1MDpcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy01MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcdFx0JiM0Mzs9IHJlYWx0ZWtfZHNhLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1x0XHRcdDo9IHJ0bDgzeHgub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgJiM0Mzs9IHJlYWx0ZWstbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1zbWkub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpICYjNDM7PSBydGw4MzY2Lm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE0LXJ0bDgzNjYtb2JqcyBcdFx0XHRcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxNTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xNi1ydGw4MzY2LW9ianMgXHRcdFx0XHQmIzQzOz0gcnRsODM2NnJiLWxlZHMub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE5LXJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC01LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIyOiNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9NDc9ZW51bSBydGw4MzY2X2xlZGdyb3VwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg6Njg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEUylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oPTk0PXN0cnVjdCBydGw4MzY2cmIge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk2LVx0Ym9vbCBwdmlkX2VuYWJsZWRbUlRMODM2NlJCX05VTV9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmgtOTgtXHRzdHJ1Y3QgcnRsODM2NnJiX2xlZCBsZWRzW1JUTDgzNjZSQl9OVU1fUE9SVFNdW1JUTDgzNjZSQl9OVU1fTEVER1JPVVBTXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI5MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFJlYWx0ZWsgRFNBIFN3aXRjaCBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gYE5FVF9EU0FfUkVBTFRFS2AuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYWxsIGFib3V0IHRob3NlIFJlYWx0ZWsgUlRMODM2NU1CLCBSVEw4MzY2UkIsIGFuZCBzaW1pbGFyIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHN0dWZmIHdpdGhvdXQgaGF2aW5nIHRoZSAqcmVhbCogaGFyZHdhcmU/IENhbiBJIHByb2JlIHRoZXNlIERTQSBzd2l0Y2hlcyBvciB0aGVpciBQSFkgZHJpdmVycyBpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgc3R1Y2sgbmVlZGluZyBhIHBoeXNpY2FsIHNldHVwPwoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCB3YXN0aW5nIG15IHRpbWUuIEFyZSB0aGVyZSBhbnkgbW9jayBkZXZpY2VzIG9yIHZpcnR1YWwgRFNBIGltcGxlbWVudGF0aW9ucyB0aGF0IEkmIzM5O20gb3Zlcmxvb2tpbmc/IE9yIGlzIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggZXNzZW50aWFsbHksIGJ5IGRlc2lnbiwgdGllZCB0byBoYXJkd2FyZSB0aGF0IEkgY2FuJiMzOTt0IGVtdWxhdGU/CgpBaGEhIExldCYjMzk7cyBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIGRvY3VtZW50IEkgaGF2ZSBoYW5keS4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KClJpZ2h0LCB0aGUgbm90ZSBvbiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIEl0IGxpc3RzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgZXRjLikgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBiZWNhdXNlIHRoZXkgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBgTkVUX0RTQV9SRUFMVEVLYCBvbmUgb2YgdGhvc2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4KCkFscmlnaHQsIGEgcXVpY2sgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBjb2RlLiBIb3cgYXJlIHRoZXNlIFJUTDgzNjVNQiAvIFJlYWx0ZWsgRFNBIHN3aXRjaGVzIGNvbm5lY3RlZCwgYW55d2F5PyBJJiMzOTtsbCBjaGVjayBgcnRsODM2NW1iX21haW4uY2AsIGByZWFsdGVrLXNtaS5jYCwgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gc2VlIGlmIEkgY2FuIGdsZWFuIGFueSBjbHVlcy4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIGEgaGludCBhcyB0byB0aGVpciBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21hdGNoX3RhYmxlfE1PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM0NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDc5LX07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0ODA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcnRsODM2NW1iX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzQ4Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM0ODQtXHRcdC5uYW1lID0gXCYjMzQ7cnRsODM2NW1iLXNtaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzQ4NTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDg2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTM0OTI9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBydGw4MzY1bWJfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDk0LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozNDk1Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY1bWJfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM0OTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NnJiX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0My19O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY2cmJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NDY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NnJiX3NtaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0OC1cdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY2cmItc21pXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg0OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NnJiX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg1MC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg1Nj1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjZyYl9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODU4LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjZyYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg1OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NnJiX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2MC1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4OTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBhdGNoOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIG1ldGljdWxvdXNseS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgQzQ1IE1ESU8gc3VwcG9ydCBhbmQgc29tZSBFRUUgZnVuY3Rpb25hbGl0eSB0byB0aGUgUmVhbHRlayBkcml2ZXJzLiBGaXJzdCwgd2UgaGF2ZSBjaGFuZ2VzIGluIGByZWFsdGVrLmhgIHdoaWNoIGFkZHMgZnVuY3Rpb24gcG9pbnRlciBwcm90b3R5cGVzIGZvciBgcGh5X3JlYWRfYzQ1YCBhbmQgYHBoeV93cml0ZV9jNDVgIHRvIHRoZSBgcmVhbHRla19vcHNgIHN0cnVjdHVyZS4gVGhlbiwgdGhlIG1lYXQgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGBydGw4MzY1bWJfbWFpbi5jYCwgd2hlcmUgdGhlIGFjdHVhbCBDNDUgcmVhZC93cml0ZSBmdW5jdGlvbnMgZm9yIHRoZSBQSFkgYXJlIGRlZmluZWQsIGFsb25nc2lkZSBzb21lIHBoeWxpbmsgYW5kIEVFRS1yZWxhdGVkIGZ1bmN0aW9ucy4gIFRoZXNlIGFyZSBnZXR0aW5nIGhvb2tlZCBpbnRvIHRoZSBgcnRsODM2NW1iX3N3aXRjaF9vcHNgIGFuZCBgcnRsODM2NW1iX29wc2AuIFdlIGFsc28gaGF2ZSBzaW1pbGFyIGltcGxlbWVudGF0aW9ucyBmb3IgYHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1YCwgYHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NWAsIGluIGBydGw4M3h4LmNgLCBjb25uZWN0ZWQgdG8gdGhlIGJ1cywgd2hpY2ggbWFrZXMgc2Vuc2UuIEZpbmFsbHksIG92ZXIgaW4gYHJlYWx0ZWtfbWFpbi5jYCwgd2UmIzM5O3JlIGFkZGluZyB0aGUgYGdlbnBoeV9yZWFkX21tZF9jNDVgIGFuZCBgZ2VucGh5X3dyaXRlX21tZF9jNDVgIG1ldGhvZHMgdG8gdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBlbnRyeS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSBldmVuICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5IHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBSVEw4MzY1TUIgaXMgYW4gZXh0ZXJuYWwgc3dpdGNoIElDLCBzb21ldGhpbmcgeW91JiMzOTtkIGZpbmQgaW4gYW4gZW1iZWRkZWQgc3lzdGVtLiAgSXQmIzM5O3MgY29ubmVjdGVkIHRvIGEgaG9zdCBTb0MgdmlhIE1ESU8gb3IgU01JLCBhbmQgdGhleSBhcmUgdXN1YWxseSBwcm9iZWQgdmlhIERldmljZSBUcmVlLgoKT24gYW1kNjQsIHdoaWNoIGlzIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBzdGFuZGFyZCB4ODYvYW1kNjQgc3lzdGVtcyAqZG9uJiMzOTt0KiB0eXBpY2FsbHkgaGF2ZSBhIERldmljZSBUcmVlIHNldHVwIGZvciB0aGVzZSBSZWFsdGVrIHN3aXRjaCBJQ3MsIHVubGVzcyBzb21lb25lIGhhcyBtb2NrZWQgdGhlbSBvciBzZXQgdXAgYSB0ZXN0IGVudmlyb25tZW50LCBhbmQgUUVNVSBjZXJ0YWlubHkgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVtLiAgU28sIHdlJiMzOTtyZSBsaWtlbHkgc3R1Y2sgaGVyZSB3aXRob3V0IHJlYWwgaGFyZHdhcmUuIENvdWxkIHN5emthbGxlciBoZWxwIHVzIG91dCBpbiB0aGlzIHJlZ2FyZD8gQ2FuIGl0IGluc3RhbnRpYXRlIGVpdGhlciBNRElPIG9yIFNNSSBwbGF0Zm9ybSBkcml2ZXJzIGZvciBhIFJlYWx0ZWsgc3dpdGNoIG9yIFBIWT8gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkga2luZCBvZiB2aXJ0dWFsIGJ1cyBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlLCBtYXliZSBOZXRsaW5rLCBvciBhIG1vY2sgZGV2aWNlLgoKSSYjMzk7bGwgY2hlY2sgYHJlYWx0ZWtfbWFpbi5jYCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBQSFkgZHJpdmVyIHByb2JpbmcgbWVjaGFuaXNtLiBBIFJlYWx0ZWsgUEhZIGRyaXZlciBwcm9iZXMgd2hlbiBhbiBNRElPIGJ1cyBmaW5kcyBhIFBIWSB3aXRoIGEgbWF0Y2hpbmcgUEhZIElELCBhbmQgaW4gdGhpcyBjYXNlLCBpdOKAmXMgYDB4MDAxY2M5NDJgLiAgRG9lcyBRRU1VIG1vZGVsICp0aGF0KiBSZWFsdGVrIFBIWT8gTm8uIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBSVEw4MzY1TUIgRFNBIHN3aXRjaCBjaGlwIG9yIHRoZSBQSFkuIFNvLCBjYW4gd2UgaW5zdGFudGlhdGUgRFNBIG9yIFBIWSBkcml2ZXJzIHZpYSB1c2Vyc3BhY2Ugb3IgbW9jayBkZXZpY2VzPyAgSSB3aWxsIGFsc28gY2hlY2sgYHJlYWx0ZWtfc21pLmNgIGFuZCBgcmVhbHRlay1tZGlvLmNgIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDExCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBydGw4MzY1bWIgUHJvYmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgdGhlIGBydGw4MzY1bWJgIHByb2JlLiBTaW5jZSBJJiMzOTttIGxpa2VseSBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGRyaXZlciBiZWhhdmlvciwgcGlucG9pbnRpbmcgaXRzIG9yaWdpbiBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBmaW5kaW5nIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbjsgaXQmIzM5O3MgYWJvdXQgdW5kZXJzdGFuZGluZyAqd2hlcmUqIGl0JiMzOTtzIGludm9rZWQgaW4gdGhlIHByb2JlIHNlcXVlbmNlLCBhbmQgdGhlIGNvbnRleHQgYXJvdW5kIHRoYXQgY2FsbC4gSSBuZWVkIHRvIGtub3cgdGhlIGFzc29jaWF0ZWQgZGV2aWNlIHN0cnVjdHVyZXMsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB1c2luZyBteSBzdGFuZGFyZCBzZWFyY2ggdG9vbHMsIGxpa2VseSBgZ3JlcGAgb3IgYGZpbmRgLCB0YXJnZXRpbmcgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byBiZSBwcmVjaXNlIHdpdGggbXkgc2VhcmNoLCBwb3RlbnRpYWxseSBsb29raW5nIGZvciB0aGUgZXhhY3Qgc3RyaW5nLCBjb25zaWRlcmluZyBjYXNpbmcsIGFuZCBwb3RlbnRpYWxseSBsb29raW5nIGZvciBzdXJyb3VuZGluZyBrZXl3b3JkcyBzdWNoIGFzICYjMzQ7cHJvYmUmIzM0OyBvciAmIzM0O21vZHVsZV9pbml0JiMzNDsuIEZyb20gdGhlcmUgSSYjMzk7bGwgc3RhcnQgd29ya2luZyB0aHJvdWdoIHRoZSBjcm9zcyByZWZlcmVuY2VzIHVudGlsIEkgZmluZCBleGFjdGx5IHdoYXQgSSBhbSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE3MjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTE3PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgJiM0Mzs9IHJ0bDgzNjVtYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcdFx0ICBydGw4MzY1bWJfdGFibGUubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjE6XHRcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XHRcdCAgcnRsODM2NW1iX2wyLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Nz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjk6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX2wyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl90YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTMtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXHR1OCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMTUtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTIyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkga2V5O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVx0dTE2IG1lbWJlcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTY0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyNjI6ICogcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKCkgLSBnZXQgdGhlIG5leHQgVW5pY2FzdCBMMiBlbnRyeVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4MS0gKiovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVx0XHRcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4NjpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XHRydGw4MzY1bWJfbDJfZGF0YV90b191YyhkYXRhLCBcdTAwMjZ1Yyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA2LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMxMS1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMyOC1cdHVjLmFnZSA9IDE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XHRydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShcdTAwMjZ1YywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzEtXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNDU6aW50IHJ0bDgzNjVtYl9sMl9kZWxfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0OS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVx0dWMuYWdlID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2MTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NDk6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1My1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVx0bWMuaXNfc3RhdGljID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2NjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzQtXHRcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ3NTpcdFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXHUwMDI2bWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVx0XHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcdFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVx0fSBlbHNlIGlmIChyZXQgPT0gLUVOT0VOVCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyMS1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjYtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzEtXHRtYy5rZXkuaXZsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NTA6XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NTEtXHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cdH1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU2ODpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NzE6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTYtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOS1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjItXHRcdFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI1OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXHRcdFx0dTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyODppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0LSAqIHJlcXVpcmUgdGhlIHJ0bDgzNjdkIHZlbmRvciBkcml2ZXIuIFdpdGggYWxsIHRoaXMgdW5jZXJ0YWludHksIHRoZSBkcml2ZXIgaGFzXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTAtI2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTI6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3ZsYW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICogMy1iaXQgTVNCIGZpZWxkIChDVFJMMSkuIFRoZSBjaGlwIHJlc2V0cyB0aGVtIHRvIDB4MUZGRkY7IHNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjI6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjMtICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjktI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXHRcdDB4MDA0MFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzA6LyogU2VlIFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzMS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfVkxBTl9FR1JFU1NfTU9ERV9NQVNLXHRcdDB4MDAzMFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM0LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzU6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzYtICogQFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMOiBmb2xsb3cgdW50YWcgbWFzayBpbiBWTEFONGsgdGFibGUgZW50cnlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDQ1OmVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDYtXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4OTplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ5MC1cdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTUxOnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTItXHR1MzIgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NjA6c3RhdGljIHN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIgcnRsODM2NW1iX21pYl9jb3VudGVyc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NjEtXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIzOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNC1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjgtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzMC1cdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjM5LVx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1fc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUyLVx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2MC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2NC1cdHsgMHgwNTAwLCAweDgyRjAgfSwgeyAweDA1MDEsIDB4RjE5NSB9LCB7IDB4MDUwMiwgMHgzMUEyIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY2OTplbnVtIHJ0bDgzNjVtYl9waHlfaW50ZXJmYWNlX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NzAtXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4MC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjgxOiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgyLSAqIEBwb3J0OiB0aGUgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cdTAwM2UgeyBpZCwgc3VwcG9ydGVkX2ludGVyZmFjZXMgfS4gVG8gYmUgZW1iZWRkZWRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OiAqIGluIFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODgtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4OTpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5MC1cdGludCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2OTY6ICogc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gLSBzdGF0aWMgY2hpcC1zcGVjaWZpYyBpbmZvXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5Ny0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDUtICogYnkgdGhpcyBkcml2ZXIuIFdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIGFub3RoZXIgY2hpcCBpbiB0aGUgZmFtaWx5LCBhIG5ld1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzA4OnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMS1cdHUzMiBjaGlwX3ZlcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEyOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEzOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpqYW1fdGFibGU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNC1cdHNpemVfdCBqYW1fc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxOC0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzIwLVx0e1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI3LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjg6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjk6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzktXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc0MDpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc0MTpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzQyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1My1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzU0Olx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzU1Olx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY2LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Njc6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Njg6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MjplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzMtXHRSVEw4MzY1TUJfU1RQX1NUQVRFX0RJU0FCTEVEID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzc5OmVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODAtXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODU6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg2LVx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTA6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5MS1cdFJUTDgzNjVNQl9DUFVfRk9STUFUXzhCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5NTplbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTYtXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MDE6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgwMi0gKiBAZW5hYmxlOiBlbmFibGUvZGlzYWJsZSBoYXJkd2FyZSBpbnNlcnRpb24gb2YgQ1BVIHRhZyBpbiBzd2l0Y2gtXHUwMDNlQ1BVIGZyYW1lc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEyLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTM6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNi1cdHUzMiB0cmFwX3BvcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTg6XHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxOTpcdGVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiByeF9sZW5ndGg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyMDpcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI0OiAqIHN0cnVjdCBydGw4MzY1bWJfcG9ydCAtIHByaXZhdGUgcGVyLXBvcnQgZGF0YVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjUtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNi0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mjc6ICogQHN0YXRzOiBsaW5rIHN0YXRpc3RpY3MgcG9wdWxhdGVkIGJ5IHJ0bDgzNjVtYl9zdGF0c19wb2xsLCByZWFkeSBmb3IgYXRvbWljXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyODogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyOS0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMxLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzI6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMzLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODQxOiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0Mi0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU0OnN0cnVjdCBydGw4MzY1bWIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTUtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTYtXHRpbnQgaXJxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTc6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cdHN0cnVjdCBtdXRleCBtaWJfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYwOlx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYxLVx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY1OiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY3OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9wb2xsX2J1c3koc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzctXHRcdFx0XHQgICAgIHUzMiBvY3BfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTA2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDctXHRcdFx0XHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE4Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMyOlx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1MS1cdFx0XHRcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1ODpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkyOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA3LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAyMDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAyMS1cdFx0XHQgICAgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDM1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ5LVx0XHRcdFx0ICBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA3MTpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODI6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgzLVx0XHRcdFx0ICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA5NjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDk3LVx0XHRcdFx0ICAgICAgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOTpydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTExMTpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTItXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE1Olx0XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNi1cdFx0XHRcdTAwMjZtYi1cdTAwM2VjaGlwX2luZm8tXHUwMDNlZXh0aW50c1tpXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTExMjg9c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTI5OnJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMzAtXHRcdFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTEzMi1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTMzOlx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEzNDpcdHN0cnVjdCBydGw4MzY1bWIgKm1iO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTM1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTQ2LVx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExNDg6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0OTpcdFx0cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE1MC1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc3LVx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE3ODpcdCAqIGluIHRoZSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua197dXAsZG93bn0gZnVuY3Rpb25zLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc5LVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjc6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjQ3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNDkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyOTEte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjkyOlx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVx1MDAzZWNoaXBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MzpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyOTQtXHR1MzIgb3B0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNS0gKiB0aGVpciBtYXhpbXVtIGluIGl0cyBzd2l0Y2ggaW5pdCwgdW5jb25kaXRpb25hbGx5IGZvciB0aGUgd2hvbGUgY2hpcFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzM2OiAqIGZhbWlseS4gVGhlIGNoaXAgcmVzZXQgaW4gcnRsODM2NW1iX3NldHVwKCkgcHV0cyB0aGVtIGJhY2sgdG8gdGhlaXIgcmVzZXRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNy0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzQ0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzQ1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzNzE6c3RhdGljIGludCBydGw4MzY1bWJfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzcyLVx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc2Olx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpzZHNfamFtO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzc3LVx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc4Olx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwY3NfdG9fcnRsODM2NW1iKHBjcyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzktXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM4OC1cdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCkge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDQyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBEcml2ZXIgUmVnaXN0cmF0aW9uIGFuZCBQcm9iZSBGbG93KioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gaG93IHRoZXNlIFJlYWx0ZWsgU01JIGFuZCBNRElPIGRyaXZlcnMgYXJlIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0cmF0aW9uIGFuZCBwcm9iaW5nIHByb2Nlc3MgZm9yIHRoZSBgcnRsODM2NW1iX3NtaV9kcml2ZXJgIGFuZCBgcnRsODM2NW1iX21kaW9fZHJpdmVyYC4gSSBrbm93IHRoZXkmIzM5O3JlIGNyaXRpY2FsIGZvciBhY2Nlc3NpbmcgdGhlIHN3aXRjaCBoYXJkd2FyZSwgc28gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGByZWFsdGVrLXNtaS5jYCBhbmQgYHJlYWx0ZWstbWRpby5jYC4gVGhvc2Ugc291cmNlIGZpbGVzIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGxvZ2ljIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBJJiMzOTttIGFmdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlYWx0ZWtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1ODggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLKVx0XHQmIzQzOz0gcmVhbHRla19kc2Eub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXHRcdFx0Oj0gcnRsODN4eC5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICYjNDM7PSByZWFsdGVrLXNtaS5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03My17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03NS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA1Olx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XHQucmVnX3dyaXRlID0gcmVhbHRla19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA5LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjIte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19tZGlvX2luZm8pO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVx0aWYgKElTX0VSUihwcml2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXHRwcml2LVx1MDAzZW1kaW9fYWRkciA9IG1kaW9kZXYtXHUwMDNlYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDUtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTYte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3Olx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE3OS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxODppbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjUyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTU4LVx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVx1MDAzZW1kaW8sIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjY1Olx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTcwLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjcxOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sIDEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjc3OnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODMtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg5LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVx0LyogQWRkIGEgY2xpY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTI6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTAyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGRhdGEsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cdGZvciAoOyBsZW4gXHUwMDNlIDA7IGxlbi0tKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sICEhKGRhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyAobGVuIC0gMSkpKSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjU6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTMwLVx0XHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTM5OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcdFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDEsIFx1MDAyNmFjayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cdFx0aWYgKGFjayA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MjpcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcdHJldHVybiByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIGRhdGEsIDgpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cdC8qIFJlYWQgZGF0YSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXHUwMDI2dCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cdCpkYXRhID0gKHQgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVx0LyogU2VuZCBhbiBBQ0sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODY6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkwLVx0LyogUmVhZCBkYXRhICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCA4LCBcdTAwMjZ0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVx0KmRhdGEgPSAodCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTQtXHQvKiBTZW5kIGFuIEFDSyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIDB4MDEsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cdC8qIFNlbmQgUkVBRCBjb21tYW5kICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNtZF9yZWFkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXHQvKiBSZWFkIERBVEFbNzowXSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjc6XHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFx1MDAyNmxvKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjI4LVx0LyogUmVhZCBEQVRBWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEocHJpdiwgXHUwMDI2aGkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2Olx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cdFx0XHRcdCB1MzIgYWRkciwgdTMyIGRhdGEsIGJvb2wgYWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNTA6XHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTItXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBwcml2LVx1MDAzZXZhcmlhbnQtXHUwMDNlY21kX3dyaXRlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Ny1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXHQvKiBXcml0ZSBEQVRBWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cdGlmIChhY2spXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NDpcdFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAzZVx1MDAzZSA4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XHRcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2socHJpdiwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODItIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjg0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjkzOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1Olx0cmV0dXJuIHJlYWx0ZWtfc21pX3dyaXRlX3JlZyhjdHgsIHJlZywgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAyOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDQ6XHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwOTpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzExOlx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcdC5yZWdfcmVhZCA9IHJlYWx0ZWtfc21pX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMyMDogKiByZWFsdGVrX3NtaV9wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIFNNSS1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMy1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzUtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzOC1cdGlmIChJU19FUlIocHJpdikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjMtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NzogKiByZWFsdGVrX3NtaV9yZW1vdmUoKSAtIFJlbW92ZSB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM3ODpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM4OS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDg6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfc2h1dGRvd24sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTM6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjIwOnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MjE6c3RydWN0IHJlYWx0ZWtfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD00MT1zdHJ1Y3QgcnRsODM2Nl92bGFuXzRrIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NDg6c3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTUtXHRzdHJ1Y3QgZGV2aWNlXHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjgxOlx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cdGludFx0XHRcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDYtICogQGRldGVjdDogZGV0ZWN0cyB0aGUgY2hpcHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA5Olx0aW50XHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlx0aW50XHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMTpcdGludFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEyOlx0aW50XHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTMtXHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE1LVx0XHRcdFx0ICAgdTY0ICptaWJ2YWx1ZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2Olx0aW50XHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExODpcdGludFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExOS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XHRpbnRcdCgqZ2V0X3ZsYW5fNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcdGludFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI0Olx0aW50XHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjU6XHRpbnRcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjY6XHRib29sXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjc6XHRpbnRcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjg6XHRpbnRcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyOTpcdGludFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzA6XHRpbnRcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzEtXHRcdFx0XHQgICAgICB1MzIgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlx0aW50XHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVx0XHRcdFx0XHQgdTMyIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcdGludFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcdGludFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVx0XHRcdFx0ICAgICBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3Olx0aW50XHQoKnBvcnRfc2V0X3VjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXHRcdFx0XHRcdGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XHRpbnRcdCgqcG9ydF9zZXRfbWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cdFx0XHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcdGludFx0KCpwb3J0X3NldF9iY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVx0XHRcdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlx0aW50XHQoKmwyX2FkZF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ2Olx0aW50XHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ3LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5Olx0aW50XHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlx0XHRcdFx0ICBpbnQgcG9ydCwgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlx0aW50XHQoKmwyX2FkZF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlx0aW50XHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU1Olx0aW50XHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU2Olx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTc6XHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1OC1cdFx0XHQgICAgIHUxNiB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1OTpcdGludFx0KCpwaHlfcmVhZF9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXHRcdFx0XHRpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjE6XHRpbnRcdCgqcGh5X3dyaXRlX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2Mi1cdFx0XHRcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2NTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjYtXHRjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgKmRzX29wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjc6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjgtXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3OC0vKiBSVEw4MzY2IGxpYnJhcnkgaGVscGVycyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3OTppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODA6aW50IHJ0bDgzNjZfc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHZpZCwgdTMyIG1lbWJlcixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xODEtXHRcdCAgICAgdTMyIHVudGFnLCB1MzIgZmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODI6aW50IHJ0bDgzNjZfc2V0X3B2aWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgzLVx0XHQgICAgIHVuc2lnbmVkIGludCB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NDppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxODU6aW50IHJ0bDgzNjZfZW5hYmxlX3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NjppbnQgcnRsODM2Nl9yZXNldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4Ny1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTU9dm9pZCBydGw4MzY2X2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTk3OmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDY1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBSVEw4M3h4IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcnRsODN4eGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBydGw4M3h4LmNgIGZpbGUuIFRoZSBlbnRyeSBwb2ludCBzZWVtcyB0byBiZSBgcnRsODN4eF9wcm9iZSgpYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgZGV0ZWN0ZWQgYW5kIGluaXRpYWxpemVkLiBTbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBydGw4M3h4LmNgIGFuZCBzdGFydCB0cmFjaW5nIHRocm91Z2ggdGhlIHByb2JlIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkLCBob3cgdGhlIHJlZ2lzdGVyIHNwYWNlIGlzIG1hcHBlZCwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaGVyZSwgdGhlIHNlcXVlbmNlIG9mIGNvbW1hbmRzLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgbW9kZWxzLCBpZiBpdCBkb2VzIGF0IGFsbC4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyB0aGlzIGRyaXZlci4gSSBob3BlIHRoZSBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGJlY2F1c2UgSSBoYXZlIGEgZmVlbGluZyBJJiMzOTtsbCBiZSBoZXJlIGZvciBhIGJpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCYjNDM7XG4gICAyOlx0XG4gICAzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7cmVhbHRlay5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG4gIDEyOlx0XG4gIDEzOlx0LyoqXG4gIDE0Olx0ICogcnRsODN4eF9sb2NrKCkgLSBMb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXG4gIDE1Olx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcbiAgMTY6XHQgKlxuICAxNzpcdCAqIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHJlZ21hcCB0byBiZSB1c2VkIGFzIHRoZSBsb2NrIGZ1bmN0aW9uLlxuICAxODpcdCAqIEl0IGlzIGFsc28gdXNlZCBleHRlcm5hbGx5IHRvIGJsb2NrIHJlZ21hcCBiZWZvcmUgZXhlY3V0aW5nIG11bHRpcGxlXG4gIDE5Olx0ICogb3BlcmF0aW9ucyB0aGF0IG11c3QgaGFwcGVuIGluIHNlcXVlbmNlICh3aGljaCB3aWxsIHVzZVxuICAyMDpcdCAqIHJlYWx0ZWtfcHJpdi5tYXBfbm9sb2NrIGluc3RlYWQpLlxuICAyMTpcdCAqXG4gIDIyOlx0ICogQ29udGV4dDogQ2FuIHNsZWVwLiBIb2xkcyBwcml2LVx1MDAzZW1hcF9sb2NrIGxvY2suXG4gIDIzOlx0ICogUmV0dXJuOiBub3RoaW5nXG4gIDI0Olx0ICovXG4gIDI1Olx0dm9pZCBydGw4M3h4X2xvY2sodm9pZCAqY3R4KVxuICAyNjpcdHtcbiAgMjc6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG4gIDI4Olx0XG4gIDI5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWFwX2xvY2spO1xuICAzMDpcdH1cbiAgMzE6XHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X2xvY2ssIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAgMzI6XHRcbiAgMzM6XHQvKipcbiAgMzQ6XHQgKiBydGw4M3h4X3VubG9jaygpIC0gVW5sb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXG4gIDM1Olx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcbiAgMzY6XHQgKlxuICAzNzpcdCAqIFRoaXMgZnVuY3Rpb24gdW5sb2NrcyB0aGUgbG9jayBhY3F1aXJlZCBieSBydGw4M3h4X2xvY2suXG4gIDM4Olx0ICpcbiAgMzk6XHQgKiBDb250ZXh0OiBSZWxlYXNlcyBwcml2LVx1MDAzZW1hcF9sb2NrIGxvY2suXG4gIDQwOlx0ICogUmV0dXJuOiBub3RoaW5nXG4gIDQxOlx0ICovXG4gIDQyOlx0dm9pZCBydGw4M3h4X3VubG9jayh2b2lkICpjdHgpXG4gIDQzOlx0e1xuICA0NDpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbiAgNDU6XHRcbiAgNDY6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAgNDc6XHR9XG4gIDQ4Olx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF91bmxvY2ssIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAgNDk6XHRcbiAgNTA6XHRzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0pXG4gIDUxOlx0e1xuICA1MjpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuICA1MzpcdFxuICA1NDpcdFx0cmV0dXJuIHByaXYtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKHByaXYsIGFkZHIsIHJlZ251bSk7XG4gIDU1Olx0fVxuICA1NjpcdFxuICA1NzpcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXG4gIDU4Olx0XHRcdFx0XHQgICB1MTYgdmFsKVxuICA1OTpcdHtcbiAgNjA6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1OTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIHJ0bDgzeHguYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgYSBzcGVjaWZpYyBzY2VuYXJpby4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IGludG8gYHJ0bDgzeHguY2AsIGZvY3VzaW5nIG9uIGxpbmVzIDEyMCB0aHJvdWdoIDIyMC4gSSByZW1lbWJlciB0aGF0IHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgdmFyaW91cyBQSFkgcmVnaXN0ZXJzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBwYXJ0IHdoZXJlIGl0IHNldHMgdXAgdGhlIGluaXRpYWwgbGluayBzZXR0aW5ncyBmb3IgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgaXQgaGFuZGxlcyB0aGUgYXV0by1uZWdvdGlhdGlvbiwgY29uc2lkZXJpbmcgd2hhdCBoYXMgYmVlbiByZXBvcnRlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyByZWdpc3RlciBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTIwOlx0XG4gMTIxOlx0XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG4gMTIyOlx0XHRpZiAocmV0KSB7XG4gMTIzOlx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3VuYWJsZSB0byByZWdpc3RlciBNRElPIGJ1cyAlc1xcblwmIzM0OyxcbiAxMjQ6XHRcdFx0XHRidXMtXHUwMDNlaWQpO1xuIDEyNTpcdFx0XHRnb3RvIGVycl9wdXRfbm9kZTtcbiAxMjY6XHRcdH1cbiAxMjc6XHRcbiAxMjg6XHRcdHByaXYtXHUwMDNldXNlcl9taWlfYnVzID0gYnVzO1xuIDEyOTpcdFxuIDEzMDpcdGVycl9wdXRfbm9kZTpcbiAxMzE6XHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuIDEzMjpcdFxuIDEzMzpcdFx0cmV0dXJuIHJldDtcbiAxMzQ6XHR9XG4gMTM1Olx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9zZXR1cF91c2VyX21kaW8sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAxMzY6XHRcbiAxMzc6XHQvKipcbiAxMzg6XHQgKiBydGw4M3h4X3Byb2JlKCkgLSBwcm9iZSBhIFJlYWx0ZWsgc3dpdGNoXG4gMTM5Olx0ICogQGRldjogdGhlIGRldmljZSBiZWluZyBwcm9iZWRcbiAxNDA6XHQgKiBAaW50ZXJmYWNlX2luZm86IHNwZWNpZmljIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGluZm8uXG4gMTQxOlx0ICpcbiAxNDI6XHQgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHJlYWx0ZWtfcHJpdiBhbmQgcmVhZHMgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdHJlZVxuIDE0MzpcdCAqIG5vZGUuIFRoZSBzd2l0Y2ggaXMgaGFyZCByZXNldHRlZCBpZiBhIG1ldGhvZCBpcyBwcm92aWRlZC5cbiAxNDQ6XHQgKlxuIDE0NTpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cbiAxNDY6XHQgKiBSZXR1cm46IFBvaW50ZXIgdG8gdGhlIHJlYWx0ZWtfcHJpdiBvciBFUlJfUFRSKCkgaW4gY2FzZSBvZiBmYWlsdXJlLlxuIDE0NzpcdCAqXG4gMTQ4Olx0ICogVGhlIHJlYWx0ZWtfcHJpdiBwb2ludGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZnJlZWQgYXMgaXQgaXMgY29udHJvbGxlZCBieVxuIDE0OTpcdCAqIGRldnJlcy5cbiAxNTA6XHQgKi9cbiAxNTE6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpcbiAxNTI6XHRydGw4M3h4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldixcbiAxNTM6XHRcdCAgICAgIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvICppbnRlcmZhY2VfaW5mbylcbiAxNTQ6XHR7XG4gMTU1Olx0XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50ICp2YXI7XG4gMTU2Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuIDE1NzpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmMgPSB7XG4gMTU4Olx0XHRcdC5yZWdfYml0cyA9IDEwLCAvKiBBNC4uQTAgUjQuLlIwICovXG4gMTU5Olx0XHRcdC52YWxfYml0cyA9IDE2LFxuIDE2MDpcdFx0XHQucmVnX3N0cmlkZSA9IDEsXG4gMTYxOlx0XHRcdC5tYXhfcmVnaXN0ZXIgPSAweGZmZmYsXG4gMTYyOlx0XHRcdC5yZWdfZm9ybWF0X2VuZGlhbiA9IFJFR01BUF9FTkRJQU5fQklHLFxuIDE2MzpcdFx0XHQucmVnX3JlYWQgPSBpbnRlcmZhY2VfaW5mby1cdTAwM2VyZWdfcmVhZCxcbiAxNjQ6XHRcdFx0LnJlZ193cml0ZSA9IGludGVyZmFjZV9pbmZvLVx1MDAzZXJlZ193cml0ZSxcbiAxNjU6XHRcdFx0LmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLFxuIDE2NjpcdFx0XHQubG9jayA9IHJ0bDgzeHhfbG9jayxcbiAxNjc6XHRcdFx0LnVubG9jayA9IHJ0bDgzeHhfdW5sb2NrLFxuIDE2ODpcdFx0fTtcbiAxNjk6XHRcdGludCByZXQ7XG4gMTcwOlx0XG4gMTcxOlx0XHR2YXIgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiAxNzI6XHRcdGlmICghdmFyKVxuIDE3MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAxNzQ6XHRcbiAxNzU6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplX2FkZChzaXplb2YoKnByaXYpLCB2YXItXHUwMDNlY2hpcF9kYXRhX3N6KSxcbiAxNzY6XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4gMTc3Olx0XHRpZiAoIXByaXYpXG4gMTc4Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDE3OTpcdFxuIDE4MDpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VtYXBfbG9jayk7XG4gMTgxOlx0XHRpZiAocmV0KVxuIDE4MjpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE4MzpcdFxuIDE4NDpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2V2bGFuX2xvY2spO1xuIDE4NTpcdFx0aWYgKHJldClcbiAxODY6XHRcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiAxODc6XHRcbiAxODg6XHRcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFx1MDAyNnByaXYtXHUwMDNlbDJfbG9jayk7XG4gMTg5Olx0XHRpZiAocmV0KVxuIDE5MDpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE5MTpcdFxuIDE5MjpcdFx0cmMubG9ja19hcmcgPSBwcml2O1xuIDE5MzpcdFx0cHJpdi1cdTAwM2VtYXAgPSBkZXZtX3JlZ21hcF9pbml0KGRldiwgTlVMTCwgcHJpdiwgXHUwMDI2cmMpO1xuIDE5NDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZW1hcCkpIHtcbiAxOTU6XHRcdFx0cmV0ID0gUFRSX0VSUihwcml2LVx1MDAzZW1hcCk7XG4gMTk2Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDE5NzpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE5ODpcdFx0fVxuIDE5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA1NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUTDgzeHggRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcnRsODN4eF9wcm9iZSgpYCBuZWVkcyBgb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGFuIE9GIChEZXZpY2UgVHJlZSkgZGV2aWNlLCBsaWtlbHkgYSBwbGF0Zm9ybSBkcml2ZXIgb3IgTURJTyBkcml2ZXIuIExvb2tpbmcgYXQgdGhlIGBydGw4MzY1bWJfb2ZfbWF0Y2hgIHRhYmxlLCBpdCYjMzk7cyBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoLiBUaGlzIGRyaXZlciwgYXMgSSByZWNhbGwsIHRhbGtzIHRvIHRoZSBzd2l0Y2ggaGFyZHdhcmUgdmlhIFNNSSAoR1BJTykgb3IgTURJTy4gSXQgYWJzb2x1dGVseSByZXF1aXJlcyB0aGF0IHRoZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcCBiZSBjb25uZWN0ZWQgYW5kIHJlc3BvbmRpbmcuCgpOb3csIHRoZSBjcnVjaWFsIHBvaW50OiBXZSYjMzk7cmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgc3BlY2lmaWNhbGx5LCBRRU1VIG9yIHBlcmhhcHMgR0NFIG9uIHg4Nl82NC9hbWQ2NC4gSSBrbm93LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHRleHQsIHRoYXQgdGhlcmUmIzM5O3MgKm5vKiBlbXVsYXRlZCBSVEw4MzY1TUIgRFNBIHN3aXRjaCBjaGlwIGluIFFFTVUuIERTQSBzd2l0Y2hlcywgYW5kIGJ5IGV4dGVuc2lvbiBoYXJkd2FyZSBzd2l0Y2ggY2hpcHMgbGlrZSB0aGUgUmVhbHRlayBSVEw4MzY1TUIgb3IgUlRMODM2NlJCLCBjYW5ub3QgYmUgcHJvYmVkIHdpdGhvdXQgdGhhdCBwaHlzaWNhbCBwcmVzZW5jZSwgdGhlIGNvcnJlY3QgT0YgZGV2aWNldHJlZSBub2RlLCBhbmQsIGNyaXRpY2FsbHksIGEgaGFyZHdhcmUgcmVzcG9uc2UuCgpUaGlzIHNpdHVhdGlvbiBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgc2NlbmFyaW8uIFRoZSB0ZXh0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIFNtYXJ0TklDcy4gSWYgdGhleSBuZWVkIGEgY2FyZCBvciBBU0lDLCB0aGVuIFFFTVUgaXNuJiMzOTt0IGdvaW5nIHRvIGVtdWxhdGUgdGhlbS4KCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBpcyBzaW1pbGFybHkgaW5hY2Nlc3NpYmxlLiBMZXQmIzM5O3MgbG9vayBhdCBgcmVhbHRla19tYWluLmNgLiBBaCwgdGhlIGBSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldGAgUEhZIHdpdGggSUQgYDB4MDAxY2M5NDJgIGlzIHJlZ2lzdGVyZWQgdGhlcmUuIFBIWSBkcml2ZXJzIHByb2JlIGJhc2VkIG9uIE1ESU8gYnVzIHJlYWRzIG9mIE1JSV9QSFlTSUQxLzIgYW5kIG1hdGNoaW5nIHRoZSBJRC4gQnV0LCBhZ2FpbiwgdGhlcmUmIzM5O3Mgbm8gZW11bGF0aW9uIGhlcmUuIFFFTVUgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIFJlYWx0ZWsgUlRMODM2NU1CIFBIWXMgb3IgRFNBIHN3aXRjaGVzLgoKVGhlIGNvcmUgcHJvYmxlbSwgZnJvbSBhIHByb2JpbmcgcGVyc3BlY3RpdmUgaXMsIHdoZXJlJiMzOTtzIHRoZSBidXMgYW5kIHdoZXJlJiMzOTtzIHRoZSByZXNwb25zZT8gSXQgc2VlbXMgdW5saWtlbHkuCgpMZXQmIzM5O3MgZG8gb25lIGxhc3QgY2hlY2sgdGhvdWdoLCB0byBtYWtlIGFic29sdXRlbHkgc3VyZTogSXMgdGhlcmUgKmFueSogdmlydHVhbCBidXMgb3Igc29mdHdhcmUgZW11bGF0aW9uIHRoYXQgY291bGQgaW52b2tlIHRoZXNlIGNhbGxiYWNrcywgZXZlbiBhIERTQSBtb2NrIGRyaXZlcj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXJlIGlzbiYjMzk7dCBzb21ldGhpbmcgc25lYWt5IGluIHRoZSBrZXJuZWwgdGhhdCB3b3VsZCBnaXZlIHRoZSAqYXBwZWFyYW5jZSogb2YgaGFyZHdhcmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYW55dGhpbmcgRFNBIG1vY2sgcmVsYXRlZCBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNjk1CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZHNhX2xvb3AuY2AgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciBpdCYjMzk7cyBmb2N1c2VkIG9uIHRlc3RpbmcgdGhlIERTQSBjb3JlLCBzcGVjaWZpY2FsbHkgdXNpbmcgdGhlIGBkc2FfbG9vcF9kcml2ZXJgLiBIb3dldmVyLCBpdCYjMzk7cyBleHBsaWNpdGx5ICpub3QqIHVzaW5nIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggb3IgYHJ0bDgzNjVtYmAgZHJpdmVycyBpbiBhICYjMzQ7cmVhbCYjMzQ7IHdheS4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvZGUgaW4gYHJlYWx0ZWsuaGAsIGBydGw4MzY1bWJfbWFpbi5jYCwgYHJ0bDgzeHguY2AsIGFuZCBgcmVhbHRla19tYWluLmNgIOKAkyBhbGwgcmVsYXRlZCB0byB0aGUgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGFuZCBpdHMgaW50ZWdyYXRlZCBSVEw4MzY1TUItVkMgUEhZLgoKTXkgaW5pdGlhbCB0aG91Z2h0cz8gVGhpcyBzY3JlYW1zICYjMzQ7ZGVkaWNhdGVkIGhhcmR3YXJlIHJlcXVpcmVkLiYjMzQ7IFRoZXNlIFJlYWx0ZWsgY29tcG9uZW50cyBhcmUgZGVzaWduZWQgdG8gYmUgY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTywgYW5kIHJlbHkgb24gZWl0aGVyIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBlbnRyeSBvciBNRElPIGJ1cyBjb25maWd1cmF0aW9uLiBJbXBvcnRhbnRseSwgbmVpdGhlciB0aGUgc3dpdGNoIEFTSUMgbm9yIHRoZSBQSFkgYXJlIGVtdWxhdGVkIGluIHR5cGljYWwgdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50LgoKTGV0IG1lIGJyZWFrIGRvd24gdGhlIHJlYXNvbmluZyBzeXN0ZW1hdGljYWxseToKCiogICAqKlVucmVhY2hhYmxlIEhhcmR3YXJlOioqIFRoZSBSVEw4MzY1TUIgc3dpdGNoIGFuZCBQSFkgYXJlICpwaHlzaWNhbGx5KiB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBzb2Z0d2FyZSwgaXQgY2Fubm90IGludGVyYWN0IHdpdGggbm9uLWV4aXN0ZW50IGhhcmR3YXJlLgoqICAgKipXb3J0aEZ1enppbmcgRmxhZzoqKiBHaXZlbiB0aGUgbGFjayBvZiBoYXJkd2FyZSBwcmVzZW5jZSwgdGhlcmUmIzM5O3Mgbm8gcmVhbGlzdGljIGNoYW5jZSB0aGF0IGZ1enppbmcgd2lsbCBwcm9kdWNlIGFueSBtZWFuaW5nZnVsIHJlc3VsdHMuIFRoZXJlZm9yZSwgc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRlY2lzaW9uLgoqICAgKipDb25maWd1cmF0aW9uIENvbmNlcm5zOioqIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBpcnJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhleSBhcmUgZWZmZWN0aXZlbHkgbnVsbCBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LgoKVGhlIHBhdGNoJiMzOTtzIGFjdHVhbCBmdW5jdGlvbiDigJMgYWRkaW5nIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhbmQgRUVFIHN1cHBvcnQg4oCTIGlzIGlycmVsZXZhbnQuIFRoZSBoYXJkd2FyZSYjMzk7cyBpbmFjY2Vzc2liaWxpdHkgaXMgdGhlIGtleSBkZXRlcm1pbmVyLiBXZSBhcmUgdGFsa2luZyBhYm91dCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyBhbmQgUEhZIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYW5kIHByb2JlZCB2aWEgRGV2aWNlIFRyZWUuIFRoZSBQSFkgSUQgc3BlY2lmaWNhbGx5IG1hcHMgdG8gUlRMODM2NU1CLVZDLiBHaXZlbiB0aGUgaGFyZHdhcmUmIzM5O3MgYWJzZW5jZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gY2FsbGluZyB0aGlzIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzoyOC45OTU1OTM2OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyMzkwMzQzMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjI4Ljk5NTU5ODIzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4MTcwMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE0OjAzOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaCBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaFxcbmluZGV4IDc1YTEyNzU0NWU1ZGQuLjFjMGNhNmRhZjU0NTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oXFxuQEAgLTE1Niw2ICsxNTYsMTAgQEAgc3RydWN0IHJlYWx0ZWtfb3BzIHtcXG4gXFx0aW50XFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XFxuIFxcdGludFxcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbiBcXHRcXHRcXHQgICAgIHUxNiB2YWwpO1xcbitcXHRpbnRcXHQoKnBoeV9yZWFkX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHRpbnQgcmVnbnVtKTtcXG4rXFx0aW50XFx0KCpwaHlfd3JpdGVfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuK1xcdFxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcXG4gfTtcXG4gXFxuIHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbmluZGV4IDRjMzA1NzU2MTE2Y2MuLjk5OGY2YjJhZDE0MDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcXG5AQCAtMTAxLDYgKzEwMSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfdmxhbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInJlYWx0ZWsuaFxcXCJcXG5AQCAtMjAyLDYgKzIwMywxMCBAQFxcbiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX1BIWVJFR19CQVNFXFx0XFx0MHhBNDAwXFxuIFxcbisjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEVcXHRcXHRcXHQweEE1QzRcXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFZcXHRcXHRcXHQweEE1RDBcXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9MUEFCTEVcXHRcXHQweEE1RDJcXG4rXFxuIC8qIEV4dGVybmFsIGludGVyZmFjZSBwb3J0IG1vZGUgdmFsdWVzIC0gdXNlZCBpbiBESUdJVEFMX0lOVEVSRkFDRV9TRUxFQ1QgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXFx0XFx0MFxcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXFx0XFx0MVxcbkBAIC0xMDQwLDYgKzEwNDUsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHQgIGludCByZWdudW0pXFxuK3tcXG4rXFx0dTMyIG9jcF9hZGRyO1xcbitcXHR1MTYgdmFsO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKHBoeSBcXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fUENTX0VFRV9BQkxFKVxcbitcXHRcXHRvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0FCTEU7XFxuK1xcdGVsc2UgaWYgKGRldmFkID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuK1xcdFxcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xcbitcXHRlbHNlIGlmIChkZXZhZCA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxcbitcXHRcXHRvY3BfYWRkciA9IFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRTtcXG4rXFx0ZWxzZVxcbitcXHRcXHQvKiBPbmx5IHRoZSBFRUUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQ7IG90aGVycyByZWFkIGFzIDAsIGFzIHRoZVxcbitcXHRcXHQgKiBoYXJkd2FyZSBkb2VzLCBzbyB0aGUgZ2VuZXJpYyBNTUQgY29kZSBpcyBub3QgdHJpcHBlZCB1cCBieVxcbitcXHRcXHQgKiBhbiBlcnJvci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZhaWxlZCB0byByZWFkIFBIWSVkIE9DUCAlMDR4LCByZXQgJWRcXFxcblxcXCIsIHBoeSwgb2NwX2FkZHIsXFxuK1xcdFxcdFxcdHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB2YWw7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZV9jNDUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbit7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGh5IFxcdTAwM2UgUlRMODM2NU1CX1BIWUFERFJNQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0LyogT25seSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgcmVnaXN0ZXIgaXMgd3JpdGFibGU7IHdyaXRlcyB0byBvdGhlclxcbitcXHQgKiByZWdpc3RlcnMgYXJlIGlnbm9yZWQsIGFzIHRoZSBoYXJkd2FyZSBkb2VzLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRldmFkICE9IE1ESU9fTU1EX0FOIHx8IHJlZ251bSAhPSBNRElPX0FOX0VFRV9BRFYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHZhbCk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWlsZWQgdG8gd3JpdGUgUEhZJWQgT0NQICUwNHgsIHJldCAlZFxcXFxuXFxcIiwgcGh5LFxcbitcXHRcXHRcXHRSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxcbiBydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxcbiB7XFxuQEAgLTE2MzksNiArMTcwNCwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJLFxcbiBcXHRcXHRcXHQgIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0LyogSW50ZWdyYXRlZCBQSFlzIHN1cHBvcnQgRUVFIGF0IDEwME0vMUc7IHRoZSBoYXJkd2FyZSBtYW5hZ2VzXFxuK1xcdFxcdCAqIExQSSBvbiBpdHMgb3duLCBzbyBqdXN0IGFkdmVydGlzZSBMUEkgYXdhcmVuZXNzIHRvIHBoeWxpbmsuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRtZW1jcHkoY29uZmlnLVxcdTAwM2VscGlfaW50ZXJmYWNlcywgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyxcXG4rXFx0XFx0ICAgICAgIHNpemVvZihjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzKSk7XFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7XFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlZWVlX2VuYWJsZWRfZGVmYXVsdCA9IHRydWU7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG5AQCAtMzI3NSwxOCArMzM0OCw2NiBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9kZXRlY3Qoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgdGltZXIsIGJvb2wgdHhfY2xvY2tfc3RvcClcXG4re1xcbitcXHQvKiBUaGUgaGFyZHdhcmUgbWFuYWdlcyBMUEkgaXRzZWxmOyB0aGVyZSBpcyBubyBNQUMtbGV2ZWwgTFBJIGNvbnRyb2wuXFxuK1xcdCAqIFRoaXMgY2FsbGJhY2sgb25seSBzaWduYWxzIExQSSBhd2FyZW5lc3MgdG8gcGh5bGluay5cXG4rXFx0ICovXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuK3tcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4gXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuIFxcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG4gXFx0Lm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLFxcbiBcXHQubWFjX2xpbmtfdXAgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua191cCxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXFxuK1xcdC5tYWNfZGlzYWJsZV90eF9scGkgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXFxuIH07XFxuIFxcbitzdGF0aWMgYm9vbCBydGw4MzY1bWJfc3VwcG9ydF9lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4re1xcbitcXHQvKiBPbmx5IGludGVncmF0ZWQtUEhZIHBvcnRzIHN1cHBvcnQgRUVFLCBub3QgdGhlIGV4dGVybmFsIFJHTUlJIHBvcnRzLiAqL1xcbitcXHRyZXR1cm4gIXJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoZHMtXFx1MDAzZXByaXYsIHBvcnQpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG4re1xcbitcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHQvKiBUaGUgb25seSBMUEkgdGltaW5nIGNvbnRyb2wgKHR4X2xwaV90aW1lcikgaXMgYSBzaW5nbGUgZ2xvYmFsXFxuK1xcdCAqIHBlci1zcGVlZCByZWdpc3RlciBzaGFyZWQgYnkgYWxsIHBvcnRzLCBzbyBpdCBjYW5ub3QgYmUgc2V0IGZyb20gdGhpc1xcbitcXHQgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpc1xcbitcXHQgKiBkcml2ZW4gdGhyb3VnaCB0aGUgUEhZIGFkdmVydGlzZW1lbnQuIFJlamVjdCB0aGUgcGVyLXBvcnQgVFggTFBJIGtub2JzXFxuK1xcdCAqIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uXFxuK1xcdCAqL1xcbitcXHRpZiAoIWUtXFx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XFxuK1xcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZGlzYWJsaW5nIEVFRSBUWCBMUEkgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGUtXFx1MDAzZXR4X2xwaV90aW1lcikge1xcbitcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcInNldHRpbmcgdGhlIEVFRSBUWCBMUEkgdGltZXIgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgcnRsODM2NW1iX3N3aXRjaF9vcHMgPSB7XFxuIFxcdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXFxuIFxcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXFxuIFxcdC5zZXR1cCA9IHJ0bDgzNjVtYl9zZXR1cCxcXG4gXFx0LnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLFxcbitcXHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXFxuK1xcdC5zZXRfbWFjX2VlZSA9IHJ0bDgzNjVtYl9zZXRfbWFjX2VlZSxcXG4gXFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcXG4gXFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXFxuIFxcdC5wb3J0X2JyaWRnZV9sZWF2ZSA9IHJ0bDgzeHhfcG9ydF9icmlkZ2VfbGVhdmUsXFxuQEAgLTMzMzIsNiArMzQ1Myw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4gXFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxcbiBcXHQucGh5X3JlYWQgPSBydGw4MzY1bWJfcGh5X3JlYWQsXFxuIFxcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxcbitcXHQucGh5X3JlYWRfYzQ1ID0gcnRsODM2NW1iX3BoeV9yZWFkX2M0NSxcXG4rXFx0LnBoeV93cml0ZV9jNDUgPSBydGw4MzY1bWJfcGh5X3dyaXRlX2M0NSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXFxuaW5kZXggODEyMWVjMTJmZDhiYS4uYWQ0MmMwNWQwYTg4ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcXG5AQCAtNjIsNiArNjIsMjIgQEAgc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG4gXFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldmFkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtKVxcbit7XFxuK1xcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbit7XFxuK1xcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfd3JpdGVfYzQ1KHByaXYsIGFkZHIsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcXG4gICogQGRzOiBEU0Egc3dpdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHVzZXJfbWlpX2J1c1xcbkBAIC05NSw2ICsxMTEsMTAgQEAgaW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0YnVzLVxcdTAwM2VuYW1lID0gXFxcIlJlYWx0ZWsgdXNlciBNSUlcXFwiO1xcbiBcXHRidXMtXFx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xcbiBcXHRidXMtXFx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkX2M0NSlcXG4rXFx0XFx0YnVzLVxcdTAwM2VyZWFkX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1O1xcbitcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfd3JpdGVfYzQ1KVxcbitcXHRcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlX2M0NTtcXG4gXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXM6dXNlcl9taWlcXFwiLCBkZXZfbmFtZShwcml2LVxcdTAwM2VkZXYpKTtcXG4gXFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBwcml2LVxcdTAwM2VkZXY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggMTc3YjYyYTdiMmQxNi4uYWQ4MDE3ZTkxYjRmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTMzODgsNiArMzM4OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcXG4gXFx0fSwge1xcbiBcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk0MiksXFxuIFxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbitcXHRcXHQucmVhZF9tbWRcXHQ9IGdlbnBoeV9yZWFkX21tZF9jNDUsXFxuK1xcdFxcdC53cml0ZV9tbWRcXHQ9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxcbiBcXHRcXHQvKiBJbnRlcnJ1cHQgaGFuZGxpbmcgYW5hbG9nb3VzIHRvIFJUTDgzNjZSQiAqL1xcbiBcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGdlbnBoeV9ub19jb25maWdfaW50cixcXG4gXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBnZW5waHlfaGFuZGxlX2ludGVycnVwdF9ub19hY2ssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjI5LjQ1NDQzNzg0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTAyNzgwMTc2NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIENsYXVzZSA0NSBNRElPIHJlYWQvd3JpdGUgYW5kIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIGFuZCB0aGUgUlRMODM2NU1CLVZDIGludGVncmF0ZWQgUEhZIGRyaXZlci4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPKSBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU0NTJjYTgzYmMzZGE4YzhhNzQ3ZmM1MWYzNmQ5Mzk3NTAxZTI5MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MDM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmggYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbmluZGV4IDc1YTEyNzU0NWU1ZGQuLjFjMGNhNmRhZjU0NTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaFxuQEAgLTE1Niw2ICsxNTYsMTAgQEAgc3RydWN0IHJlYWx0ZWtfb3BzIHtcbiBcdGludFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XG4gXHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCAgICAgdTE2IHZhbCk7XG4rXHRpbnRcdCgqcGh5X3JlYWRfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4rXHRcdFx0XHRpbnQgcmVnbnVtKTtcbitcdGludFx0KCpwaHlfd3JpdGVfYzQ1KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgaW50IHJlZ251bSwgdTE2IHZhbCk7XG4gfTtcbiBcbiBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNGMzMDU3NTYxMTZjYy4uOTk4ZjZiMmFkMTQwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMDEsNiArMTAxLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfdmxhbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJyZWFsdGVrLmhcIlxuQEAgLTIwMiw2ICsyMDMsMTAgQEBcbiAvKiBUaGUgUEhZIE9DUCBhZGRyZXNzZXMgb2YgUEhZIHJlZ2lzdGVycyAwfjMxIHN0YXJ0IGhlcmUgKi9cbiAjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfUEhZUkVHX0JBU0VcdFx0MHhBNDAwXG4gXG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFXHRcdFx0MHhBNUM0XG4rI2RlZmluZSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFZcdFx0XHQweEE1RDBcbisjZGVmaW5lIFJUTDgzNjVNQl9QSFlfT0NQX0FERFJfRUVFX0xQQUJMRVx0XHQweEE1RDJcbitcbiAvKiBFeHRlcm5hbCBpbnRlcmZhY2UgcG9ydCBtb2RlIHZhbHVlcyAtIHVzZWQgaW4gRElHSVRBTF9JTlRFUkZBQ0VfU0VMRUNUICovXG4gI2RlZmluZSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9ESVNBQkxFXHRcdDBcbiAjZGVmaW5lIFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1JHTUlJXHRcdDFcbkBAIC0xMDQwLDYgKzEwNDUsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWRfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcbitcdFx0XHRcdCAgaW50IHJlZ251bSlcbit7XG4rXHR1MzIgb2NwX2FkZHI7XG4rXHR1MTYgdmFsO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChkZXZhZCA9PSBNRElPX01NRF9QQ1MgXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX1BDU19FRUVfQUJMRSlcbitcdFx0b2NwX2FkZHIgPSBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BQkxFO1xuK1x0ZWxzZSBpZiAoZGV2YWQgPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXG4rXHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWO1xuK1x0ZWxzZSBpZiAoZGV2YWQgPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUpXG4rXHRcdG9jcF9hZGRyID0gUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfTFBBQkxFO1xuK1x0ZWxzZVxuK1x0XHQvKiBPbmx5IHRoZSBFRUUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQ7IG90aGVycyByZWFkIGFzIDAsIGFzIHRoZVxuK1x0XHQgKiBoYXJkd2FyZSBkb2VzLCBzbyB0aGUgZ2VuZXJpYyBNTUQgY29kZSBpcyBub3QgdHJpcHBlZCB1cCBieVxuK1x0XHQgKiBhbiBlcnJvci5cbitcdFx0ICovXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiZmFpbGVkIHRvIHJlYWQgUEhZJWQgT0NQICUwNHgsIHJldCAlZFxcblwiLCBwaHksIG9jcF9hZGRyLFxuK1x0XHRcdHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG4rXHRcdFx0XHQgICBpbnQgZGV2YWQsIGludCByZWdudW0sIHUxNiB2YWwpXG4re1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHkgXHUwMDNlIFJUTDgzNjVNQl9QSFlBRERSTUFYKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdC8qIE9ubHkgdGhlIEVFRSBhZHZlcnRpc2VtZW50IHJlZ2lzdGVyIGlzIHdyaXRhYmxlOyB3cml0ZXMgdG8gb3RoZXJcbitcdCAqIHJlZ2lzdGVycyBhcmUgaWdub3JlZCwgYXMgdGhlIGhhcmR3YXJlIGRvZXMuXG4rXHQgKi9cbitcdGlmIChkZXZhZCAhPSBNRElPX01NRF9BTiB8fCByZWdudW0gIT0gTURJT19BTl9FRUVfQURWKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgUlRMODM2NU1CX1BIWV9PQ1BfQUREUl9FRUVfQURWLFxuK1x0XHRcdFx0ICAgICAgdmFsKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbitcdFx0XHRcImZhaWxlZCB0byB3cml0ZSBQSFklZCBPQ1AgJTA0eCwgcmV0ICVkXFxuXCIsIHBoeSxcbitcdFx0XHRSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsIHJldCk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpcbiBydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxuIHtcbkBAIC0xNjM5LDYgKzE3MDQsMTQgQEAgc3RhdGljIHZvaWQgcnRsODM2NW1iX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0ICovXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbiBcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdC8qIEludGVncmF0ZWQgUEhZcyBzdXBwb3J0IEVFRSBhdCAxMDBNLzFHOyB0aGUgaGFyZHdhcmUgbWFuYWdlc1xuK1x0XHQgKiBMUEkgb24gaXRzIG93biwgc28ganVzdCBhZHZlcnRpc2UgTFBJIGF3YXJlbmVzcyB0byBwaHlsaW5rLlxuK1x0XHQgKi9cbitcdFx0bWVtY3B5KGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcywgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLFxuK1x0XHQgICAgICAgc2l6ZW9mKGNvbmZpZy1cdTAwM2VscGlfaW50ZXJmYWNlcykpO1xuK1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7XG4rXHRcdGNvbmZpZy1cdTAwM2VlZWVfZW5hYmxlZF9kZWZhdWx0ID0gdHJ1ZTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuQEAgLTMyNzUsMTggKzMzNDgsNjYgQEAgc3RhdGljIGludCBydGw4MzY1bWJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MzY1bWJfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbitcdFx0XHRcdFx0ICAgICAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxuK3tcbitcdC8qIFRoZSBoYXJkd2FyZSBtYW5hZ2VzIExQSSBpdHNlbGY7IHRoZXJlIGlzIG5vIE1BQy1sZXZlbCBMUEkgY29udHJvbC5cbitcdCAqIFRoaXMgY2FsbGJhY2sgb25seSBzaWduYWxzIExQSSBhd2FyZW5lc3MgdG8gcGh5bGluay5cbitcdCAqL1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgzNjVtYl9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbit7XG4rfVxuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMgPSB7XG4gXHQubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcbiBcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcbiBcdC5tYWNfbGlua19kb3duID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcbiBcdC5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLFxuK1x0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXG4rXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpLFxuIH07XG4gXG4rc3RhdGljIGJvb2wgcnRsODM2NW1iX3N1cHBvcnRfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4re1xuK1x0LyogT25seSBpbnRlZ3JhdGVkLVBIWSBwb3J0cyBzdXBwb3J0IEVFRSwgbm90IHRoZSBleHRlcm5hbCBSR01JSSBwb3J0cy4gKi9cbitcdHJldHVybiAhcnRsODM2NW1iX2dldF9wb3J0X2V4dGludChkcy1cdTAwM2Vwcml2LCBwb3J0KTtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MzY1bWJfc2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbitcdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxuK3tcbitcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1xuK1x0LyogVGhlIG9ubHkgTFBJIHRpbWluZyBjb250cm9sICh0eF9scGlfdGltZXIpIGlzIGEgc2luZ2xlIGdsb2JhbFxuK1x0ICogcGVyLXNwZWVkIHJlZ2lzdGVyIHNoYXJlZCBieSBhbGwgcG9ydHMsIHNvIGl0IGNhbm5vdCBiZSBzZXQgZnJvbSB0aGlzXG4rXHQgKiBwZXItcG9ydCBjYWxsYmFjazsgbGVhdmUgaXQgYXQgaXRzIHJlc2V0IGRlZmF1bHQuIFBlci1wb3J0IEVFRSBpc1xuK1x0ICogZHJpdmVuIHRocm91Z2ggdGhlIFBIWSBhZHZlcnRpc2VtZW50LiBSZWplY3QgdGhlIHBlci1wb3J0IFRYIExQSSBrbm9ic1xuK1x0ICogcmF0aGVyIHRoYW4gc2lsZW50bHkgaWdub3JpbmcgdGhlbS5cbitcdCAqL1xuK1x0aWYgKCFlLVx1MDAzZXR4X2xwaV9lbmFibGVkKSB7XG4rXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiZGlzYWJsaW5nIEVFRSBUWCBMUEkgaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0aWYgKGUtXHUwMDNldHhfbHBpX3RpbWVyKSB7XG4rXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJzZXR0aW5nIHRoZSBFRUUgVFggTFBJIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0ge1xuIFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcbiBcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXG4gXHQuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsXG4gXHQudGVhcmRvd24gPSBydGw4MzY1bWJfdGVhcmRvd24sXG4rXHQuc3VwcG9ydF9lZWUgPSBydGw4MzY1bWJfc3VwcG9ydF9lZWUsXG4rXHQuc2V0X21hY19lZWUgPSBydGw4MzY1bWJfc2V0X21hY19lZWUsXG4gXHQucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLFxuIFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXG4gXHQucG9ydF9icmlkZ2VfbGVhdmUgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2xlYXZlLFxuQEAgLTMzMzIsNiArMzQ1Myw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcbiBcdC5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCxcbiBcdC5waHlfcmVhZCA9IHJ0bDgzNjVtYl9waHlfcmVhZCxcbiBcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxuK1x0LnBoeV9yZWFkX2M0NSA9IHJ0bDgzNjVtYl9waHlfcmVhZF9jNDUsXG4rXHQucGh5X3dyaXRlX2M0NSA9IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuaW5kZXggODEyMWVjMTJmZDhiYS4uYWQ0MmMwNWQwYTg4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXG5AQCAtNjIsNiArNjIsMjIgQEAgc3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcbiBcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGUocHJpdiwgYWRkciwgcmVnbnVtLCB2YWwpO1xuIH1cbiBcbitzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgICAgICBpbnQgcmVnbnVtKVxuK3tcbitcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZF9jNDUocHJpdiwgYWRkciwgZGV2YWQsIHJlZ251bSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2YWQsXG4rXHRcdFx0XHQgICAgICAgaW50IHJlZ251bSwgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG4rXG4rXHRyZXR1cm4gcHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3dyaXRlX2M0NShwcml2LCBhZGRyLCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuK31cbitcbiAvKipcbiAgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcbiAgKiBAZHM6IERTQSBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoaXMgdXNlcl9taWlfYnVzXG5AQCAtOTUsNiArMTExLDEwIEBAIGludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRidXMtXHUwMDNlbmFtZSA9IFwiUmVhbHRlayB1c2VyIE1JSVwiO1xuIFx0YnVzLVx1MDAzZXJlYWQgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkO1xuIFx0YnVzLVx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XG4rXHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWRfYzQ1KVxuK1x0XHRidXMtXHUwMDNlcmVhZF9jNDUgPSBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NTtcbitcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfd3JpdGVfYzQ1KVxuK1x0XHRidXMtXHUwMDNld3JpdGVfYzQ1ID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGVfYzQ1O1xuIFx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwiJXM6dXNlcl9taWlcIiwgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiBcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAxNzdiNjJhN2IyZDE2Li5hZDgwMTdlOTFiNGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMzM4OCw2ICszMzg4LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0fSwge1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk0MiksXG4gXHRcdC5uYW1lXHRcdD0gXCJSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldFwiLFxuK1x0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbitcdFx0LndyaXRlX21tZFx0PSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcbiBcdFx0LyogSW50ZXJydXB0IGhhbmRsaW5nIGFuYWxvZ291cyB0byBSVEw4MzY2UkIgKi9cbiBcdFx0LmNvbmZpZ19pbnRyXHQ9IGdlbnBoeV9ub19jb25maWdfaW50cixcbiBcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBnZW5waHlfaGFuZGxlX2ludGVycnVwdF9ub19hY2ssXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzoyOS40NTQ0MzkwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTY4MzMwODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlYWx0ZWsgRFNBIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSBpdCdzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3Rvcnk6IGByZWFsdGVrLmhgLCBgcnRsODM2NW1iX21haW4uY2AsIGBydGw4M3h4LmNgLCBhbmQgZXZlbiBhIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9gIGRpcmVjdG9yeSwgYHJlYWx0ZWtfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGxpa2VseSBpbnZvbHZlcyBtb2RpZmljYXRpb25zIHRvIGEgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIHBvdGVudGlhbGx5IGZvciBSVEw4MzY1TUIsIFJUTDgzNjYgb3IgcmVsYXRlZCBtb2RlbHMuXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGhvdyBpcyB0aGlzIGRyaXZlciBib3VuZCBhbmQgcmVnaXN0ZXJlZD8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlLCBvciBjYW4gSSBnZXQgYXQgaXQgdXNpbmcgc3RhbmRhcmQgUUVNVSBvciBldmVuIHN5emthbGxlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBwYXRjaCBpcyB0ZXN0YWJsZSB3aXRob3V0IHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIEknbSBsb29raW5nIGF0IGEgbW9yZSBjb21wbGV4IHNldHVwLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3Rvcnkgd2l0aCBhIGZldyBxdWljayBncmVwcyB0byBnZXQgYSBoYW5kbGUgb24gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxOCwiT3V0cHV0VG9rZW5zIjo3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjAzOjM0LjYyMjc3Mjg5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY2NDkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcnxtb2R1bGVfbWRpb19kcml2ZXJ8bWRpb19kcml2ZXJfcmVnaXN0ZXJ8bW9kdWxlX2kyY19kcml2ZXJ8bW9kdWxlX3NwaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMDpcXHRyZXR1cm4gbWRpb19kcml2ZXJfcmVnaXN0ZXIoZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD0yMD12b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTg9c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTkte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTA6XFx0cmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihkcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNTAyPXN0YXRpYyBpbnQgcnRsODM2NW1iX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzUwNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM1MDY6XFx0cmV0ID0gcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTM1MDctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE4NjY9c3RhdGljIGludCBydGw4MzY2cmJfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODcwOlxcdHJldCA9IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnJ0bDgzNjZyYl9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzozNC42NzE0NDM0OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTQ2MjI1NTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw4MzY1TUIgRHJpdmVyIGFuZCBSZWFsdGVrIE5ldHdvcmsgSGFyZHdhcmUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgaXMgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgY29kZSBwYXRocywgcGFydGljdWxhcmx5IGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGFuZCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvYC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgZml0IGludG8gdGhlIG5ldHdvcmsgZGV2aWNlIGFyY2hpdGVjdHVyZS5cblxuTmV4dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgUmVhbHRlaydzIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgYW5kIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlcnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgaW5mb3JtIG1lIGFib3V0IHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlLCBhbmQgZ3VpZGUgbXkgbmV4dCBzdGVwcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0Ni4xMzM3MDE5NTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk3MjAwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxNjppZiBORVRfRFNBX1JFQUxURUtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTg6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDRfQVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjUwOlxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6NTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQikgKz0gcnRsODM2Ni5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTQtcnRsODM2Ni1vYmpzIFxcdFxcdFxcdFxcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE2LXJ0bDgzNjYtb2JqcyBcXHRcXHRcXHRcXHQrPSBydGw4MzY2cmItbGVkcy5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xOS1ydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJTykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMjojZWxzZSAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaD00Nz1lbnVtIHJ0bDgzNjZfbGVkZ3JvdXBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC02Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo2ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9OTQ9c3RydWN0IHJ0bDgzNjZyYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC05Ni1cXHRib29sIHB2aWRfZW5hYmxlZFtSVEw4MzY2UkJfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk4LVxcdHN0cnVjdCBydGw4MzY2cmJfbGVkIGxlZHNbUlRMODM2NlJCX05VTV9QT1JUU11bUlRMODM2NlJCX05VTV9MRURHUk9VUFNdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0Ni40MzA5MTAwMTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzM1MjIxMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgUmVhbHRlayBEU0EgU3dpdGNoIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gYE5FVF9EU0FfUkVBTFRFS2AuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYWxsIGFib3V0IHRob3NlIFJlYWx0ZWsgUlRMODM2NU1CLCBSVEw4MzY2UkIsIGFuZCBzaW1pbGFyIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIHN0dWZmIHdpdGhvdXQgaGF2aW5nIHRoZSAqcmVhbCogaGFyZHdhcmU/IENhbiBJIHByb2JlIHRoZXNlIERTQSBzd2l0Y2hlcyBvciB0aGVpciBQSFkgZHJpdmVycyBpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgc3R1Y2sgbmVlZGluZyBhIHBoeXNpY2FsIHNldHVwP1xuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3Qgd2FzdGluZyBteSB0aW1lLiBBcmUgdGhlcmUgYW55IG1vY2sgZGV2aWNlcyBvciB2aXJ0dWFsIERTQSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBJJ20gb3Zlcmxvb2tpbmc/IE9yIGlzIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggZXNzZW50aWFsbHksIGJ5IGRlc2lnbiwgdGllZCB0byBoYXJkd2FyZSB0aGF0IEkgY2FuJ3QgZW11bGF0ZT9cblxuQWhhISBMZXQncyBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIGRvY3VtZW50IEkgaGF2ZSBoYW5keS4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5SaWdodCwgdGhlIG5vdGUgb24gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBrZXkuIEl0IGxpc3RzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgZXRjLikgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBiZWNhdXNlIHRoZXkgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBORVRfRFNBX1JFQUxURUtgIG9uZSBvZiB0aG9zZT8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQuXG5cbkFscmlnaHQsIGEgcXVpY2sgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBjb2RlLiBIb3cgYXJlIHRoZXNlIFJUTDgzNjVNQiAvIFJlYWx0ZWsgRFNBIHN3aXRjaGVzIGNvbm5lY3RlZCwgYW55d2F5PyBJJ2xsIGNoZWNrIGBydGw4MzY1bWJfbWFpbi5jYCwgYHJlYWx0ZWstc21pLmNgLCBhbmQgYHJlYWx0ZWstbWRpby5jYCB0byBzZWUgaWYgSSBjYW4gZ2xlYW4gYW55IGNsdWVzLiBIb3BlZnVsbHksIEknbGwgZmluZCBhIGhpbnQgYXMgdG8gdGhlaXIgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyOTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDM6NDkuNzY2MTMzNjY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTc5MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX21hdGNoX3RhYmxlfE1PRFVMRV9ERVZJQ0VfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNDc2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDc5LX07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozNDgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzQ4Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4NC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0ODU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zNDkyPXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NW1iX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zNDk0LVxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjM0OTU6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzQ5Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTg0MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY2cmJfb2ZfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jLTE4NDMtfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjZyYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xODQ2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJ0bDgzNjZyYl9zbWlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg0OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY2cmItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxODQ5OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjZyYl9vZl9tYXRjaCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xODUwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xODU2PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NnJiX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg1OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY2cmItbWRpb1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTg1OTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY2cmJfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTg2MC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo0OS44MTM3MTc3MTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTE4NTM0OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBQYXRjaDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgbWV0aWN1bG91c2x5LiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIEM0NSBNRElPIHN1cHBvcnQgYW5kIHNvbWUgRUVFIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIFJlYWx0ZWsgZHJpdmVycy4gRmlyc3QsIHdlIGhhdmUgY2hhbmdlcyBpbiBgcmVhbHRlay5oYCB3aGljaCBhZGRzIGZ1bmN0aW9uIHBvaW50ZXIgcHJvdG90eXBlcyBmb3IgYHBoeV9yZWFkX2M0NWAgYW5kIGBwaHlfd3JpdGVfYzQ1YCB0byB0aGUgYHJlYWx0ZWtfb3BzYCBzdHJ1Y3R1cmUuIFRoZW4sIHRoZSBtZWF0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBgcnRsODM2NW1iX21haW4uY2AsIHdoZXJlIHRoZSBhY3R1YWwgQzQ1IHJlYWQvd3JpdGUgZnVuY3Rpb25zIGZvciB0aGUgUEhZIGFyZSBkZWZpbmVkLCBhbG9uZ3NpZGUgc29tZSBwaHlsaW5rIGFuZCBFRUUtcmVsYXRlZCBmdW5jdGlvbnMuICBUaGVzZSBhcmUgZ2V0dGluZyBob29rZWQgaW50byB0aGUgYHJ0bDgzNjVtYl9zd2l0Y2hfb3BzYCBhbmQgYHJ0bDgzNjVtYl9vcHNgLiBXZSBhbHNvIGhhdmUgc2ltaWxhciBpbXBsZW1lbnRhdGlvbnMgZm9yIGBydGw4M3h4X3VzZXJfbWRpb19yZWFkX2M0NWAsIGBydGw4M3h4X3VzZXJfbWRpb193cml0ZV9jNDVgLCBpbiBgcnRsODN4eC5jYCwgY29ubmVjdGVkIHRvIHRoZSBidXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBGaW5hbGx5LCBvdmVyIGluIGByZWFsdGVrX21haW4uY2AsIHdlJ3JlIGFkZGluZyB0aGUgYGdlbnBoeV9yZWFkX21tZF9jNDVgIGFuZCBgZ2VucGh5X3dyaXRlX21tZF9jNDVgIG1ldGhvZHMgdG8gdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBlbnRyeS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIGV2ZW4gKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHkgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gVGhlIFJUTDgzNjVNQiBpcyBhbiBleHRlcm5hbCBzd2l0Y2ggSUMsIHNvbWV0aGluZyB5b3UnZCBmaW5kIGluIGFuIGVtYmVkZGVkIHN5c3RlbS4gIEl0J3MgY29ubmVjdGVkIHRvIGEgaG9zdCBTb0MgdmlhIE1ESU8gb3IgU01JLCBhbmQgdGhleSBhcmUgdXN1YWxseSBwcm9iZWQgdmlhIERldmljZSBUcmVlLlxuXG5PbiBhbWQ2NCwgd2hpY2ggaXMgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHN0YW5kYXJkIHg4Ni9hbWQ2NCBzeXN0ZW1zICpkb24ndCogdHlwaWNhbGx5IGhhdmUgYSBEZXZpY2UgVHJlZSBzZXR1cCBmb3IgdGhlc2UgUmVhbHRlayBzd2l0Y2ggSUNzLCB1bmxlc3Mgc29tZW9uZSBoYXMgbW9ja2VkIHRoZW0gb3Igc2V0IHVwIGEgdGVzdCBlbnZpcm9ubWVudCwgYW5kIFFFTVUgY2VydGFpbmx5IGRvZXNuJ3QgZW11bGF0ZSB0aGVtLiAgU28sIHdlJ3JlIGxpa2VseSBzdHVjayBoZXJlIHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gQ291bGQgc3l6a2FsbGVyIGhlbHAgdXMgb3V0IGluIHRoaXMgcmVnYXJkPyBDYW4gaXQgaW5zdGFudGlhdGUgZWl0aGVyIE1ESU8gb3IgU01JIHBsYXRmb3JtIGRyaXZlcnMgZm9yIGEgUmVhbHRlayBzd2l0Y2ggb3IgUEhZPyBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IGtpbmQgb2YgdmlydHVhbCBidXMgb3IgdXNlcnNwYWNlIGludGVyZmFjZSwgbWF5YmUgTmV0bGluaywgb3IgYSBtb2NrIGRldmljZS5cblxuSSdsbCBjaGVjayBgcmVhbHRla19tYWluLmNgIGFnYWluLCBzcGVjaWZpY2FsbHkgdGhlIFBIWSBkcml2ZXIgcHJvYmluZyBtZWNoYW5pc20uIEEgUmVhbHRlayBQSFkgZHJpdmVyIHByb2JlcyB3aGVuIGFuIE1ESU8gYnVzIGZpbmRzIGEgUEhZIHdpdGggYSBtYXRjaGluZyBQSFkgSUQsIGFuZCBpbiB0aGlzIGNhc2UsIGl04oCZcyBgMHgwMDFjYzk0MmAuICBEb2VzIFFFTVUgbW9kZWwgKnRoYXQqIFJlYWx0ZWsgUEhZPyBOby4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGNoaXAgb3IgdGhlIFBIWS4gU28sIGNhbiB3ZSBpbnN0YW50aWF0ZSBEU0Egb3IgUEhZIGRyaXZlcnMgdmlhIHVzZXJzcGFjZSBvciBtb2NrIGRldmljZXM/ICBJIHdpbGwgYWxzbyBjaGVjayBgcmVhbHRla19zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg5NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo1Ny4zMzIyNTYwOTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDQ2MTM4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowMzo1Ny41MzI3MzEyNDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTM4MTk1ODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBydGw4MzY1bWIgUHJvYmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHJ0bDgzNjVtYmAgcHJvYmUuIFNpbmNlIEknbSBsaWtlbHkgZGVidWdnaW5nIG9yIG1vZGlmeWluZyBkcml2ZXIgYmVoYXZpb3IsIHBpbnBvaW50aW5nIGl0cyBvcmlnaW4gaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBmaW5kaW5nIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbjsgaXQncyBhYm91dCB1bmRlcnN0YW5kaW5nICp3aGVyZSogaXQncyBpbnZva2VkIGluIHRoZSBwcm9iZSBzZXF1ZW5jZSwgYW5kIHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGNhbGwuIEkgbmVlZCB0byBrbm93IHRoZSBhc3NvY2lhdGVkIGRldmljZSBzdHJ1Y3R1cmVzLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEknbSBnb2luZyB0byBzdGFydCBieSB1c2luZyBteSBzdGFuZGFyZCBzZWFyY2ggdG9vbHMsIGxpa2VseSBgZ3JlcGAgb3IgYGZpbmRgLCB0YXJnZXRpbmcgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSdsbCBuZWVkIHRvIGJlIHByZWNpc2Ugd2l0aCBteSBzZWFyY2gsIHBvdGVudGlhbGx5IGxvb2tpbmcgZm9yIHRoZSBleGFjdCBzdHJpbmcsIGNvbnNpZGVyaW5nIGNhc2luZywgYW5kIHBvdGVudGlhbGx5IGxvb2tpbmcgZm9yIHN1cnJvdW5kaW5nIGtleXdvcmRzIHN1Y2ggYXMgXCJwcm9iZVwiIG9yIFwibW9kdWxlX2luaXRcIi4gRnJvbSB0aGVyZSBJJ2xsIHN0YXJ0IHdvcmtpbmcgdGhyb3VnaCB0aGUgY3Jvc3MgcmVmZXJlbmNlcyB1bnRpbCBJIGZpbmQgZXhhY3RseSB3aGF0IEkgYW0gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDExLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDIuOTE0NjkyMjY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDgyNjg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MzY1bWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT0xNz1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSArPSBydGw4MzY1bWIub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlxcdFxcdCAgcnRsODM2NW1iX3RhYmxlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIxOlxcdFxcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XFx0XFx0ICBydGw4MzY1bWJfbDIubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5ODpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5OiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX3RhYmxlLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkzLVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkga2V5O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cXHR1OCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTE1LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEyMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXFx0dTE2IG1lbWJlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjE2NDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YywgdTE2ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjYyOiAqIHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YygpIC0gZ2V0IHRoZSBuZXh0IFVuaWNhc3QgTDIgZW50cnlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODEtICoqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODY6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoZGF0YSwgXFx1MDAyNnVjKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMjgtXFx0dWMuYWdlID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMxLVxcdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzQ1OmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXFx0dWMuYWdlID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNjE6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDQ5OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTMtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXFx0bWMuaXNfc3RhdGljID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NjY6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc0LVxcdFxcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NzU6XFx0XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXFx1MDAyNm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXFx0XFx0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlxcdFxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVxcdH0gZWxzZSBpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjEtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI2LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMxLVxcdG1jLmtleS5pdmwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzQtXFx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTUwOlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTUxLVxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVxcdH1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1Njg6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NjktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVxcdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTcxOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTktXFx0XFx0XFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIyLVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyNTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXFx0XFx0XFx0dTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6Mjg6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NC0gKiByZXF1aXJlIHRoZSBydGw4MzY3ZCB2ZW5kb3IgZHJpdmVyLiBXaXRoIGFsbCB0aGlzIHVuY2VydGFpbnR5LCB0aGUgZHJpdmVyIGhhc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMC0jaW5jbHVkZSBcXFwicnRsODN4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTExOiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMjojaW5jbHVkZSBcXFwicnRsODM2NW1iX3ZsYW4uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjYxLSAqIDMtYml0IE1TQiBmaWVsZCAoQ1RSTDEpLiBUaGUgY2hpcCByZXNldHMgdGhlbSB0byAweDFGRkZGOyBzZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MjogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjMtICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyOS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcXHRcXHQweDAwNDBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQzMDovKiBTZWUgXFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzEtI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX1ZMQU5fRUdSRVNTX01PREVfTUFTS1xcdFxcdDB4MDAzMFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzQtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzU6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM2LSAqIEBSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTDogZm9sbG93IHVudGFnIG1hc2sgaW4gVkxBTjRrIHRhYmxlIGVudHJ5XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ0NTplbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Ni1cXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4OC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4OTplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00OTAtXFx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NTE6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTItXFx0dTMyIG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTYwOnN0YXRpYyBzdHJ1Y3QgcnRsODM2NW1iX21pYl9jb3VudGVyIHJ0bDgzNjVtYl9taWJfY291bnRlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU2MS1cXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjM6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNC1cXHR1MTYgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjgtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92Y1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjMwLVxcdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzOS1cXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDgtICogb3B0aW9uLCB3aGljaCBpcyB3aGF0IFJUTDgzNjdTIHBhcnRzIHNlZW4gc28gZmFyIHJlcG9ydC4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTItXFx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjM6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2NC1cXHR7IDB4MDUwMCwgMHg4MkYwIH0sIHsgMHgwNTAxLCAweEYxOTUgfSwgeyAweDA1MDIsIDB4MzFBMiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Njk6ZW51bSBydGw4MzY1bWJfcGh5X2ludGVyZmFjZV9tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3MC1cXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjgxOiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Mi0gKiBAcG9ydDogdGhlIHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cXHUwMDNlIHsgaWQsIHN1cHBvcnRlZF9pbnRlcmZhY2VzIH0uIFRvIGJlIGVtYmVkZGVkXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODc6ICogaW4gXFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg5OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5MC1cXHRpbnQgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njk2OiAqIHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIC0gc3RhdGljIGNoaXAtc3BlY2lmaWMgaW5mb1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk3LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA1LSAqIGJ5IHRoaXMgZHJpdmVyLiBXaGVuIGFkZGluZyBzdXBwb3J0IGZvciBhbm90aGVyIGNoaXAgaW4gdGhlIGZhbWlseSwgYSBuZXdcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNjogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwODpzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDktXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzExLVxcdHUzMiBjaGlwX3ZlcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMjpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEzOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqamFtX3RhYmxlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE0LVxcdHNpemVfdCBqYW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE4LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyMC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyNy1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI4OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI5OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzM5LVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NDA6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NDE6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc0Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTMtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1NDpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1NTpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzU2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2Ni1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY3OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY4OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzcxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcyOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzMtXFx0UlRMODM2NU1CX1NUUF9TVEFURV9ESVNBQkxFRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3OTplbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4MC1cXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODU6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4Ni1cXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5MDplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5MS1cXHRSVEw4MzY1TUJfQ1BVX0ZPUk1BVF84QllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTU6ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5Ni1cXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MDE6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDItICogQGVuYWJsZTogZW5hYmxlL2Rpc2FibGUgaGFyZHdhcmUgaW5zZXJ0aW9uIG9mIENQVSB0YWcgaW4gc3dpdGNoLVxcdTAwM2VDUFUgZnJhbWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMzpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNi1cXHR1MzIgdHJhcF9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE3OlxcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4OlxcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxOTpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4gcnhfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODIwOlxcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODIxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNDogKiBzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgLSBwcml2YXRlIHBlci1wb3J0IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNS0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNi0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI3OiAqIEBzdGF0czogbGluayBzdGF0aXN0aWNzIHBvcHVsYXRlZCBieSBydGw4MzY1bWJfc3RhdHNfcG9sbCwgcmVhZHkgZm9yIGF0b21pY1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI4OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyOS0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzI6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzMy1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NDE6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0Mi0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU0OnN0cnVjdCBydGw4MzY1bWIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU1LVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTYtXFx0aW50IGlycTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NzpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4OlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cXHRzdHJ1Y3QgbXV0ZXggbWliX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjA6XFx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2MS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg2NzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzY6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzctXFx0XFx0XFx0XFx0ICAgICB1MzIgb2NwX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkwNjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNy1cXHRcXHRcXHRcXHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTQ6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE4OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMyOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTEtXFx0XFx0XFx0XFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU4OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05OTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTI6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMjA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDIxLVxcdFxcdFxcdCAgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzNDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkX2M0NShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ5LVxcdFxcdFxcdFxcdCAgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4MjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGVfYzQ1KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgzLVxcdFxcdFxcdFxcdCAgIGludCBkZXZhZCwgaW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwOTY6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBSVEw4MzY1TUJfUEhZX09DUF9BRERSX0VFRV9BRFYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDk3LVxcdFxcdFxcdFxcdCAgICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTA5OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEwLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTE6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTEyLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTU6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE2LVxcdFxcdFxcdFxcdTAwMjZtYi1cXHUwMDNlY2hpcF9pbmZvLVxcdTAwM2VleHRpbnRzW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMTI4PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMjk6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMzAtXFx0XFx0XFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTMyLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMzM6XFx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMzQ6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ni1cXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE0Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTQ4OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE0OTpcXHRcXHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE1MC1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNzctXFx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExNzg6XFx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTc5LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjI3OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI0Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNDg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjg5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI5MDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjkxLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyOTI6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjkzOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjk0LVxcdHUzMiBvcHRpb247XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzUtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzY6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzNy0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNDQtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzQ1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzcxOnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzItXFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM3NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzc2OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzctXFx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM3ODpcXHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNzktXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM4OC1cXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDIuOTU5NTI0OTE3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxMjQzOTExNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEcml2ZXIgUmVnaXN0cmF0aW9uIGFuZCBQcm9iZSBGbG93KipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhlc2UgUmVhbHRlayBTTUkgYW5kIE1ESU8gZHJpdmVycyBhcmUgaW5pdGlhbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWdpc3RyYXRpb24gYW5kIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhlIGBydGw4MzY1bWJfc21pX2RyaXZlcmAgYW5kIGBydGw4MzY1bWJfbWRpb19kcml2ZXJgLiBJIGtub3cgdGhleSdyZSBjcml0aWNhbCBmb3IgYWNjZXNzaW5nIHRoZSBzd2l0Y2ggaGFyZHdhcmUsIHNvIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGByZWFsdGVrLXNtaS5jYCBhbmQgYHJlYWx0ZWstbWRpby5jYC4gVGhvc2Ugc291cmNlIGZpbGVzIHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGxvZ2ljIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBJJ20gYWZ0ZXIuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ0MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjA4LjA4MzkxODY1M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzEwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhbHRla19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTg4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjM6cmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo2OnJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS03LWVuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTA6cmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTEtZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjQ0OnN0YXRpYyBpbnQgcmVhbHRla19tZGlvX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy00NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy00Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NzI6c3RhdGljIGludCByZWFsdGVrX21kaW9fcmVhZCh2b2lkICpjdHgsIHUzMiByZWcsIHUzMiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTczLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTc1LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19pbnRlcmZhY2VfaW5mbyByZWFsdGVrX21kaW9faW5mbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDU6XFx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA2OlxcdC5yZWdfd3JpdGUgPSByZWFsdGVrX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTExMS0gKiBAbWRpb2RldjogbWRpb19kZXZpY2UgdG8gcHJvYmUgb24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTIxOmludCByZWFsdGVrX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyMi17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTI0OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcXHRwcml2ID0gcnRsODN4eF9wcm9iZShkZXYsIFxcdTAwMjZyZWFsdGVrX21kaW9faW5mbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVxcdGlmIChJU19FUlIocHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXFx0cHJpdi1cXHUwMDNlbWRpb19hZGRyID0gbWRpb2Rldi1cXHUwMDNlYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMzM6XFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTQzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19wcm9iZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0NS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ3LSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE1NTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE1Ni17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjY6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3JlbW92ZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE2OC0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTcwLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSBzaHV0dGluZyBkb3duLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE3ODp2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc5LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE4NzpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fc2h1dGRvd24sIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxMzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjE4OmludCByZWFsdGVrX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyMDp2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjMzOnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6Mzg6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0NzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfY2xrX2RlbGF5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NTI6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RhcnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTgtXFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjU5OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY0LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NjU6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzAtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NzE6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzItXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3MzpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Nzc6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RvcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Nzk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04My1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4NDpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04NS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjg2OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODktXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVxcdC8qIEFkZCBhIGNsaWNrICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo5MjpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy05My1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjk0OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDI6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfd3JpdGVfYml0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgZGF0YSwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDQtXFx0Zm9yICg7IGxlbiBcXHUwMDNlIDA7IGxlbi0tKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDU6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sICEhKGRhdGEgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyAobGVuIC0gMSkpKSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMDk6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMTM6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTE0LVxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMTg6c3RhdGljIHZvaWQgcmVhbHRla19zbWlfcmVhZF9iaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBsZW4sIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEyNTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyOC1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEyOTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMzAtXFx0XFx0dSA9ICEhZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMzgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMzk6c3RhdGljIGludCByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2soc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcXHRcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgMSwgXFx1MDAyNmFjayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDgtXFx0XFx0aWYgKGFjayA9PSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNTktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjEte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTYyOlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjM6XFx0cmV0dXJuIHJlYWx0ZWtfc21pX3dhaXRfZm9yX2Fjayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjY6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlX25vYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY4OlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE3MjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNzYtXFx0LyogUmVhZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDgsIFxcdTAwMjZ0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cXHQqZGF0YSA9ICh0IFxcdTAwMjYgMHhmZik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4MC1cXHQvKiBTZW5kIGFuIEFDSyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgMHgwMCwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE4NjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTAtXFx0LyogUmVhZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTE6XFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDgsIFxcdTAwMjZ0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5Mi1cXHQqZGF0YSA9ICh0IFxcdTAwMjYgMHhmZik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5NC1cXHQvKiBTZW5kIGFuIEFDSyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTk1OlxcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgMHgwMSwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMDk6XFx0cmVhbHRla19zbWlfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTEtXFx0LyogU2VuZCBSRUFEIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZWNtZF9yZWFkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTYtXFx0LyogU2V0IEFERFJbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cXHQvKiBTZXQgQUREUlsxNTo4XSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjIyOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXFx0LyogUmVhZCBEQVRBWzc6MF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyNzpcXHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFxcdTAwMjZsbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjgtXFx0LyogUmVhZCBEQVRBWzE1OjhdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjk6XFx0cmVhbHRla19zbWlfcmVhZF9ieXRlMShwcml2LCBcXHUwMDI2aGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIzNjpcXHRyZWFsdGVrX3NtaV9zdG9wKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNDMtXFx0XFx0XFx0XFx0IHUzMiBhZGRyLCB1MzIgZGF0YSwgYm9vbCBhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1MDpcXHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Mi1cXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1MzpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZWNtZF93cml0ZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU3LVxcdC8qIFNldCBBRERSWzc6MF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI1ODpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIGFkZHIgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjItXFx0LyogU2V0IEFERFJbMTU6OF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHByaXYsIGFkZHIgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY3LVxcdC8qIFdyaXRlIERBVEFbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgZGF0YSBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cXHRpZiAoYWNrKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjc0OlxcdFxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgZGF0YSBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XFx0XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2Fjayhwcml2LCBkYXRhIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI4Mi0gb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlxcdHJlYWx0ZWtfc21pX3N0b3AocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODQtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyOTM6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9yZWdfbm9hY2sodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI5NTpcXHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKGN0eCwgcmVnLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwMS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDI6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwNDpcXHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwNS19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMDYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMDgte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzA5OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTE6XFx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMi19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTU6XFx0LnJlZ19yZWFkID0gcmVhbHRla19zbWlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcXHQucmVnX3dyaXRlID0gcmVhbHRla19zbWlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzIwOiAqIHJlYWx0ZWtfc21pX3Byb2JlKCkgLSBQcm9iZSBhIHBsYXRmb3JtIGRldmljZSBmb3IgYW4gU01JLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzIte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzNS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzM3OlxcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXFx1MDAyNnJlYWx0ZWtfc21pX2luZm8pO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM4LVxcdGlmIChJU19FUlIocHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM1My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcXHRwcml2LVxcdTAwM2V3cml0ZV9yZWdfbm9hY2sgPSByZWFsdGVrX3NtaV93cml0ZV9yZWdfbm9hY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM2My19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzY3OiAqIHJlYWx0ZWtfc21pX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYSBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc4OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM4NzpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9yZW1vdmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5MS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHNodXR0aW5nIGRvd24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM5OTp2b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDAte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDA3LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQwODpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9zaHV0ZG93biwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoxMzpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE5OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjA6dm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6Mjk6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDozMzpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0MjpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0yMD1zdHJ1Y3QgcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoyMTpzdHJ1Y3QgcmVhbHRla19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTQxPXN0cnVjdCBydGw4MzY2X3ZsYW5fNGsge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDo0ODpzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjU0OnN0cnVjdCByZWFsdGVrX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC01NS1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0KmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04MC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6ODE6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtODItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjk0OlxcdGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cXHRpbnRcXHRcXHRcXHQoKndyaXRlX3JlZ19ub2Fjaykodm9pZCAqY3R4LCB1MzIgYWRkciwgdTMyIGRhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMDU6ICogc3RydWN0IHJlYWx0ZWtfb3BzIC0gdnRhYmxlIGZvciB0aGUgcGVyLVNNSS1jaGlwdHlwZSBvcGVyYXRpb25zXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNi0gKiBAZGV0ZWN0OiBkZXRlY3RzIHRoZSBjaGlwdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwODpzdHJ1Y3QgcmVhbHRla19vcHMge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMDk6XFx0aW50XFx0KCpkZXRlY3QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTA6XFx0aW50XFx0KCpyZXNldF9jaGlwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTExOlxcdGludFxcdCgqc2V0dXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTI6XFx0aW50XFx0KCpnZXRfbWliX2NvdW50ZXIpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExMy1cXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTUtXFx0XFx0XFx0XFx0ICAgdTY0ICptaWJ2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExNjpcXHRpbnRcXHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE4OlxcdGludFxcdCgqc2V0X3ZsYW5fbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBpbmRleCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE5LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XFx0aW50XFx0KCpnZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjI6XFx0aW50XFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjQ6XFx0aW50XFx0KCpnZXRfbWNfaW5kZXgpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgKnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNTpcXHRpbnRcXHQoKnNldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNjpcXHRib29sXFx0KCppc192bGFuX3ZhbGlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgdmxhbik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNzpcXHRpbnRcXHQoKmVuYWJsZV92bGFuKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyODpcXHRpbnRcXHQoKmVuYWJsZV92bGFuNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI5OlxcdGludFxcdCgqZW5hYmxlX3BvcnQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzMDpcXHRpbnRcXHQoKnBvcnRfYWRkX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzMS1cXHRcXHRcXHRcXHQgICAgICB1MzIgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzMjpcXHRpbnRcXHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzMy1cXHRcXHRcXHRcXHRcXHQgdTMyIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzQ6XFx0aW50XFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzU6XFx0aW50XFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzNi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3OlxcdGludFxcdCgqcG9ydF9zZXRfdWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXFx0XFx0XFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XFx0aW50XFx0KCpwb3J0X3NldF9tY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cXHRcXHRcXHRcXHRcXHRib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcXHRpbnRcXHQoKnBvcnRfc2V0X2JjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVxcdFxcdFxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlxcdGludFxcdCgqbDJfYWRkX3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ1LVxcdFxcdFxcdCAgICAgdTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNDY6XFx0aW50XFx0KCpsMl9kZWxfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDctXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXFx0XFx0XFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0OTpcXHRpbnRcXHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1MDpcXHRcXHRcXHRcXHQgIGludCBwb3J0LCBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlxcdGludFxcdCgqbDJfYWRkX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1MzpcXHRpbnRcXHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1NC1cXHRcXHRcXHQgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltFVEhfQUxFTl0sIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTU6XFx0aW50XFx0KCpsMl9mbHVzaCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTY6XFx0aW50XFx0KCpwaHlfcmVhZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NzpcXHRpbnRcXHQoKnBoeV93cml0ZSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU4LVxcdFxcdFxcdCAgICAgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1OTpcXHRpbnRcXHQoKnBoeV9yZWFkX2M0NSkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXFx0XFx0XFx0XFx0aW50IHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MTpcXHRpbnRcXHQoKnBoeV93cml0ZV9jNDUpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTYyLVxcdFxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2NTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTY2LVxcdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjc6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2OC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTc4LS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3OTppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTgwOmludCBydGw4MzY2X3NldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCB2aWQsIHUzMiBtZW1iZXIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4MS1cXHRcXHQgICAgIHUzMiB1bnRhZywgdTMyIGZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4MjppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgzLVxcdFxcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE4NDppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTg1OmludCBydGw4MzY2X2VuYWJsZV92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTg2OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4Ny1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5NT12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NzpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDQ6MDguMTI4Mzk0ODcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxNDAwNDQ2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUlRMODN4eCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydGw4M3h4YCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHJ0bDgzeHguY2AgZmlsZS4gVGhlIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBydGw4M3h4X3Byb2JlKClgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byBgcnRsODN4eC5jYCBhbmQgc3RhcnQgdHJhY2luZyB0aHJvdWdoIHRoZSBwcm9iZSBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkLCBob3cgdGhlIHJlZ2lzdGVyIHNwYWNlIGlzIG1hcHBlZCwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaGVyZSwgdGhlIHNlcXVlbmNlIG9mIGNvbW1hbmRzLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgbW9kZWxzLCBpZiBpdCBkb2VzIGF0IGFsbC4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyB0aGlzIGRyaXZlci4gSSBob3BlIHRoZSBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGJlY2F1c2UgSSBoYXZlIGEgZmVlbGluZyBJJ2xsIGJlIGhlcmUgZm9yIGEgYml0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjE1LjI2ODQ0MjcwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCtcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pZl9icmlkZ2UuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjaW5jbHVkZSBcXFwicmVhbHRlay5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcInJ0bDgzeHguaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LyoqXFxuICAxNDpcXHQgKiBydGw4M3h4X2xvY2soKSAtIExvY2tzIHRoZSBtdXRleCB1c2VkIGJ5IHJlZ21hcHNcXG4gIDE1OlxcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuICAxNjpcXHQgKlxcbiAgMTc6XFx0ICogVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gcmVnbWFwIHRvIGJlIHVzZWQgYXMgdGhlIGxvY2sgZnVuY3Rpb24uXFxuICAxODpcXHQgKiBJdCBpcyBhbHNvIHVzZWQgZXh0ZXJuYWxseSB0byBibG9jayByZWdtYXAgYmVmb3JlIGV4ZWN1dGluZyBtdWx0aXBsZVxcbiAgMTk6XFx0ICogb3BlcmF0aW9ucyB0aGF0IG11c3QgaGFwcGVuIGluIHNlcXVlbmNlICh3aGljaCB3aWxsIHVzZVxcbiAgMjA6XFx0ICogcmVhbHRla19wcml2Lm1hcF9ub2xvY2sgaW5zdGVhZCkuXFxuICAyMTpcXHQgKlxcbiAgMjI6XFx0ICogQ29udGV4dDogQ2FuIHNsZWVwLiBIb2xkcyBwcml2LVxcdTAwM2VtYXBfbG9jayBsb2NrLlxcbiAgMjM6XFx0ICogUmV0dXJuOiBub3RoaW5nXFxuICAyNDpcXHQgKi9cXG4gIDI1OlxcdHZvaWQgcnRsODN4eF9sb2NrKHZvaWQgKmN0eClcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gIDMwOlxcdH1cXG4gIDMxOlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfbG9jaywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuICAzMjpcXHRcXG4gIDMzOlxcdC8qKlxcbiAgMzQ6XFx0ICogcnRsODN4eF91bmxvY2soKSAtIFVubG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xcbiAgMzU6XFx0ICogQGN0eDogcmVhbHRla19wcml2IHBvaW50ZXJcXG4gIDM2OlxcdCAqXFxuICAzNzpcXHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9ja3MgdGhlIGxvY2sgYWNxdWlyZWQgYnkgcnRsODN4eF9sb2NrLlxcbiAgMzg6XFx0ICpcXG4gIDM5OlxcdCAqIENvbnRleHQ6IFJlbGVhc2VzIHByaXYtXFx1MDAzZW1hcF9sb2NrIGxvY2suXFxuICA0MDpcXHQgKiBSZXR1cm46IG5vdGhpbmdcXG4gIDQxOlxcdCAqL1xcbiAgNDI6XFx0dm9pZCBydGw4M3h4X3VubG9jayh2b2lkICpjdHgpXFxuICA0MzpcXHR7XFxuICA0NDpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gIDQ3OlxcdH1cXG4gIDQ4OlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5sb2NrLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxcbiAgNTE6XFx0e1xcbiAgNTI6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQocHJpdiwgYWRkciwgcmVnbnVtKTtcXG4gIDU1OlxcdH1cXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSxcXG4gIDU4OlxcdFxcdFxcdFxcdFxcdCAgIHUxNiB2YWwpXFxuICA1OTpcXHR7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDoxNS4yNjg1MjgxNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc5NDk0NTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydGw4M3h4LmMgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgYSBzcGVjaWZpYyBzY2VuYXJpby4gTGV0J3Mgc2VlLi4uIEknbGwganVtcCBzdHJhaWdodCBpbnRvIGBydGw4M3h4LmNgLCBmb2N1c2luZyBvbiBsaW5lcyAxMjAgdGhyb3VnaCAyMjAuIEkgcmVtZW1iZXIgdGhhdCBzZWN0aW9uIGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHZhcmlvdXMgUEhZIHJlZ2lzdGVycy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBwYXJ0IHdoZXJlIGl0IHNldHMgdXAgdGhlIGluaXRpYWwgbGluayBzZXR0aW5ncyBmb3IgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGhvdyBpdCBoYW5kbGVzIHRoZSBhdXRvLW5lZ290aWF0aW9uLCBjb25zaWRlcmluZyB3aGF0IGhhcyBiZWVuIHJlcG9ydGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBkZXNjcmlwdGl2ZSBlbm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNDoyMC4wNjM0NzY3NzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMjA6XFx0XFxuIDEyMTpcXHRcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbiAxMjI6XFx0XFx0aWYgKHJldCkge1xcbiAxMjM6XFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJ1bmFibGUgdG8gcmVnaXN0ZXIgTURJTyBidXMgJXNcXFxcblxcXCIsXFxuIDEyNDpcXHRcXHRcXHRcXHRidXMtXFx1MDAzZWlkKTtcXG4gMTI1OlxcdFxcdFxcdGdvdG8gZXJyX3B1dF9ub2RlO1xcbiAxMjY6XFx0XFx0fVxcbiAxMjc6XFx0XFxuIDEyODpcXHRcXHRwcml2LVxcdTAwM2V1c2VyX21paV9idXMgPSBidXM7XFxuIDEyOTpcXHRcXG4gMTMwOlxcdGVycl9wdXRfbm9kZTpcXG4gMTMxOlxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMzQ6XFx0fVxcbiAxMzU6XFx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9zZXR1cF91c2VyX21kaW8sIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHQvKipcXG4gMTM4OlxcdCAqIHJ0bDgzeHhfcHJvYmUoKSAtIHByb2JlIGEgUmVhbHRlayBzd2l0Y2hcXG4gMTM5OlxcdCAqIEBkZXY6IHRoZSBkZXZpY2UgYmVpbmcgcHJvYmVkXFxuIDE0MDpcXHQgKiBAaW50ZXJmYWNlX2luZm86IHNwZWNpZmljIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGluZm8uXFxuIDE0MTpcXHQgKlxcbiAxNDI6XFx0ICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyByZWFsdGVrX3ByaXYgYW5kIHJlYWRzIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRyZWVcXG4gMTQzOlxcdCAqIG5vZGUuIFRoZSBzd2l0Y2ggaXMgaGFyZCByZXNldHRlZCBpZiBhIG1ldGhvZCBpcyBwcm92aWRlZC5cXG4gMTQ0OlxcdCAqXFxuIDE0NTpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDE0NjpcXHQgKiBSZXR1cm46IFBvaW50ZXIgdG8gdGhlIHJlYWx0ZWtfcHJpdiBvciBFUlJfUFRSKCkgaW4gY2FzZSBvZiBmYWlsdXJlLlxcbiAxNDc6XFx0ICpcXG4gMTQ4OlxcdCAqIFRoZSByZWFsdGVrX3ByaXYgcG9pbnRlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGZyZWVkIGFzIGl0IGlzIGNvbnRyb2xsZWQgYnlcXG4gMTQ5OlxcdCAqIGRldnJlcy5cXG4gMTUwOlxcdCAqL1xcbiAxNTE6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqXFxuIDE1MjpcXHRydGw4M3h4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gMTUzOlxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvICppbnRlcmZhY2VfaW5mbylcXG4gMTU0OlxcdHtcXG4gMTU1OlxcdFxcdGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgKnZhcjtcXG4gMTU2OlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuIDE1NzpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYyA9IHtcXG4gMTU4OlxcdFxcdFxcdC5yZWdfYml0cyA9IDEwLCAvKiBBNC4uQTAgUjQuLlIwICovXFxuIDE1OTpcXHRcXHRcXHQudmFsX2JpdHMgPSAxNixcXG4gMTYwOlxcdFxcdFxcdC5yZWdfc3RyaWRlID0gMSxcXG4gMTYxOlxcdFxcdFxcdC5tYXhfcmVnaXN0ZXIgPSAweGZmZmYsXFxuIDE2MjpcXHRcXHRcXHQucmVnX2Zvcm1hdF9lbmRpYW4gPSBSRUdNQVBfRU5ESUFOX0JJRyxcXG4gMTYzOlxcdFxcdFxcdC5yZWdfcmVhZCA9IGludGVyZmFjZV9pbmZvLVxcdTAwM2VyZWdfcmVhZCxcXG4gMTY0OlxcdFxcdFxcdC5yZWdfd3JpdGUgPSBpbnRlcmZhY2VfaW5mby1cXHUwMDNlcmVnX3dyaXRlLFxcbiAxNjU6XFx0XFx0XFx0LmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLFxcbiAxNjY6XFx0XFx0XFx0LmxvY2sgPSBydGw4M3h4X2xvY2ssXFxuIDE2NzpcXHRcXHRcXHQudW5sb2NrID0gcnRsODN4eF91bmxvY2ssXFxuIDE2ODpcXHRcXHR9O1xcbiAxNjk6XFx0XFx0aW50IHJldDtcXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0dmFyID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuIDE3MjpcXHRcXHRpZiAoIXZhcilcXG4gMTczOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZV9hZGQoc2l6ZW9mKCpwcml2KSwgdmFyLVxcdTAwM2VjaGlwX2RhdGFfc3opLFxcbiAxNzY6XFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbiAxNzc6XFx0XFx0aWYgKCFwcml2KVxcbiAxNzg6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChkZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuIDE4MTpcXHRcXHRpZiAocmV0KVxcbiAxODI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZXZsYW5fbG9jayk7XFxuIDE4NTpcXHRcXHRpZiAocmV0KVxcbiAxODY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTg3OlxcdFxcbiAxODg6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWwyX2xvY2spO1xcbiAxODk6XFx0XFx0aWYgKHJldClcXG4gMTkwOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdHJjLmxvY2tfYXJnID0gcHJpdjtcXG4gMTkzOlxcdFxcdHByaXYtXFx1MDAzZW1hcCA9IGRldm1fcmVnbWFwX2luaXQoZGV2LCBOVUxMLCBwcml2LCBcXHUwMDI2cmMpO1xcbiAxOTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VtYXApKSB7XFxuIDE5NTpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHByaXYtXFx1MDAzZW1hcCk7XFxuIDE5NjpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInJlZ21hcCBpbml0IGZhaWxlZDogJWRcXFxcblxcXCIsIHJldCk7XFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxOTg6XFx0XFx0fVxcbiAxOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA0OjIwLjA2MzU4NzA5MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjEwMDUxNzg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUTDgzeHggRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHJ0bDgzeHhfcHJvYmUoKWAgbmVlZHMgYG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhbiBPRiAoRGV2aWNlIFRyZWUpIGRldmljZSwgbGlrZWx5IGEgcGxhdGZvcm0gZHJpdmVyIG9yIE1ESU8gZHJpdmVyLiBMb29raW5nIGF0IHRoZSBgcnRsODM2NW1iX29mX21hdGNoYCB0YWJsZSwgaXQncyBjbGVhciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2guIFRoaXMgZHJpdmVyLCBhcyBJIHJlY2FsbCwgdGFsa3MgdG8gdGhlIHN3aXRjaCBoYXJkd2FyZSB2aWEgU01JIChHUElPKSBvciBNRElPLiBJdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIHRoYXQgdGhlIHBoeXNpY2FsIHN3aXRjaCBjaGlwIGJlIGNvbm5lY3RlZCBhbmQgcmVzcG9uZGluZy5cblxuTm93LCB0aGUgY3J1Y2lhbCBwb2ludDogV2UncmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgc3BlY2lmaWNhbGx5LCBRRU1VIG9yIHBlcmhhcHMgR0NFIG9uIHg4Nl82NC9hbWQ2NC4gSSBrbm93LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHRleHQsIHRoYXQgdGhlcmUncyAqbm8qIGVtdWxhdGVkIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGNoaXAgaW4gUUVNVS4gRFNBIHN3aXRjaGVzLCBhbmQgYnkgZXh0ZW5zaW9uIGhhcmR3YXJlIHN3aXRjaCBjaGlwcyBsaWtlIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBvciBSVEw4MzY2UkIsIGNhbm5vdCBiZSBwcm9iZWQgd2l0aG91dCB0aGF0IHBoeXNpY2FsIHByZXNlbmNlLCB0aGUgY29ycmVjdCBPRiBkZXZpY2V0cmVlIG5vZGUsIGFuZCwgY3JpdGljYWxseSwgYSBoYXJkd2FyZSByZXNwb25zZS5cblxuVGhpcyBzaXR1YXRpb24gYWxpZ25zIHBlcmZlY3RseSB3aXRoIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNjZW5hcmlvLiBUaGUgdGV4dCBleHBsaWNpdGx5IG1lbnRpb25zIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBTbWFydE5JQ3MuIElmIHRoZXkgbmVlZCBhIGNhcmQgb3IgQVNJQywgdGhlbiBRRU1VIGlzbid0IGdvaW5nIHRvIGVtdWxhdGUgdGhlbS5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgUmVhbHRlayBQSFkgZHJpdmVyIGlzIHNpbWlsYXJseSBpbmFjY2Vzc2libGUuIExldCdzIGxvb2sgYXQgYHJlYWx0ZWtfbWFpbi5jYC4gQWgsIHRoZSBgUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRgIFBIWSB3aXRoIElEIGAweDAwMWNjOTQyYCBpcyByZWdpc3RlcmVkIHRoZXJlLiBQSFkgZHJpdmVycyBwcm9iZSBiYXNlZCBvbiBNRElPIGJ1cyByZWFkcyBvZiBNSUlfUEhZU0lEMS8yIGFuZCBtYXRjaGluZyB0aGUgSUQuIEJ1dCwgYWdhaW4sIHRoZXJlJ3Mgbm8gZW11bGF0aW9uIGhlcmUuIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgUmVhbHRlayBSVEw4MzY1TUIgUEhZcyBvciBEU0Egc3dpdGNoZXMuXG5cblRoZSBjb3JlIHByb2JsZW0sIGZyb20gYSBwcm9iaW5nIHBlcnNwZWN0aXZlIGlzLCB3aGVyZSdzIHRoZSBidXMgYW5kIHdoZXJlJ3MgdGhlIHJlc3BvbnNlPyBJdCBzZWVtcyB1bmxpa2VseS5cblxuTGV0J3MgZG8gb25lIGxhc3QgY2hlY2sgdGhvdWdoLCB0byBtYWtlIGFic29sdXRlbHkgc3VyZTogSXMgdGhlcmUgKmFueSogdmlydHVhbCBidXMgb3Igc29mdHdhcmUgZW11bGF0aW9uIHRoYXQgY291bGQgaW52b2tlIHRoZXNlIGNhbGxiYWNrcywgZXZlbiBhIERTQSBtb2NrIGRyaXZlcj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXJlIGlzbid0IHNvbWV0aGluZyBzbmVha3kgaW4gdGhlIGtlcm5lbCB0aGF0IHdvdWxkIGdpdmUgdGhlICphcHBlYXJhbmNlKiBvZiBoYXJkd2FyZS4gSSdsbCBzZWFyY2ggZm9yIGFueXRoaW5nIERTQSBtb2NrIHJlbGF0ZWQgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNTcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNTowNi4xNjQxMDk4MzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzkzNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MDU6MDYuMjE1OTA4OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMTg2NzYyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGRzYV9sb29wLmNgIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGNsZWFyIGl0J3MgZm9jdXNlZCBvbiB0ZXN0aW5nIHRoZSBEU0EgY29yZSwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoZSBgZHNhX2xvb3BfZHJpdmVyYC4gSG93ZXZlciwgaXQncyBleHBsaWNpdGx5ICpub3QqIHVzaW5nIHRoZSBSZWFsdGVrIERTQSBzd2l0Y2ggb3IgYHJ0bDgzNjVtYmAgZHJpdmVycyBpbiBhIFwicmVhbFwiIHdheS4gSXQncyBtb2RpZnlpbmcgY29kZSBpbiBgcmVhbHRlay5oYCwgYHJ0bDgzNjVtYl9tYWluLmNgLCBgcnRsODN4eC5jYCwgYW5kIGByZWFsdGVrX21haW4uY2Ag4oCTIGFsbCByZWxhdGVkIHRvIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggYW5kIGl0cyBpbnRlZ3JhdGVkIFJUTDgzNjVNQi1WQyBQSFkuXG5cbk15IGluaXRpYWwgdGhvdWdodHM/IFRoaXMgc2NyZWFtcyBcImRlZGljYXRlZCBoYXJkd2FyZSByZXF1aXJlZC5cIiBUaGVzZSBSZWFsdGVrIGNvbXBvbmVudHMgYXJlIGRlc2lnbmVkIHRvIGJlIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8sIGFuZCByZWx5IG9uIGVpdGhlciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgZW50cnkgb3IgTURJTyBidXMgY29uZmlndXJhdGlvbi4gSW1wb3J0YW50bHksIG5laXRoZXIgdGhlIHN3aXRjaCBBU0lDIG5vciB0aGUgUEhZIGFyZSBlbXVsYXRlZCBpbiB0eXBpY2FsIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgaXMgYSBjcml0aWNhbCBwb2ludC5cblxuTGV0IG1lIGJyZWFrIGRvd24gdGhlIHJlYXNvbmluZyBzeXN0ZW1hdGljYWxseTpcblxuKiAgICoqVW5yZWFjaGFibGUgSGFyZHdhcmU6KiogVGhlIFJUTDgzNjVNQiBzd2l0Y2ggYW5kIFBIWSBhcmUgKnBoeXNpY2FsbHkqIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTm8gbWF0dGVyIGhvdyBjbGV2ZXIgdGhlIHNvZnR3YXJlLCBpdCBjYW5ub3QgaW50ZXJhY3Qgd2l0aCBub24tZXhpc3RlbnQgaGFyZHdhcmUuXG4qICAgKipXb3J0aEZ1enppbmcgRmxhZzoqKiBHaXZlbiB0aGUgbGFjayBvZiBoYXJkd2FyZSBwcmVzZW5jZSwgdGhlcmUncyBubyByZWFsaXN0aWMgY2hhbmNlIHRoYXQgZnV6emluZyB3aWxsIHByb2R1Y2UgYW55IG1lYW5pbmdmdWwgcmVzdWx0cy4gVGhlcmVmb3JlLCBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgaXMgdGhlIGNvcnJlY3QgZGVjaXNpb24uXG4qICAgKipDb25maWd1cmF0aW9uIENvbmNlcm5zOioqIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBpcnJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhleSBhcmUgZWZmZWN0aXZlbHkgbnVsbCBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LlxuXG5UaGUgcGF0Y2gncyBhY3R1YWwgZnVuY3Rpb24g4oCTIGFkZGluZyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgYW5kIEVFRSBzdXBwb3J0IOKAkyBpcyBpcnJlbGV2YW50LiBUaGUgaGFyZHdhcmUncyBpbmFjY2Vzc2liaWxpdHkgaXMgdGhlIGtleSBkZXRlcm1pbmVyLiBXZSBhcmUgdGFsa2luZyBhYm91dCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyBhbmQgUEhZIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYW5kIHByb2JlZCB2aWEgRGV2aWNlIFRyZWUuIFRoZSBQSFkgSUQgc3BlY2lmaWNhbGx5IG1hcHMgdG8gUlRMODM2NU1CLVZDLiBHaXZlbiB0aGUgaGFyZHdhcmUncyBhYnNlbmNlLCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM2OTUsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjA1OjEyLjIzNDU4Nzg5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgQ2xhdXNlIDQ1IE1ESU8gcmVhZC93cml0ZSBhbmQgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBzdXBwb3J0IGZvciBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMgYW5kIHRoZSBSVEw4MzY1TUItVkMgaW50ZWdyYXRlZCBQSFkgZHJpdmVyLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggaGFyZHdhcmUgKGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8pIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBDbGF1c2UgNDUgTURJTyByZWFkL3dyaXRlIGFuZCBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBjaGlwcyBhbmQgdGhlIFJUTDgzNjVNQi1WQyBpbnRlZ3JhdGVkIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBoYXJkd2FyZSAoY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTykgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDowNToxMi4yMzQ2MTYzNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwxs2s[1] Phase: Running StartedAt: 2026-09-04 14:05:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxs2s[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 14:05:23 +0000 UTC FinishedAt: 2026-09-04 14:05:27 +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,}