Name: series-workflow764hd Phase: Failed StartedAt: 2026-08-31 18:43:02 +0000 UTC FinishedAt: 2026-08-31 19:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow764hd[0] Phase: Succeeded StartedAt: 2026-08-31 18:43:02 +0000 UTC FinishedAt: 2026-08-31 19:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow764hd[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 18:43:02 +0000 UTC FinishedAt: 2026-08-31 19:14:09 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFiMmFmNjI4ODhiMDMwZTA1M2E2NTcwY2YwZjIzNjM4NWM5YTcyZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToxMjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmNcbkBAIC0xNDI5LDcgJiM0MzsxNDI5LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxuICAqL1xuIHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuJiM0MztcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXG5pbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuQEAgLTE1NTUsNyAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gICovXG4gc3RhdGljIGludCBydDI1MDBwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4mIzQzO1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdHUzMiByZWc7XG4gXHR1MTYgd29yZDtcbiBcdHU4ICptYWM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmNcbmluZGV4IDE0YzQ1YWJhODM2ZjIuLjg1M2ZkMzFkMTM2MjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuIFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuJiM0MztcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFxuIFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuY1xuaW5kZXggZDFjZDU2OTRlM2M3My4uNWRjYTJhZmI0Yjk2YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQ2MXBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxuICAqL1xuIHN0YXRpYyBpbnQgcnQ2MXBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbiYjNDM7XHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0dTMyIHJlZztcbiBcdHUxNiB3b3JkO1xuIFx0dTggKm1hYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbml0aWFsaXplcyB0aGUgYGVlcHJvbV85M2N4NmAgc3RydWN0IGluIFBDSSB3aXJlbGVzcyBkcml2ZXJzIChydDI0MDBwY2ksIHJ0MjUwMHBjaSwgcnQyODAwcGNpLCBydDYxcGNpKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFBDSSB3aXJlbGVzcyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWIyYWY2Mjg4OGIwMzBlMDUzYTY1NzBjZjBmMjM2Mzg1YzlhNzJlYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjEyOjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMKaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jCkBAIC0xNDI5LDcgJiM0MzsxNDI5LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQogICovCiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAl1MzIgcmVnOwogCXUxNiB3b3JkOwogCXU4ICptYWM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuYwppbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMKQEAgLTE1NTUsNyAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpCiAgKi8KIHN0YXRpYyBpbnQgcnQyNTAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXUzMiByZWc7CiAJdTE2IHdvcmQ7CiAJdTggKm1hYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jCmluZGV4IDE0YzQ1YWJhODM2ZjIuLjg1M2ZkMzFkMTM2MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYwpAQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKQogCiBzdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2koc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAl1MzIgcmVnOwogCiAJcmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCmluZGV4IGQxY2Q1Njk0ZTNjNzMuLjVkY2EyYWZiNGI5NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCkBAIC0yMjk4LDcgJiM0MzsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkKICAqLwogc3RhdGljIGludCBydDYxcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXUzMiByZWc7CiAJdTE2IHdvcmQ7CiAJdTggKm1hYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogUENJIFdpcmVsZXNzIERyaXZlciBDb25jZXJucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4gSSBzZWUgZGlmZnMgaW1wYWN0aW5nIGBydDI0MDBwY2kuY2AsIGBydDI1MDBwY2kuY2AsIGBydDI4MDBwY2kuY2AsIGFuZCBgcnQ2MXBjaS5jYC4gVGhlc2UgYXJlLCBhcyBJIHJlY2FsbCwgYWxsIGRyaXZlcnMgd2l0aGluIHRoZSBSYWxpbmsgZmFtaWx5IGZvciB3aXJlbGVzcyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJLWJhc2VkLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGluaXRpYWxpemluZyBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtgIGluIHRoZWlyIHJlc3BlY3RpdmUgdmFsaWRhdGlvbi9yZWFkIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgY29uY2Vybj8gQXJlIHRoZXNlIGRyaXZlcnMgaW5oZXJlbnRseSB0aWVkIHRvICpwaHlzaWNhbCogUENJIGhhcmR3YXJlPyBTcGVjaWZpY2FsbHksIGFyZSB0aGVzZSBkZXZpY2VzIHRoYXQgYXJlIHVubGlrZWx5IHRvIGJlIGVtdWxhdGVkIGFjY3VyYXRlbHkgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VPyBUaGlzIGlzIGNydWNpYWwgZm9yIG15IHdvcmssIGFuZCBpcyBhIHBvdGVudGlhbCByb2FkYmxvY2suCgpTbywgSSBuZWVkIHRvIGNvbmZpcm06IGFyZSB0aGVzZSBkcml2ZXJzLCBpbiBwcmFjdGljZSwgaGlnaGx5IHJlbGlhbnQgb24gYSByZWFsIFBDSSBkZXZpY2UgZm9yIHByb3BlciBvcGVyYXRpb24sIG9yIGNhbiB0aGV5IGZ1bmN0aW9uIHJlYXNvbmFibHkgd2VsbCBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudD8gVGhpcyBjb3VsZCBiZSBwcm9ibGVtYXRpYyBpZiB0aGV5IGRvbiYjMzk7dCBmdW5jdGlvbiBvciBpZiB0aGV5IGNhdXNlIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZG9jdW1lbnRhdGlvbiB0byBnZXQgYSBtb3JlIGRlZmluaXRpdmUgYW5zd2VyLiBUaW1lIHRvIGZpcmUgdXAgbXkgdG9vbHMgYW5kIHNlYXJjaCBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIGVtdWxhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0MjU6XHR9XG4xNDI2Olx0XG4xNDI3Olx0LypcbjE0Mjg6XHQgKiBEZXZpY2UgcHJvYmUgZnVuY3Rpb25zLlxuMTQyOTpcdCAqL1xuMTQzMDpcdHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuMTQzMTpcdHtcbjE0MzI6XHRcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4xNDMzOlx0XHR1MzIgcmVnO1xuMTQzNDpcdFx0dTE2IHdvcmQ7XG4xNDM1Olx0XHR1OCAqbWFjO1xuMTQzNjpcdFxuMTQzNzpcdFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgQ1NSMjEpO1xuMTQzODpcdFxuMTQzOTpcdFx0ZWVwcm9tLmRhdGEgPSBydDJ4MDBkZXY7XG4xNDQwOlx0XHRlZXByb20ucmVnaXN0ZXJfcmVhZCA9IHJ0MjQwMHBjaV9lZXByb21yZWdpc3Rlcl9yZWFkO1xuMTQ0MTpcdFx0ZWVwcm9tLnJlZ2lzdGVyX3dyaXRlID0gcnQyNDAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlO1xuMTQ0MjpcdFx0ZWVwcm9tLndpZHRoID0gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgQ1NSMjFfVFlQRV85M0M0NikgP1xuMTQ0MzpcdFx0ICAgIFBDSV9FRVBST01fV0lEVEhfOTNDNDYgOiBQQ0lfRUVQUk9NX1dJRFRIXzkzQzY2O1xuMTQ0NDpcdFx0ZWVwcm9tLnJlZ19kYXRhX2luID0gMDtcbjE0NDU6XHRcdGVlcHJvbS5yZWdfZGF0YV9vdXQgPSAwO1xuMTQ0NjpcdFx0ZWVwcm9tLnJlZ19kYXRhX2Nsb2NrID0gMDtcbjE0NDc6XHRcdGVlcHJvbS5yZWdfY2hpcF9zZWxlY3QgPSAwO1xuMTQ0ODpcdFxuMTQ0OTpcdFx0ZWVwcm9tXzkzY3g2X211bHRpcmVhZChcdTAwMjZlZXByb20sIEVFUFJPTV9CQVNFLCBydDJ4MDBkZXYtXHUwMDNlZWVwcm9tLFxuMTQ1MDpcdFx0XHRcdCAgICAgICBFRVBST01fU0laRSAvIHNpemVvZih1MTYpKTtcbjE0NTE6XHRcbjE0NTI6XHRcdC8qXG4xNDUzOlx0XHQgKiBTdGFydCB2YWxpZGF0aW9uIG9mIHRoZSBkYXRhIHRoYXQgaGFzIGJlZW4gcmVhZC5cbjE0NTQ6XHRcdCAqL1xuMTQ1NTpcdFx0bWFjID0gcnQyeDAwX2VlcHJvbV9hZGRyKHJ0MngwMGRldiwgRUVQUk9NX01BQ19BRERSXzApO1xuMTQ1NjpcdFx0cnQyeDAwbGliX3NldF9tYWNfYWRkcmVzcyhydDJ4MDBkZXYsIG1hYyk7XG4xNDU3Olx0XG4xNDU4Olx0XHR3b3JkID0gcnQyeDAwX2VlcHJvbV9yZWFkKHJ0MngwMGRldiwgRUVQUk9NX0FOVEVOTkEpO1xuMTQ1OTpcdFx0aWYgKHdvcmQgPT0gMHhmZmZmKSB7XG4xNDYwOlx0XHRcdHJ0MngwMF9lcnIocnQyeDAwZGV2LCBcJiMzNDtJbnZhbGlkIEVFUFJPTSBkYXRhIGRldGVjdGVkXFxuXCYjMzQ7KTtcbjE0NjE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDYyOlx0XHR9XG4xNDYzOlx0XG4xNDY0Olx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXNzZXNzbWVudCBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBnbyBvdmVyIHRoZSBydWxlczsgdGhlIGZ1enppbmcgYXNzZXNzbWVudCBydWxlcyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBvbmx5IGNlcnRhaW4gbW9kaWZpY2F0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBmbGFnIGl0IGlmIGl0JiMzOTtzIGp1c3QgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGRlY29yYXRpdmUgY2hhbmdlcywgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUpLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgY29kZSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHRlYXJkb3duIGNhbGxiYWNrcyBmb3IgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGFwcGx5IHRoZXNlIHJ1bGVzIHRvIHRoaXMgc3BlY2lmaWMgY2FzZS4gSSBzZWUgd2UgYXJlIGRlYWxpbmcgd2l0aCBgcnQyNDAwcGNpYCwgYHJ0MjUwMHBjaWAsIGBydDI4MDBwY2lgLCBhbmQgYHJ0NjFwY2lgIGRyaXZlcnMuIEFyZSB0aGV5IGRlYWxpbmcgd2l0aCB3aXJlbGVzcyBQQ0kgY2FyZHM/IFllcywgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGVzZSBhcmUgUmFsaW5rIFJUMjQwMC9SVDI1MDAvUlQyODAwL1JUNjEgUENJIHdpcmVsZXNzIGNhcmRzLiBUaGUgZHJpdmVycyBhcmUgZGVmaW5pdGVseSB0aWVkIHRvIHBoeXNpY2FsIFJhbGluayBXaS1GaSBjaGlwcy4KCkFoYSEgVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlc2Ugc3BlY2lmaWMgUmFsaW5rIFJUMjQwMC9SVDI1MDAvUlQyODAwL1JUNjEgUENJIGRldmljZXMuIFFFTVUgaXMgbW9yZSBnZWFyZWQgdG93YXJkIHN0YW5kYXJkIHN0dWZmLCBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldC4gSXQgZG9lc24mIzM5O3QgaW5jbHVkZSB0aGVzZSBSYWxpbmsgV2ktRmkgUENJIGRldmljZXMuIEZ1cnRoZXJtb3JlLCB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uLCBsaWtlIGBydDI0MDBwY2lfdmFsaWRhdGVfZWVwcm9tYCwgYHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb21gLCBldGMuIGFyZSBiZWluZyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0kgZGV2aWNlIHByb2JlLiBNb3JlIHByZWNpc2VseSwgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGZyb20gZnVuY3Rpb25zIHN1Y2ggYXMgYHJ0MngwMHBjaV9wcm9iZWAgb3IgYHJ0MngwMGxpYl9wcm9iZV9kZXZgLiBUaGVyZWZvcmUsIEkgbm93IG5lZWQgdG8gZXhhbWluZSBleGFjdGx5ICp3aGVyZSogdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkIGZyb20gdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyB3b3VsZCBldmVyIGJlIHJlbGV2YW50IGluIGEgZnV6emluZyBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY2hhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYz0xMzY5PXN0YXRpYyBpcnFyZXR1cm5fdCBydDI0MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MjktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jOjE0MzA6c3RhdGljIGludCBydDI0MDBwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmM9MTYwNz1zdGF0aWMgaW50IHJ0MjQwMHBjaV9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMtMTYxNC1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYzoxNjE1Olx0cmV0dmFsID0gcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShydDJ4MDBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYy0xNjE2LVx0aWYgKHJldHZhbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEVFUFJPTSBSZWFkKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyLiBXZSYjMzk7dmUgZ290IGEgc3VzcGVjdGVkIGFyZWEsIGJ1dCBiZWZvcmUgd2UgZ28gdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGFub3RoZXIgZnVuY3Rpb24gd2l0aGluIHRoZSBgcnQyODAwcGNpYCBtb2R1bGUsIHNwZWNpZmljYWxseSBgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaWAuIE15IGludHVpdGlvbiwgYmFzZWQgb24gdGhlIGNvbnRleHQsIHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgZGlyZWN0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBFRVBST00gdmlhIHRoZSBQQ0kgaW50ZXJmYWNlLiBVbmRlcnN0YW5kaW5nIGhvdyBpdCByZWFkcyB0aGUgRUVQUk9NIGNvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMuIEl04oCZcyBjcml0aWNhbCB0byB2ZXJpZnkgaWYgdGhlIGxvdy1sZXZlbCBFRVBST00gcmVhZCBpcyBmdW5jdGlvbmluZyBjb3JyZWN0bHksIGFzIHRoaXMgaXMgdGhlIGZvdW5kYXRpb25hbCBvcGVyYXRpb24gdXBvbiB3aGljaCB0aGUgaGlnaGVyLWxldmVsIEVFUFJPTSBpbnRlcnByZXRhdGlvbiBmdW5jdGlvbnMgYXJlIGJ1aWx0LiBJdCBtaWdodCBiZSB0aGF0IHRoZSBlcnJvciB3ZSYjMzk7cmUgb2JzZXJ2aW5nIGlzIGEgY29uc2VxdWVuY2Ugb2YgaW5jb3JyZWN0IGRhdGEgcmV0cmlldmFsLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTk0PXN0YXRpYyB2b2lkIHJ0MjgwMHBjaV9lZXByb21yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjEwOTpzdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2koc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMTEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTI3Nz1zdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjgzLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzoyODQ6XHRcdHJldHZhbCA9IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2kocnQyeDAwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNzUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleHBlcmllbmNpbmcgaXQsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBydDI4MDBwY2lfcHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBydDI4MDBwY2lfcHJvYmVgIGZ1bmN0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nLCAmIzM0O3Byb2JlJiMzNDsgbWVhbnMgaW5pdGlhbGl6YXRpb24sIGRldGVjdGlvbiwgYW5kIHNldHVwIOKAkyB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBicmluZ2luZyBhIFBDSSBkZXZpY2Ugb25saW5lLCBsaWtlbHkgYSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIgaW4gdGhpcyBjYXNlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgc2VxdWVuY2U6IHJlc291cmNlIGFsbG9jYXRpb24sIHJlZ2lzdGVyIGFjY2VzcyBzZXR1cCwgZGV2aWNlIElEIHZlcmlmaWNhdGlvbiAoaXMgdGhpcyBSRUFMTFkgdGhlIHJpZ2h0IGNoaXA/KSwgbWF5YmUgc29tZSBpbml0aWFsIGhhcmR3YXJlIHJlc2V0IG9yIGNvbmZpZ3VyYXRpb24uCgpJJiMzOTttIG1lbnRhbGx5IHNpZnRpbmcgdGhyb3VnaCBteSB1bmRlcnN0YW5kaW5nIG9mIFBDSSBkZXZpY2UgZHJpdmVyczogSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgY2FsbHMgdG8gcmVxdWVzdCBJL08gYW5kIG1lbW9yeSByZWdpb25zLiBJcyB0aGlzIHVzaW5nIHRoZSBgcGNpX3JlcXVlc3RfcmVnaW9ucygpYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEkmIzM5O2xsIHByb2JhYmx5IHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEg4oCTIHNldHRpbmcgdXAgRE1BIG1hcHMgaWYgaXQgaXMgbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGludGVycnVwdCBoYW5kbGluZz8gVGhlcmUmIzM5O3MgZ290IHRvIGJlIGFuIGBpcnFfcmVxdWVzdGAgb3Igc2ltaWxhciBjYWxsIGluIGhlcmUsIGFuZCBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpcyBuYW1lZC4KClRoZSBkcml2ZXIgcHJvYmFibHkgcmVsaWVzIG9uIHNwZWNpZmljIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgc28gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIGxpa2UgYHBjaV9yZWFkX2NvbmZpZ19kd29yZCgpYCwgYHBjaV93cml0ZV9jb25maWdfYnl0ZSgpYCwgZXRjLiDigJMgdGhlIG5pdHR5LWdyaXR0eSBvZiBnZXR0aW5nIHRoZSBkZXZpY2UgcmVzcG9uZGluZy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIG5lZWQgdG8gYWRqdXN0IEJBUnMgb3IgZW5hYmxlIGJ1cyBtYXN0ZXJpbmcuCgpBbmQgb2YgY291cnNlLCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcmUgYWx3YXlzIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuIElzIHRoZXJlIGFueSBvYnZpb3VzIGF0dGVtcHQgYXQgaGFyZGVuaW5nIGFnYWluc3QgcG90ZW50aWFsIERNQSBhdHRhY2tzPyBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCB0aGUgcmVjb3ZlcnkgbWVjaGFuaXNtcyBsb29rIGxpa2Ug4oCTIHBhcnRpY3VsYXJseSBpZiBhIGRldmljZSBmYWlscyB0byBpbml0aWFsaXplIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyODAwcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM9NDQ5PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jLTQ1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM6NDUxOnN0YXRpYyBpbnQgcnQyODAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTItXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM9NDU3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydDI4MDBwY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtNDU5LVx0LmlkX3RhYmxlXHQ9IHJ0MjgwMHBjaV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjQ2MDpcdC5wcm9iZVx0XHQ9IHJ0MjgwMHBjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtNDYxLVx0LnJlbW92ZVx0XHQ9IHJ0MngwMHBjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTQKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFVuZnV6emFibGUgQ29kZSBQYXRocyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIHRoZXNlIHBhdGNoZXMsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgd2Ugc3RhbmQuIEFsbCBmb3VyIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgbmVzdGxlZCB3aXRoaW4gUENJIGRyaXZlcnM6IGBydDI0MDBwY2lgLCBgcnQyNTAwcGNpYCwgYHJ0MjgwMHBjaWAsIGFuZCBgcnQ2MXBjaWAuIFRoZXNlIGFyZSBzcGVjaWZpY2FsbHkgZm9yIFJhbGluayYjMzk7cyBQQ0kgd2lyZWxlc3MgbmV0d29yayBjYXJkcywgYW5kIHRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIFRoZXNlIGRyaXZlcnMgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0kvUENJZSBoYXJkd2FyZS4gV2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWUgZW11bGF0ZWQgZGV2aWNlIGhlcmU7IGl0JiMzOTtzIHRoZSByZWFsIGRlYWwuCgpJIHdlbnQgYmFjayBhbmQgY2hlY2tlZCB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBndWlkZWxpbmVzLCBhbmQsIGFzIGV4cGVjdGVkLCBpdCYjMzk7cyBhIHBlcmZlY3QgbWF0Y2ggZm9yIHRoYXQgYnVsbGV0IHBvaW50LiBJdCBleHBsaWNpdGx5IHN0YXRlczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhlc2UgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLiBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgcmVhc29uIHRoYXQgdGhpcyBjb3VsZCBiZSBmdXp6ZWQgaW4gYW55IG1lYW5pbmdmdWwgd2F5LiBJdCYjMzk7cyBub3Qgd29ydGggbXkgdGltZSwgb3IgdGhlIHRpbWUgb2YgdGhlIGZ1enplcnMsIGF0IGFsbC4KClRoZXJlZm9yZSwgaXQmIzM5O3MgYSBzaW1wbGUgY2FsbCwgSSB0aGluay4gSSYjMzk7bGwgaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjQ1NDg4OTc2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Nzc1NTM4MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTI6MzMuNDU0ODk2MjU2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE1MTIxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYjJhZjYyODg4YjAzMGUwNTNhNjU3MGNmMGYyMzYzODVjOWE3MmVjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjEyOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXFxuaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xcbkBAIC0xNDI5LDcgKzE0MjksNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNDAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuICAqL1xcbiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXFxuaW5kZXggMzZkZGM1YTY5ZmE0MC4uMzUzNmEwZjMxMTE3MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xcbkBAIC0xNTU1LDcgKzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuICAqL1xcbiBzdGF0aWMgaW50IHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXFxuaW5kZXggMTRjNDVhYmE4MzZmMi4uODUzZmQzMWQxMzYyOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xcbkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgcnQyODAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcXG4gXFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbiB7XFxuLVxcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xcbitcXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xcbiBcXHR1MzIgcmVnO1xcbiBcXG4gXFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcXG5pbmRleCBkMWNkNTY5NGUzYzczLi41ZGNhMmFmYjRiOTZjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG4gICovXFxuIHN0YXRpYyBpbnQgcnQ2MXBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjkwNzEyMTUyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODQzMjMyOTE3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiMmFmNjI4ODhiMDMwZTA1M2E2NTcwY2YwZjIzNjM4NWM5YTcyZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToxMjozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXG5pbmRleCA0MmUyMWU5ZjMwM2IyLi4xNTA3M2I4NTZhZGY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuQEAgLTE0MjksNyArMTQyOSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydDI0MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbitcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXG5pbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuQEAgLTE1NTUsNyArMTU1NSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydDI1MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbitcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG5pbmRleCAxNGM0NWFiYTgzNmYyLi44NTNmZDMxZDEzNjI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xuQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuIFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuK1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdHUzMiByZWc7XG4gXG4gXHRyZWcgPSBydDJ4MDBtbWlvX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2LCBFMlBST01fQ1NSKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG5pbmRleCBkMWNkNTY5NGUzYzczLi41ZGNhMmFmYjRiOTZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0NjFwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0dTMyIHJlZztcbiBcdHUxNiB3b3JkO1xuIFx0dTggKm1hYztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjkwNzEyMzI5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1Njg5Mjk4MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBQQ0kgV2lyZWxlc3MgRHJpdmVyIENvbmNlcm5zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4gSSBzZWUgZGlmZnMgaW1wYWN0aW5nIGBydDI0MDBwY2kuY2AsIGBydDI1MDBwY2kuY2AsIGBydDI4MDBwY2kuY2AsIGFuZCBgcnQ2MXBjaS5jYC4gVGhlc2UgYXJlLCBhcyBJIHJlY2FsbCwgYWxsIGRyaXZlcnMgd2l0aGluIHRoZSBSYWxpbmsgZmFtaWx5IGZvciB3aXJlbGVzcyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJLWJhc2VkLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGluaXRpYWxpemluZyBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtgIGluIHRoZWlyIHJlc3BlY3RpdmUgdmFsaWRhdGlvbi9yZWFkIGZ1bmN0aW9ucy5cblxuTXkgaW5pdGlhbCBjb25jZXJuPyBBcmUgdGhlc2UgZHJpdmVycyBpbmhlcmVudGx5IHRpZWQgdG8gKnBoeXNpY2FsKiBQQ0kgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgYXJlIHRoZXNlIGRldmljZXMgdGhhdCBhcmUgdW5saWtlbHkgdG8gYmUgZW11bGF0ZWQgYWNjdXJhdGVseSBieSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiB0b29scyBsaWtlIFFFTVU/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbXkgd29yaywgYW5kIGlzIGEgcG90ZW50aWFsIHJvYWRibG9jay5cblxuU28sIEkgbmVlZCB0byBjb25maXJtOiBhcmUgdGhlc2UgZHJpdmVycywgaW4gcHJhY3RpY2UsIGhpZ2hseSByZWxpYW50IG9uIGEgcmVhbCBQQ0kgZGV2aWNlIGZvciBwcm9wZXIgb3BlcmF0aW9uLCBvciBjYW4gdGhleSBmdW5jdGlvbiByZWFzb25hYmx5IHdlbGwgaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQ/IFRoaXMgY291bGQgYmUgcHJvYmxlbWF0aWMgaWYgdGhleSBkb24ndCBmdW5jdGlvbiBvciBpZiB0aGV5IGNhdXNlIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQuXG5cbkknbSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGRvY3VtZW50YXRpb24gdG8gZ2V0IGEgbW9yZSBkZWZpbml0aXZlIGFuc3dlci4gVGltZSB0byBmaXJlIHVwIG15IHRvb2xzIGFuZCBzZWFyY2ggZm9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aCBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDksIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToxMzowOS41OTY0MjQxODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDI1OlxcdH1cXG4xNDI2OlxcdFxcbjE0Mjc6XFx0LypcXG4xNDI4OlxcdCAqIERldmljZSBwcm9iZSBmdW5jdGlvbnMuXFxuMTQyOTpcXHQgKi9cXG4xNDMwOlxcdHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbjE0MzE6XFx0e1xcbjE0MzI6XFx0XFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4xNDMzOlxcdFxcdHUzMiByZWc7XFxuMTQzNDpcXHRcXHR1MTYgd29yZDtcXG4xNDM1OlxcdFxcdHU4ICptYWM7XFxuMTQzNjpcXHRcXG4xNDM3OlxcdFxcdHJlZyA9IHJ0MngwMG1taW9fcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIENTUjIxKTtcXG4xNDM4OlxcdFxcbjE0Mzk6XFx0XFx0ZWVwcm9tLmRhdGEgPSBydDJ4MDBkZXY7XFxuMTQ0MDpcXHRcXHRlZXByb20ucmVnaXN0ZXJfcmVhZCA9IHJ0MjQwMHBjaV9lZXByb21yZWdpc3Rlcl9yZWFkO1xcbjE0NDE6XFx0XFx0ZWVwcm9tLnJlZ2lzdGVyX3dyaXRlID0gcnQyNDAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlO1xcbjE0NDI6XFx0XFx0ZWVwcm9tLndpZHRoID0gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgQ1NSMjFfVFlQRV85M0M0NikgP1xcbjE0NDM6XFx0XFx0ICAgIFBDSV9FRVBST01fV0lEVEhfOTNDNDYgOiBQQ0lfRUVQUk9NX1dJRFRIXzkzQzY2O1xcbjE0NDQ6XFx0XFx0ZWVwcm9tLnJlZ19kYXRhX2luID0gMDtcXG4xNDQ1OlxcdFxcdGVlcHJvbS5yZWdfZGF0YV9vdXQgPSAwO1xcbjE0NDY6XFx0XFx0ZWVwcm9tLnJlZ19kYXRhX2Nsb2NrID0gMDtcXG4xNDQ3OlxcdFxcdGVlcHJvbS5yZWdfY2hpcF9zZWxlY3QgPSAwO1xcbjE0NDg6XFx0XFxuMTQ0OTpcXHRcXHRlZXByb21fOTNjeDZfbXVsdGlyZWFkKFxcdTAwMjZlZXByb20sIEVFUFJPTV9CQVNFLCBydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSxcXG4xNDUwOlxcdFxcdFxcdFxcdCAgICAgICBFRVBST01fU0laRSAvIHNpemVvZih1MTYpKTtcXG4xNDUxOlxcdFxcbjE0NTI6XFx0XFx0LypcXG4xNDUzOlxcdFxcdCAqIFN0YXJ0IHZhbGlkYXRpb24gb2YgdGhlIGRhdGEgdGhhdCBoYXMgYmVlbiByZWFkLlxcbjE0NTQ6XFx0XFx0ICovXFxuMTQ1NTpcXHRcXHRtYWMgPSBydDJ4MDBfZWVwcm9tX2FkZHIocnQyeDAwZGV2LCBFRVBST01fTUFDX0FERFJfMCk7XFxuMTQ1NjpcXHRcXHRydDJ4MDBsaWJfc2V0X21hY19hZGRyZXNzKHJ0MngwMGRldiwgbWFjKTtcXG4xNDU3OlxcdFxcbjE0NTg6XFx0XFx0d29yZCA9IHJ0MngwMF9lZXByb21fcmVhZChydDJ4MDBkZXYsIEVFUFJPTV9BTlRFTk5BKTtcXG4xNDU5OlxcdFxcdGlmICh3b3JkID09IDB4ZmZmZikge1xcbjE0NjA6XFx0XFx0XFx0cnQyeDAwX2VycihydDJ4MDBkZXYsIFxcXCJJbnZhbGlkIEVFUFJPTSBkYXRhIGRldGVjdGVkXFxcXG5cXFwiKTtcXG4xNDYxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0NjI6XFx0XFx0fVxcbjE0NjM6XFx0XFxuMTQ2NDpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MDkuNTk2NTI3OTQyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM2MzI5NDM1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBc3Nlc3NtZW50IENvbnNpZGVyYXRpb25zKipcblxuT2theSwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBnbyBvdmVyIHRoZSBydWxlczsgdGhlIGZ1enppbmcgYXNzZXNzbWVudCBydWxlcyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBvbmx5IGNlcnRhaW4gbW9kaWZpY2F0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBmbGFnIGl0IGlmIGl0J3MganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMvbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSksIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzIGZvciBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLlxuXG5Ob3csIEkgbmVlZCB0byBhcHBseSB0aGVzZSBydWxlcyB0byB0aGlzIHNwZWNpZmljIGNhc2UuIEkgc2VlIHdlIGFyZSBkZWFsaW5nIHdpdGggYHJ0MjQwMHBjaWAsIGBydDI1MDBwY2lgLCBgcnQyODAwcGNpYCwgYW5kIGBydDYxcGNpYCBkcml2ZXJzLiBBcmUgdGhleSBkZWFsaW5nIHdpdGggd2lyZWxlc3MgUENJIGNhcmRzPyBZZXMsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgdGhlc2UgYXJlIFJhbGluayBSVDI0MDAvUlQyNTAwL1JUMjgwMC9SVDYxIFBDSSB3aXJlbGVzcyBjYXJkcy4gVGhlIGRyaXZlcnMgYXJlIGRlZmluaXRlbHkgdGllZCB0byBwaHlzaWNhbCBSYWxpbmsgV2ktRmkgY2hpcHMuXG5cbkFoYSEgVGhhdCdzIGEga2V5IHBvaW50LiBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBSYWxpbmsgUlQyNDAwL1JUMjUwMC9SVDI4MDAvUlQ2MSBQQ0kgZGV2aWNlcy4gUUVNVSBpcyBtb3JlIGdlYXJlZCB0b3dhcmQgc3RhbmRhcmQgc3R1ZmYsIGxpa2UgZTEwMDAsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LiBJdCBkb2Vzbid0IGluY2x1ZGUgdGhlc2UgUmFsaW5rIFdpLUZpIFBDSSBkZXZpY2VzLiBGdXJ0aGVybW9yZSwgdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiwgbGlrZSBgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbWAsIGBydDI1MDBwY2lfdmFsaWRhdGVfZWVwcm9tYCwgZXRjLiBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgUENJIGRldmljZSBwcm9iZS4gTW9yZSBwcmVjaXNlbHksIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCBmcm9tIGZ1bmN0aW9ucyBzdWNoIGFzIGBydDJ4MDBwY2lfcHJvYmVgIG9yIGBydDJ4MDBsaWJfcHJvYmVfZGV2YC4gVGhlcmVmb3JlLCBJIG5vdyBuZWVkIHRvIGV4YW1pbmUgZXhhY3RseSAqd2hlcmUqIHRoZXkncmUgYmVpbmcgY2FsbGVkIGZyb20gdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyB3b3VsZCBldmVyIGJlIHJlbGV2YW50IGluIGEgZnV6emluZyBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY2hhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MzMuMjI5NDc0MTM1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTAyNTMzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jPTEzNjk9c3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYy0xNDI5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmM6MTQzMDpzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYz0xNjA3PXN0YXRpYyBpbnQgcnQyNDAwcGNpX3Byb2JlX2h3KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE2MTQtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYzoxNjE1OlxcdHJldHZhbCA9IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20ocnQyeDAwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE2MTYtXFx0aWYgKHJldHZhbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MzUuMjM5NzMzNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Nzg5Njg5Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgRUVQUk9NIFJlYWQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyLiBXZSd2ZSBnb3QgYSBzdXNwZWN0ZWQgYXJlYSwgYnV0IGJlZm9yZSB3ZSBnbyB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBsZXQncyB0YWtlIGEgbG9vayBhdCBhbm90aGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHJ0MjgwMHBjaWAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2lgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIGRpcmVjdCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgRUVQUk9NIHZpYSB0aGUgUENJIGludGVyZmFjZS4gVW5kZXJzdGFuZGluZyBob3cgaXQgcmVhZHMgdGhlIEVFUFJPTSBjb3VsZCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHRzLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IGlmIHRoZSBsb3ctbGV2ZWwgRUVQUk9NIHJlYWQgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5LCBhcyB0aGlzIGlzIHRoZSBmb3VuZGF0aW9uYWwgb3BlcmF0aW9uIHVwb24gd2hpY2ggdGhlIGhpZ2hlci1sZXZlbCBFRVBST00gaW50ZXJwcmV0YXRpb24gZnVuY3Rpb25zIGFyZSBidWlsdC4gSXQgbWlnaHQgYmUgdGhhdCB0aGUgZXJyb3Igd2UncmUgb2JzZXJ2aW5nIGlzIGEgY29uc2VxdWVuY2Ugb2YgaW5jb3JyZWN0IGRhdGEgcmV0cmlldmFsLiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjQyLjAyOTQyNTYwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMzIwMzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz05ND1zdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzoxMDk6c3RhdGljIGludCBydDI4MDBwY2lfcmVhZF9lZXByb21fcGNpKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz0yNzc9c3RhdGljIGludCBydDI4MDBwY2lfcmVhZF9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjgzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjI4NDpcXHRcXHRyZXR2YWwgPSBydDI4MDBwY2lfcmVhZF9lZXByb21fcGNpKHJ0MngwMGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0yODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjQzLjU4Mjc1MzA0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgyNjU2MjcxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleHBlcmllbmNpbmcgaXQsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgcnQyODAwcGNpX3Byb2JlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ0MjgwMHBjaV9wcm9iZWAgZnVuY3Rpb24uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJwcm9iZVwiIG1lYW5zIGluaXRpYWxpemF0aW9uLCBkZXRlY3Rpb24sIGFuZCBzZXR1cCDigJMgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgYnJpbmdpbmcgYSBQQ0kgZGV2aWNlIG9ubGluZSwgbGlrZWx5IGEgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyIGluIHRoaXMgY2FzZS4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlOiByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RlciBhY2Nlc3Mgc2V0dXAsIGRldmljZSBJRCB2ZXJpZmljYXRpb24gKGlzIHRoaXMgUkVBTExZIHRoZSByaWdodCBjaGlwPyksIG1heWJlIHNvbWUgaW5pdGlhbCBoYXJkd2FyZSByZXNldCBvciBjb25maWd1cmF0aW9uLlxuXG5JJ20gbWVudGFsbHkgc2lmdGluZyB0aHJvdWdoIG15IHVuZGVyc3RhbmRpbmcgb2YgUENJIGRldmljZSBkcml2ZXJzOiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIGNhbGxzIHRvIHJlcXVlc3QgSS9PIGFuZCBtZW1vcnkgcmVnaW9ucy4gSXMgdGhpcyB1c2luZyB0aGUgYHBjaV9yZXF1ZXN0X3JlZ2lvbnMoKWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uPyBJJ2xsIHByb2JhYmx5IHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEg4oCTIHNldHRpbmcgdXAgRE1BIG1hcHMgaWYgaXQgaXMgbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGludGVycnVwdCBoYW5kbGluZz8gVGhlcmUncyBnb3QgdG8gYmUgYW4gYGlycV9yZXF1ZXN0YCBvciBzaW1pbGFyIGNhbGwgaW4gaGVyZSwgYW5kIEknbGwgYmUgbG9va2luZyB0byBzZWUgd2hhdCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaXMgbmFtZWQuXG5cblRoZSBkcml2ZXIgcHJvYmFibHkgcmVsaWVzIG9uIHNwZWNpZmljIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgc28gSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMgbGlrZSBgcGNpX3JlYWRfY29uZmlnX2R3b3JkKClgLCBgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKClgLCBldGMuIOKAkyB0aGUgbml0dHktZ3JpdHR5IG9mIGdldHRpbmcgdGhlIGRldmljZSByZXNwb25kaW5nLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHBvdGVudGlhbCBuZWVkIHRvIGFkanVzdCBCQVJzIG9yIGVuYWJsZSBidXMgbWFzdGVyaW5nLlxuXG5BbmQgb2YgY291cnNlLCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcmUgYWx3YXlzIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuIElzIHRoZXJlIGFueSBvYnZpb3VzIGF0dGVtcHQgYXQgaGFyZGVuaW5nIGFnYWluc3QgcG90ZW50aWFsIERNQSBhdHRhY2tzPyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCB3aGF0IHRoZSByZWNvdmVyeSBtZWNoYW5pc21zIGxvb2sgbGlrZSDigJMgcGFydGljdWxhcmx5IGlmIGEgZGV2aWNlIGZhaWxzIHRvIGluaXRpYWxpemUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzc1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6NTEuODQ4MzgyODE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM4MjA0MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0MjgwMHBjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTQ0OT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzo0NTE6c3RhdGljIGludCBydDI4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTItXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz00NTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0MjgwMHBjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jLTQ1OS1cXHQuaWRfdGFibGVcXHQ9IHJ0MjgwMHBjaV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzo0NjA6XFx0LnByb2JlXFx0XFx0PSBydDI4MDBwY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NjEtXFx0LnJlbW92ZVxcdFxcdD0gcnQyeDAwcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6NTMuMjg2NTk3NzM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5NDM3ODYxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVW5mdXp6YWJsZSBDb2RlIFBhdGhzKipcblxuT2theSwgc28gSSd2ZSBqdXN0IHJldmlld2VkIHRoZXNlIHBhdGNoZXMsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB3aGVyZSB3ZSBzdGFuZC4gQWxsIGZvdXIgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBQQ0kgZHJpdmVyczogYHJ0MjQwMHBjaWAsIGBydDI1MDBwY2lgLCBgcnQyODAwcGNpYCwgYW5kIGBydDYxcGNpYC4gVGhlc2UgYXJlIHNwZWNpZmljYWxseSBmb3IgUmFsaW5rJ3MgUENJIHdpcmVsZXNzIG5ldHdvcmsgY2FyZHMsIGFuZCB0aGlzIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGVzZSBkcml2ZXJzICpyZXF1aXJlKiBhY3R1YWwgcGh5c2ljYWwgUENJL1BDSWUgaGFyZHdhcmUuIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWUgZW11bGF0ZWQgZGV2aWNlIGhlcmU7IGl0J3MgdGhlIHJlYWwgZGVhbC5cblxuSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQgdGhlIFwiV29ydGhGdXp6aW5nXCIgZ3VpZGVsaW5lcywgYW5kLCBhcyBleHBlY3RlZCwgaXQncyBhIHBlcmZlY3QgbWF0Y2ggZm9yIHRoYXQgYnVsbGV0IHBvaW50LiBJdCBleHBsaWNpdGx5IHN0YXRlczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhlc2UgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLiBJIGNhbid0IHRoaW5rIG9mIGFueSByZWFzb24gdGhhdCB0aGlzIGNvdWxkIGJlIGZ1enplZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0J3Mgbm90IHdvcnRoIG15IHRpbWUsIG9yIHRoZSB0aW1lIG9mIHRoZSBmdXp6ZXJzLCBhdCBhbGwuXG5cblRoZXJlZm9yZSwgaXQncyBhIHNpbXBsZSBjYWxsLCBJIHRoaW5rLiBJJ2xsIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTU0LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToxMzo1OC4yMzAzODczMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjU4LjIzMDQxNDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow764hd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 18:43:02 +0000 UTC FinishedAt: 2026-08-31 19:13:59 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFiMmFmNjI4ODhiMDMwZTA1M2E2NTcwY2YwZjIzNjM4NWM5YTcyZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToxMjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmNcbkBAIC0xNDI5LDcgJiM0MzsxNDI5LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxuICAqL1xuIHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuJiM0MztcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXG5pbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuQEAgLTE1NTUsNyAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gICovXG4gc3RhdGljIGludCBydDI1MDBwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4mIzQzO1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdHUzMiByZWc7XG4gXHR1MTYgd29yZDtcbiBcdHU4ICptYWM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmNcbmluZGV4IDE0YzQ1YWJhODM2ZjIuLjg1M2ZkMzFkMTM2MjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuIFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuJiM0MztcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFxuIFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuY1xuaW5kZXggZDFjZDU2OTRlM2M3My4uNWRjYTJhZmI0Yjk2YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQ2MXBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxuICAqL1xuIHN0YXRpYyBpbnQgcnQ2MXBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbiYjNDM7XHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0dTMyIHJlZztcbiBcdHUxNiB3b3JkO1xuIFx0dTggKm1hYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbml0aWFsaXplcyB0aGUgYGVlcHJvbV85M2N4NmAgc3RydWN0IGluIFBDSSB3aXJlbGVzcyBkcml2ZXJzIChydDI0MDBwY2ksIHJ0MjUwMHBjaSwgcnQyODAwcGNpLCBydDYxcGNpKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFBDSSB3aXJlbGVzcyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWIyYWY2Mjg4OGIwMzBlMDUzYTY1NzBjZjBmMjM2Mzg1YzlhNzJlYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDE5OjEyOjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMKaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jCkBAIC0xNDI5LDcgJiM0MzsxNDI5LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQogICovCiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAl1MzIgcmVnOwogCXUxNiB3b3JkOwogCXU4ICptYWM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuYwppbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMKQEAgLTE1NTUsNyAmIzQzOzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpCiAgKi8KIHN0YXRpYyBpbnQgcnQyNTAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXUzMiByZWc7CiAJdTE2IHdvcmQ7CiAJdTggKm1hYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jCmluZGV4IDE0YzQ1YWJhODM2ZjIuLjg1M2ZkMzFkMTM2MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYwpAQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKQogCiBzdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2koc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAl1MzIgcmVnOwogCiAJcmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCmluZGV4IGQxY2Q1Njk0ZTNjNzMuLjVkY2EyYWZiNGI5NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jCkBAIC0yMjk4LDcgJiM0MzsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkKICAqLwogc3RhdGljIGludCBydDYxcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXUzMiByZWc7CiAJdTE2IHdvcmQ7CiAJdTggKm1hYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogUENJIFdpcmVsZXNzIERyaXZlciBDb25jZXJucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4gSSBzZWUgZGlmZnMgaW1wYWN0aW5nIGBydDI0MDBwY2kuY2AsIGBydDI1MDBwY2kuY2AsIGBydDI4MDBwY2kuY2AsIGFuZCBgcnQ2MXBjaS5jYC4gVGhlc2UgYXJlLCBhcyBJIHJlY2FsbCwgYWxsIGRyaXZlcnMgd2l0aGluIHRoZSBSYWxpbmsgZmFtaWx5IGZvciB3aXJlbGVzcyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJLWJhc2VkLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGluaXRpYWxpemluZyBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtgIGluIHRoZWlyIHJlc3BlY3RpdmUgdmFsaWRhdGlvbi9yZWFkIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgY29uY2Vybj8gQXJlIHRoZXNlIGRyaXZlcnMgaW5oZXJlbnRseSB0aWVkIHRvICpwaHlzaWNhbCogUENJIGhhcmR3YXJlPyBTcGVjaWZpY2FsbHksIGFyZSB0aGVzZSBkZXZpY2VzIHRoYXQgYXJlIHVubGlrZWx5IHRvIGJlIGVtdWxhdGVkIGFjY3VyYXRlbHkgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VPyBUaGlzIGlzIGNydWNpYWwgZm9yIG15IHdvcmssIGFuZCBpcyBhIHBvdGVudGlhbCByb2FkYmxvY2suCgpTbywgSSBuZWVkIHRvIGNvbmZpcm06IGFyZSB0aGVzZSBkcml2ZXJzLCBpbiBwcmFjdGljZSwgaGlnaGx5IHJlbGlhbnQgb24gYSByZWFsIFBDSSBkZXZpY2UgZm9yIHByb3BlciBvcGVyYXRpb24sIG9yIGNhbiB0aGV5IGZ1bmN0aW9uIHJlYXNvbmFibHkgd2VsbCBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudD8gVGhpcyBjb3VsZCBiZSBwcm9ibGVtYXRpYyBpZiB0aGV5IGRvbiYjMzk7dCBmdW5jdGlvbiBvciBpZiB0aGV5IGNhdXNlIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZG9jdW1lbnRhdGlvbiB0byBnZXQgYSBtb3JlIGRlZmluaXRpdmUgYW5zd2VyLiBUaW1lIHRvIGZpcmUgdXAgbXkgdG9vbHMgYW5kIHNlYXJjaCBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIGVtdWxhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0MjU6XHR9XG4xNDI2Olx0XG4xNDI3Olx0LypcbjE0Mjg6XHQgKiBEZXZpY2UgcHJvYmUgZnVuY3Rpb25zLlxuMTQyOTpcdCAqL1xuMTQzMDpcdHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuMTQzMTpcdHtcbjE0MzI6XHRcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4xNDMzOlx0XHR1MzIgcmVnO1xuMTQzNDpcdFx0dTE2IHdvcmQ7XG4xNDM1Olx0XHR1OCAqbWFjO1xuMTQzNjpcdFxuMTQzNzpcdFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgQ1NSMjEpO1xuMTQzODpcdFxuMTQzOTpcdFx0ZWVwcm9tLmRhdGEgPSBydDJ4MDBkZXY7XG4xNDQwOlx0XHRlZXByb20ucmVnaXN0ZXJfcmVhZCA9IHJ0MjQwMHBjaV9lZXByb21yZWdpc3Rlcl9yZWFkO1xuMTQ0MTpcdFx0ZWVwcm9tLnJlZ2lzdGVyX3dyaXRlID0gcnQyNDAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlO1xuMTQ0MjpcdFx0ZWVwcm9tLndpZHRoID0gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgQ1NSMjFfVFlQRV85M0M0NikgP1xuMTQ0MzpcdFx0ICAgIFBDSV9FRVBST01fV0lEVEhfOTNDNDYgOiBQQ0lfRUVQUk9NX1dJRFRIXzkzQzY2O1xuMTQ0NDpcdFx0ZWVwcm9tLnJlZ19kYXRhX2luID0gMDtcbjE0NDU6XHRcdGVlcHJvbS5yZWdfZGF0YV9vdXQgPSAwO1xuMTQ0NjpcdFx0ZWVwcm9tLnJlZ19kYXRhX2Nsb2NrID0gMDtcbjE0NDc6XHRcdGVlcHJvbS5yZWdfY2hpcF9zZWxlY3QgPSAwO1xuMTQ0ODpcdFxuMTQ0OTpcdFx0ZWVwcm9tXzkzY3g2X211bHRpcmVhZChcdTAwMjZlZXByb20sIEVFUFJPTV9CQVNFLCBydDJ4MDBkZXYtXHUwMDNlZWVwcm9tLFxuMTQ1MDpcdFx0XHRcdCAgICAgICBFRVBST01fU0laRSAvIHNpemVvZih1MTYpKTtcbjE0NTE6XHRcbjE0NTI6XHRcdC8qXG4xNDUzOlx0XHQgKiBTdGFydCB2YWxpZGF0aW9uIG9mIHRoZSBkYXRhIHRoYXQgaGFzIGJlZW4gcmVhZC5cbjE0NTQ6XHRcdCAqL1xuMTQ1NTpcdFx0bWFjID0gcnQyeDAwX2VlcHJvbV9hZGRyKHJ0MngwMGRldiwgRUVQUk9NX01BQ19BRERSXzApO1xuMTQ1NjpcdFx0cnQyeDAwbGliX3NldF9tYWNfYWRkcmVzcyhydDJ4MDBkZXYsIG1hYyk7XG4xNDU3Olx0XG4xNDU4Olx0XHR3b3JkID0gcnQyeDAwX2VlcHJvbV9yZWFkKHJ0MngwMGRldiwgRUVQUk9NX0FOVEVOTkEpO1xuMTQ1OTpcdFx0aWYgKHdvcmQgPT0gMHhmZmZmKSB7XG4xNDYwOlx0XHRcdHJ0MngwMF9lcnIocnQyeDAwZGV2LCBcJiMzNDtJbnZhbGlkIEVFUFJPTSBkYXRhIGRldGVjdGVkXFxuXCYjMzQ7KTtcbjE0NjE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDYyOlx0XHR9XG4xNDYzOlx0XG4xNDY0Olx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXNzZXNzbWVudCBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBnbyBvdmVyIHRoZSBydWxlczsgdGhlIGZ1enppbmcgYXNzZXNzbWVudCBydWxlcyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBvbmx5IGNlcnRhaW4gbW9kaWZpY2F0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBmbGFnIGl0IGlmIGl0JiMzOTtzIGp1c3QgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGRlY29yYXRpdmUgY2hhbmdlcywgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUpLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgY29kZSByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHRlYXJkb3duIGNhbGxiYWNrcyBmb3IgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGFwcGx5IHRoZXNlIHJ1bGVzIHRvIHRoaXMgc3BlY2lmaWMgY2FzZS4gSSBzZWUgd2UgYXJlIGRlYWxpbmcgd2l0aCBgcnQyNDAwcGNpYCwgYHJ0MjUwMHBjaWAsIGBydDI4MDBwY2lgLCBhbmQgYHJ0NjFwY2lgIGRyaXZlcnMuIEFyZSB0aGV5IGRlYWxpbmcgd2l0aCB3aXJlbGVzcyBQQ0kgY2FyZHM/IFllcywgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGVzZSBhcmUgUmFsaW5rIFJUMjQwMC9SVDI1MDAvUlQyODAwL1JUNjEgUENJIHdpcmVsZXNzIGNhcmRzLiBUaGUgZHJpdmVycyBhcmUgZGVmaW5pdGVseSB0aWVkIHRvIHBoeXNpY2FsIFJhbGluayBXaS1GaSBjaGlwcy4KCkFoYSEgVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgdGhlc2Ugc3BlY2lmaWMgUmFsaW5rIFJUMjQwMC9SVDI1MDAvUlQyODAwL1JUNjEgUENJIGRldmljZXMuIFFFTVUgaXMgbW9yZSBnZWFyZWQgdG93YXJkIHN0YW5kYXJkIHN0dWZmLCBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldC4gSXQgZG9lc24mIzM5O3QgaW5jbHVkZSB0aGVzZSBSYWxpbmsgV2ktRmkgUENJIGRldmljZXMuIEZ1cnRoZXJtb3JlLCB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uLCBsaWtlIGBydDI0MDBwY2lfdmFsaWRhdGVfZWVwcm9tYCwgYHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb21gLCBldGMuIGFyZSBiZWluZyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0kgZGV2aWNlIHByb2JlLiBNb3JlIHByZWNpc2VseSwgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGZyb20gZnVuY3Rpb25zIHN1Y2ggYXMgYHJ0MngwMHBjaV9wcm9iZWAgb3IgYHJ0MngwMGxpYl9wcm9iZV9kZXZgLiBUaGVyZWZvcmUsIEkgbm93IG5lZWQgdG8gZXhhbWluZSBleGFjdGx5ICp3aGVyZSogdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkIGZyb20gdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyB3b3VsZCBldmVyIGJlIHJlbGV2YW50IGluIGEgZnV6emluZyBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY2hhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYz0xMzY5PXN0YXRpYyBpcnFyZXR1cm5fdCBydDI0MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MjktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jOjE0MzA6c3RhdGljIGludCBydDI0MDBwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmM9MTYwNz1zdGF0aWMgaW50IHJ0MjQwMHBjaV9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMtMTYxNC1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYzoxNjE1Olx0cmV0dmFsID0gcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShydDJ4MDBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYy0xNjE2LVx0aWYgKHJldHZhbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEVFUFJPTSBSZWFkKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyLiBXZSYjMzk7dmUgZ290IGEgc3VzcGVjdGVkIGFyZWEsIGJ1dCBiZWZvcmUgd2UgZ28gdG9vIGZhciBkb3duIHRoZSByYWJiaXQgaG9sZSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGFub3RoZXIgZnVuY3Rpb24gd2l0aGluIHRoZSBgcnQyODAwcGNpYCBtb2R1bGUsIHNwZWNpZmljYWxseSBgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaWAuIE15IGludHVpdGlvbiwgYmFzZWQgb24gdGhlIGNvbnRleHQsIHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgZGlyZWN0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBFRVBST00gdmlhIHRoZSBQQ0kgaW50ZXJmYWNlLiBVbmRlcnN0YW5kaW5nIGhvdyBpdCByZWFkcyB0aGUgRUVQUk9NIGNvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMuIEl04oCZcyBjcml0aWNhbCB0byB2ZXJpZnkgaWYgdGhlIGxvdy1sZXZlbCBFRVBST00gcmVhZCBpcyBmdW5jdGlvbmluZyBjb3JyZWN0bHksIGFzIHRoaXMgaXMgdGhlIGZvdW5kYXRpb25hbCBvcGVyYXRpb24gdXBvbiB3aGljaCB0aGUgaGlnaGVyLWxldmVsIEVFUFJPTSBpbnRlcnByZXRhdGlvbiBmdW5jdGlvbnMgYXJlIGJ1aWx0LiBJdCBtaWdodCBiZSB0aGF0IHRoZSBlcnJvciB3ZSYjMzk7cmUgb2JzZXJ2aW5nIGlzIGEgY29uc2VxdWVuY2Ugb2YgaW5jb3JyZWN0IGRhdGEgcmV0cmlldmFsLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTk0PXN0YXRpYyB2b2lkIHJ0MjgwMHBjaV9lZXByb21yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjEwOTpzdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2koc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMTEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTI3Nz1zdGF0aWMgaW50IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjgzLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzoyODQ6XHRcdHJldHZhbCA9IHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2kocnQyeDAwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNzUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleHBlcmllbmNpbmcgaXQsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBydDI4MDBwY2lfcHJvYmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBydDI4MDBwY2lfcHJvYmVgIGZ1bmN0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nLCAmIzM0O3Byb2JlJiMzNDsgbWVhbnMgaW5pdGlhbGl6YXRpb24sIGRldGVjdGlvbiwgYW5kIHNldHVwIOKAkyB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBicmluZ2luZyBhIFBDSSBkZXZpY2Ugb25saW5lLCBsaWtlbHkgYSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIgaW4gdGhpcyBjYXNlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgc2VxdWVuY2U6IHJlc291cmNlIGFsbG9jYXRpb24sIHJlZ2lzdGVyIGFjY2VzcyBzZXR1cCwgZGV2aWNlIElEIHZlcmlmaWNhdGlvbiAoaXMgdGhpcyBSRUFMTFkgdGhlIHJpZ2h0IGNoaXA/KSwgbWF5YmUgc29tZSBpbml0aWFsIGhhcmR3YXJlIHJlc2V0IG9yIGNvbmZpZ3VyYXRpb24uCgpJJiMzOTttIG1lbnRhbGx5IHNpZnRpbmcgdGhyb3VnaCBteSB1bmRlcnN0YW5kaW5nIG9mIFBDSSBkZXZpY2UgZHJpdmVyczogSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgY2FsbHMgdG8gcmVxdWVzdCBJL08gYW5kIG1lbW9yeSByZWdpb25zLiBJcyB0aGlzIHVzaW5nIHRoZSBgcGNpX3JlcXVlc3RfcmVnaW9ucygpYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEkmIzM5O2xsIHByb2JhYmx5IHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEg4oCTIHNldHRpbmcgdXAgRE1BIG1hcHMgaWYgaXQgaXMgbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGludGVycnVwdCBoYW5kbGluZz8gVGhlcmUmIzM5O3MgZ290IHRvIGJlIGFuIGBpcnFfcmVxdWVzdGAgb3Igc2ltaWxhciBjYWxsIGluIGhlcmUsIGFuZCBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpcyBuYW1lZC4KClRoZSBkcml2ZXIgcHJvYmFibHkgcmVsaWVzIG9uIHNwZWNpZmljIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgc28gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIGxpa2UgYHBjaV9yZWFkX2NvbmZpZ19kd29yZCgpYCwgYHBjaV93cml0ZV9jb25maWdfYnl0ZSgpYCwgZXRjLiDigJMgdGhlIG5pdHR5LWdyaXR0eSBvZiBnZXR0aW5nIHRoZSBkZXZpY2UgcmVzcG9uZGluZy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIG5lZWQgdG8gYWRqdXN0IEJBUnMgb3IgZW5hYmxlIGJ1cyBtYXN0ZXJpbmcuCgpBbmQgb2YgY291cnNlLCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcmUgYWx3YXlzIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuIElzIHRoZXJlIGFueSBvYnZpb3VzIGF0dGVtcHQgYXQgaGFyZGVuaW5nIGFnYWluc3QgcG90ZW50aWFsIERNQSBhdHRhY2tzPyBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCB0aGUgcmVjb3ZlcnkgbWVjaGFuaXNtcyBsb29rIGxpa2Ug4oCTIHBhcnRpY3VsYXJseSBpZiBhIGRldmljZSBmYWlscyB0byBpbml0aWFsaXplIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyODAwcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM9NDQ5PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jLTQ1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM6NDUxOnN0YXRpYyBpbnQgcnQyODAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTItXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmM9NDU3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydDI4MDBwY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtNDU5LVx0LmlkX3RhYmxlXHQ9IHJ0MjgwMHBjaV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjQ2MDpcdC5wcm9iZVx0XHQ9IHJ0MjgwMHBjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtNDYxLVx0LnJlbW92ZVx0XHQ9IHJ0MngwMHBjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTQKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFVuZnV6emFibGUgQ29kZSBQYXRocyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIHRoZXNlIHBhdGNoZXMsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgd2Ugc3RhbmQuIEFsbCBmb3VyIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgbmVzdGxlZCB3aXRoaW4gUENJIGRyaXZlcnM6IGBydDI0MDBwY2lgLCBgcnQyNTAwcGNpYCwgYHJ0MjgwMHBjaWAsIGFuZCBgcnQ2MXBjaWAuIFRoZXNlIGFyZSBzcGVjaWZpY2FsbHkgZm9yIFJhbGluayYjMzk7cyBQQ0kgd2lyZWxlc3MgbmV0d29yayBjYXJkcywgYW5kIHRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIFRoZXNlIGRyaXZlcnMgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0kvUENJZSBoYXJkd2FyZS4gV2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWUgZW11bGF0ZWQgZGV2aWNlIGhlcmU7IGl0JiMzOTtzIHRoZSByZWFsIGRlYWwuCgpJIHdlbnQgYmFjayBhbmQgY2hlY2tlZCB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBndWlkZWxpbmVzLCBhbmQsIGFzIGV4cGVjdGVkLCBpdCYjMzk7cyBhIHBlcmZlY3QgbWF0Y2ggZm9yIHRoYXQgYnVsbGV0IHBvaW50LiBJdCBleHBsaWNpdGx5IHN0YXRlczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhlc2UgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLiBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgcmVhc29uIHRoYXQgdGhpcyBjb3VsZCBiZSBmdXp6ZWQgaW4gYW55IG1lYW5pbmdmdWwgd2F5LiBJdCYjMzk7cyBub3Qgd29ydGggbXkgdGltZSwgb3IgdGhlIHRpbWUgb2YgdGhlIGZ1enplcnMsIGF0IGFsbC4KClRoZXJlZm9yZSwgaXQmIzM5O3MgYSBzaW1wbGUgY2FsbCwgSSB0aGluay4gSSYjMzk7bGwgaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjQ1NDg4OTc2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Nzc1NTM4MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21fOTNjeDZgIHN0cnVjdCBpbiBQQ0kgd2lyZWxlc3MgZHJpdmVycyAocnQyNDAwcGNpLCBydDI1MDBwY2ksIHJ0MjgwMHBjaSwgcnQ2MXBjaSkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgd2lyZWxlc3MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTI6MzMuNDU0ODk2MjU2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE1MTIxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYjJhZjYyODg4YjAzMGUwNTNhNjU3MGNmMGYyMzYzODVjOWE3MmVjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjEyOjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXFxuaW5kZXggNDJlMjFlOWYzMDNiMi4uMTUwNzNiODU2YWRmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xcbkBAIC0xNDI5LDcgKzE0MjksNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNDAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuICAqL1xcbiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXFxuaW5kZXggMzZkZGM1YTY5ZmE0MC4uMzUzNmEwZjMxMTE3MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xcbkBAIC0xNTU1LDcgKzE1NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnQyNTAwcGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuICAqL1xcbiBzdGF0aWMgaW50IHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXFxuaW5kZXggMTRjNDVhYmE4MzZmMi4uODUzZmQzMWQxMzYyOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xcbkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgcnQyODAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcXG4gXFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbiB7XFxuLVxcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xcbitcXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xcbiBcXHR1MzIgcmVnO1xcbiBcXG4gXFx0cmVnID0gcnQyeDAwbW1pb19yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgRTJQUk9NX0NTUik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcXG5pbmRleCBkMWNkNTY5NGUzYzczLi41ZGNhMmFmYjRiOTZjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG4gICovXFxuIHN0YXRpYyBpbnQgcnQ2MXBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcXG4rXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4gXFx0dTMyIHJlZztcXG4gXFx0dTE2IHdvcmQ7XFxuIFxcdHU4ICptYWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjkwNzEyMTUyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODQzMjMyOTE3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiMmFmNjI4ODhiMDMwZTA1M2E2NTcwY2YwZjIzNjM4NWM5YTcyZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOToxMjozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jXG5pbmRleCA0MmUyMWU5ZjMwM2IyLi4xNTA3M2I4NTZhZGY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1xuQEAgLTE0MjksNyArMTQyOSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydDI0MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbitcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNTAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjUwMHBjaS5jXG5pbmRleCAzNmRkYzVhNjlmYTQwLi4zNTM2YTBmMzExMTcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI1MDBwY2kuY1xuQEAgLTE1NTUsNyArMTU1NSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydDI1MDBwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0MjUwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbitcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XG4gXHR1MzIgcmVnO1xuIFx0dTE2IHdvcmQ7XG4gXHR1OCAqbWFjO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jXG5pbmRleCAxNGM0NWFiYTgzNmYyLi44NTNmZDMxZDEzNjI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuY1xuQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuIFxuIHN0YXRpYyBpbnQgcnQyODAwcGNpX3JlYWRfZWVwcm9tX3BjaShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuIHtcbi1cdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO1xuK1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdHUzMiByZWc7XG4gXG4gXHRyZWcgPSBydDJ4MDBtbWlvX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2LCBFMlBST01fQ1NSKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0NjFwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG5pbmRleCBkMWNkNTY5NGUzYzczLi41ZGNhMmFmYjRiOTZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDYxcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQ2MXBjaS5jXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHJ0NjFwY2lfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiAgKi9cbiBzdGF0aWMgaW50IHJ0NjFwY2lfdmFsaWRhdGVfZWVwcm9tKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0dTMyIHJlZztcbiBcdHUxNiB3b3JkO1xuIFx0dTggKm1hYztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEyOjMzLjkwNzEyMzI5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1Njg5Mjk4MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBQQ0kgV2lyZWxlc3MgRHJpdmVyIENvbmNlcm5zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4gSSBzZWUgZGlmZnMgaW1wYWN0aW5nIGBydDI0MDBwY2kuY2AsIGBydDI1MDBwY2kuY2AsIGBydDI4MDBwY2kuY2AsIGFuZCBgcnQ2MXBjaS5jYC4gVGhlc2UgYXJlLCBhcyBJIHJlY2FsbCwgYWxsIGRyaXZlcnMgd2l0aGluIHRoZSBSYWxpbmsgZmFtaWx5IGZvciB3aXJlbGVzcyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJLWJhc2VkLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGluaXRpYWxpemluZyBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtgIGluIHRoZWlyIHJlc3BlY3RpdmUgdmFsaWRhdGlvbi9yZWFkIGZ1bmN0aW9ucy5cblxuTXkgaW5pdGlhbCBjb25jZXJuPyBBcmUgdGhlc2UgZHJpdmVycyBpbmhlcmVudGx5IHRpZWQgdG8gKnBoeXNpY2FsKiBQQ0kgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgYXJlIHRoZXNlIGRldmljZXMgdGhhdCBhcmUgdW5saWtlbHkgdG8gYmUgZW11bGF0ZWQgYWNjdXJhdGVseSBieSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiB0b29scyBsaWtlIFFFTVU/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbXkgd29yaywgYW5kIGlzIGEgcG90ZW50aWFsIHJvYWRibG9jay5cblxuU28sIEkgbmVlZCB0byBjb25maXJtOiBhcmUgdGhlc2UgZHJpdmVycywgaW4gcHJhY3RpY2UsIGhpZ2hseSByZWxpYW50IG9uIGEgcmVhbCBQQ0kgZGV2aWNlIGZvciBwcm9wZXIgb3BlcmF0aW9uLCBvciBjYW4gdGhleSBmdW5jdGlvbiByZWFzb25hYmx5IHdlbGwgaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQ/IFRoaXMgY291bGQgYmUgcHJvYmxlbWF0aWMgaWYgdGhleSBkb24ndCBmdW5jdGlvbiBvciBpZiB0aGV5IGNhdXNlIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQuXG5cbkknbSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGRvY3VtZW50YXRpb24gdG8gZ2V0IGEgbW9yZSBkZWZpbml0aXZlIGFuc3dlci4gVGltZSB0byBmaXJlIHVwIG15IHRvb2xzIGFuZCBzZWFyY2ggZm9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aCBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDksIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToxMzowOS41OTY0MjQxODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDI1OlxcdH1cXG4xNDI2OlxcdFxcbjE0Mjc6XFx0LypcXG4xNDI4OlxcdCAqIERldmljZSBwcm9iZSBmdW5jdGlvbnMuXFxuMTQyOTpcXHQgKi9cXG4xNDMwOlxcdHN0YXRpYyBpbnQgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbjE0MzE6XFx0e1xcbjE0MzI6XFx0XFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcXG4xNDMzOlxcdFxcdHUzMiByZWc7XFxuMTQzNDpcXHRcXHR1MTYgd29yZDtcXG4xNDM1OlxcdFxcdHU4ICptYWM7XFxuMTQzNjpcXHRcXG4xNDM3OlxcdFxcdHJlZyA9IHJ0MngwMG1taW9fcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIENTUjIxKTtcXG4xNDM4OlxcdFxcbjE0Mzk6XFx0XFx0ZWVwcm9tLmRhdGEgPSBydDJ4MDBkZXY7XFxuMTQ0MDpcXHRcXHRlZXByb20ucmVnaXN0ZXJfcmVhZCA9IHJ0MjQwMHBjaV9lZXByb21yZWdpc3Rlcl9yZWFkO1xcbjE0NDE6XFx0XFx0ZWVwcm9tLnJlZ2lzdGVyX3dyaXRlID0gcnQyNDAwcGNpX2VlcHJvbXJlZ2lzdGVyX3dyaXRlO1xcbjE0NDI6XFx0XFx0ZWVwcm9tLndpZHRoID0gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgQ1NSMjFfVFlQRV85M0M0NikgP1xcbjE0NDM6XFx0XFx0ICAgIFBDSV9FRVBST01fV0lEVEhfOTNDNDYgOiBQQ0lfRUVQUk9NX1dJRFRIXzkzQzY2O1xcbjE0NDQ6XFx0XFx0ZWVwcm9tLnJlZ19kYXRhX2luID0gMDtcXG4xNDQ1OlxcdFxcdGVlcHJvbS5yZWdfZGF0YV9vdXQgPSAwO1xcbjE0NDY6XFx0XFx0ZWVwcm9tLnJlZ19kYXRhX2Nsb2NrID0gMDtcXG4xNDQ3OlxcdFxcdGVlcHJvbS5yZWdfY2hpcF9zZWxlY3QgPSAwO1xcbjE0NDg6XFx0XFxuMTQ0OTpcXHRcXHRlZXByb21fOTNjeDZfbXVsdGlyZWFkKFxcdTAwMjZlZXByb20sIEVFUFJPTV9CQVNFLCBydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSxcXG4xNDUwOlxcdFxcdFxcdFxcdCAgICAgICBFRVBST01fU0laRSAvIHNpemVvZih1MTYpKTtcXG4xNDUxOlxcdFxcbjE0NTI6XFx0XFx0LypcXG4xNDUzOlxcdFxcdCAqIFN0YXJ0IHZhbGlkYXRpb24gb2YgdGhlIGRhdGEgdGhhdCBoYXMgYmVlbiByZWFkLlxcbjE0NTQ6XFx0XFx0ICovXFxuMTQ1NTpcXHRcXHRtYWMgPSBydDJ4MDBfZWVwcm9tX2FkZHIocnQyeDAwZGV2LCBFRVBST01fTUFDX0FERFJfMCk7XFxuMTQ1NjpcXHRcXHRydDJ4MDBsaWJfc2V0X21hY19hZGRyZXNzKHJ0MngwMGRldiwgbWFjKTtcXG4xNDU3OlxcdFxcbjE0NTg6XFx0XFx0d29yZCA9IHJ0MngwMF9lZXByb21fcmVhZChydDJ4MDBkZXYsIEVFUFJPTV9BTlRFTk5BKTtcXG4xNDU5OlxcdFxcdGlmICh3b3JkID09IDB4ZmZmZikge1xcbjE0NjA6XFx0XFx0XFx0cnQyeDAwX2VycihydDJ4MDBkZXYsIFxcXCJJbnZhbGlkIEVFUFJPTSBkYXRhIGRldGVjdGVkXFxcXG5cXFwiKTtcXG4xNDYxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0NjI6XFx0XFx0fVxcbjE0NjM6XFx0XFxuMTQ2NDpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MDkuNTk2NTI3OTQyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM2MzI5NDM1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBc3Nlc3NtZW50IENvbnNpZGVyYXRpb25zKipcblxuT2theSwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBnbyBvdmVyIHRoZSBydWxlczsgdGhlIGZ1enppbmcgYXNzZXNzbWVudCBydWxlcyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBvbmx5IGNlcnRhaW4gbW9kaWZpY2F0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBmbGFnIGl0IGlmIGl0J3MganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMvbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSksIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzIGZvciBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLlxuXG5Ob3csIEkgbmVlZCB0byBhcHBseSB0aGVzZSBydWxlcyB0byB0aGlzIHNwZWNpZmljIGNhc2UuIEkgc2VlIHdlIGFyZSBkZWFsaW5nIHdpdGggYHJ0MjQwMHBjaWAsIGBydDI1MDBwY2lgLCBgcnQyODAwcGNpYCwgYW5kIGBydDYxcGNpYCBkcml2ZXJzLiBBcmUgdGhleSBkZWFsaW5nIHdpdGggd2lyZWxlc3MgUENJIGNhcmRzPyBZZXMsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgdGhlc2UgYXJlIFJhbGluayBSVDI0MDAvUlQyNTAwL1JUMjgwMC9SVDYxIFBDSSB3aXJlbGVzcyBjYXJkcy4gVGhlIGRyaXZlcnMgYXJlIGRlZmluaXRlbHkgdGllZCB0byBwaHlzaWNhbCBSYWxpbmsgV2ktRmkgY2hpcHMuXG5cbkFoYSEgVGhhdCdzIGEga2V5IHBvaW50LiBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBSYWxpbmsgUlQyNDAwL1JUMjUwMC9SVDI4MDAvUlQ2MSBQQ0kgZGV2aWNlcy4gUUVNVSBpcyBtb3JlIGdlYXJlZCB0b3dhcmQgc3RhbmRhcmQgc3R1ZmYsIGxpa2UgZTEwMDAsIHJ0bDgxMzksIGFuZCB2aXJ0aW8tbmV0LiBJdCBkb2Vzbid0IGluY2x1ZGUgdGhlc2UgUmFsaW5rIFdpLUZpIFBDSSBkZXZpY2VzLiBGdXJ0aGVybW9yZSwgdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiwgbGlrZSBgcnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbWAsIGBydDI1MDBwY2lfdmFsaWRhdGVfZWVwcm9tYCwgZXRjLiBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgUENJIGRldmljZSBwcm9iZS4gTW9yZSBwcmVjaXNlbHksIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCBmcm9tIGZ1bmN0aW9ucyBzdWNoIGFzIGBydDJ4MDBwY2lfcHJvYmVgIG9yIGBydDJ4MDBsaWJfcHJvYmVfZGV2YC4gVGhlcmVmb3JlLCBJIG5vdyBuZWVkIHRvIGV4YW1pbmUgZXhhY3RseSAqd2hlcmUqIHRoZXkncmUgYmVpbmcgY2FsbGVkIGZyb20gdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoZWNrcyB3b3VsZCBldmVyIGJlIHJlbGV2YW50IGluIGEgZnV6emluZyBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY2hhaW4gdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MzMuMjI5NDc0MTM1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTAyNTMzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQyNDAwcGNpX3ZhbGlkYXRlX2VlcHJvbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jPTEzNjk9c3RhdGljIGlycXJldHVybl90IHJ0MjQwMHBjaV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYy0xNDI5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyNDAwcGNpLmM6MTQzMDpzdGF0aWMgaW50IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE0MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYz0xNjA3PXN0YXRpYyBpbnQgcnQyNDAwcGNpX3Byb2JlX2h3KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE2MTQtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI0MDBwY2kuYzoxNjE1OlxcdHJldHZhbCA9IHJ0MjQwMHBjaV92YWxpZGF0ZV9lZXByb20ocnQyeDAwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjQwMHBjaS5jLTE2MTYtXFx0aWYgKHJldHZhbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6MzUuMjM5NzMzNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Nzg5Njg5Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgRUVQUk9NIFJlYWQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZHJpdmVyLiBXZSd2ZSBnb3QgYSBzdXNwZWN0ZWQgYXJlYSwgYnV0IGJlZm9yZSB3ZSBnbyB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBsZXQncyB0YWtlIGEgbG9vayBhdCBhbm90aGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHJ0MjgwMHBjaWAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYHJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2lgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIGRpcmVjdCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgRUVQUk9NIHZpYSB0aGUgUENJIGludGVyZmFjZS4gVW5kZXJzdGFuZGluZyBob3cgaXQgcmVhZHMgdGhlIEVFUFJPTSBjb3VsZCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHRzLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IGlmIHRoZSBsb3ctbGV2ZWwgRUVQUk9NIHJlYWQgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5LCBhcyB0aGlzIGlzIHRoZSBmb3VuZGF0aW9uYWwgb3BlcmF0aW9uIHVwb24gd2hpY2ggdGhlIGhpZ2hlci1sZXZlbCBFRVBST00gaW50ZXJwcmV0YXRpb24gZnVuY3Rpb25zIGFyZSBidWlsdC4gSXQgbWlnaHQgYmUgdGhhdCB0aGUgZXJyb3Igd2UncmUgb2JzZXJ2aW5nIGlzIGEgY29uc2VxdWVuY2Ugb2YgaW5jb3JyZWN0IGRhdGEgcmV0cmlldmFsLiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjQyLjAyOTQyNTYwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMzIwMzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0MjgwMHBjaV9yZWFkX2VlcHJvbV9wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz05ND1zdGF0aWMgdm9pZCBydDI4MDBwY2lfZWVwcm9tcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzoxMDk6c3RhdGljIGludCBydDI4MDBwY2lfcmVhZF9lZXByb21fcGNpKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz0yNzc9c3RhdGljIGludCBydDI4MDBwY2lfcmVhZF9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyODAwcGNpLmMtMjgzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jOjI4NDpcXHRcXHRyZXR2YWwgPSBydDI4MDBwY2lfcmVhZF9lZXByb21fcGNpKHJ0MngwMGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy0yODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjQzLjU4Mjc1MzA0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgyNjU2MjcxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBleHBlcmllbmNpbmcgaXQsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgcnQyODAwcGNpX3Byb2JlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ0MjgwMHBjaV9wcm9iZWAgZnVuY3Rpb24uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJwcm9iZVwiIG1lYW5zIGluaXRpYWxpemF0aW9uLCBkZXRlY3Rpb24sIGFuZCBzZXR1cCDigJMgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgYnJpbmdpbmcgYSBQQ0kgZGV2aWNlIG9ubGluZSwgbGlrZWx5IGEgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyIGluIHRoaXMgY2FzZS4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlOiByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RlciBhY2Nlc3Mgc2V0dXAsIGRldmljZSBJRCB2ZXJpZmljYXRpb24gKGlzIHRoaXMgUkVBTExZIHRoZSByaWdodCBjaGlwPyksIG1heWJlIHNvbWUgaW5pdGlhbCBoYXJkd2FyZSByZXNldCBvciBjb25maWd1cmF0aW9uLlxuXG5JJ20gbWVudGFsbHkgc2lmdGluZyB0aHJvdWdoIG15IHVuZGVyc3RhbmRpbmcgb2YgUENJIGRldmljZSBkcml2ZXJzOiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIGNhbGxzIHRvIHJlcXVlc3QgSS9PIGFuZCBtZW1vcnkgcmVnaW9ucy4gSXMgdGhpcyB1c2luZyB0aGUgYHBjaV9yZXF1ZXN0X3JlZ2lvbnMoKWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uPyBJJ2xsIHByb2JhYmx5IHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEg4oCTIHNldHRpbmcgdXAgRE1BIG1hcHMgaWYgaXQgaXMgbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGludGVycnVwdCBoYW5kbGluZz8gVGhlcmUncyBnb3QgdG8gYmUgYW4gYGlycV9yZXF1ZXN0YCBvciBzaW1pbGFyIGNhbGwgaW4gaGVyZSwgYW5kIEknbGwgYmUgbG9va2luZyB0byBzZWUgd2hhdCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaXMgbmFtZWQuXG5cblRoZSBkcml2ZXIgcHJvYmFibHkgcmVsaWVzIG9uIHNwZWNpZmljIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgc28gSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMgbGlrZSBgcGNpX3JlYWRfY29uZmlnX2R3b3JkKClgLCBgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKClgLCBldGMuIOKAkyB0aGUgbml0dHktZ3JpdHR5IG9mIGdldHRpbmcgdGhlIGRldmljZSByZXNwb25kaW5nLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHBvdGVudGlhbCBuZWVkIHRvIGFkanVzdCBCQVJzIG9yIGVuYWJsZSBidXMgbWFzdGVyaW5nLlxuXG5BbmQgb2YgY291cnNlLCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcmUgYWx3YXlzIGluIHRoZSBiYWNrIG9mIG15IG1pbmQuIElzIHRoZXJlIGFueSBvYnZpb3VzIGF0dGVtcHQgYXQgaGFyZGVuaW5nIGFnYWluc3QgcG90ZW50aWFsIERNQSBhdHRhY2tzPyBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCB3aGF0IHRoZSByZWNvdmVyeSBtZWNoYW5pc21zIGxvb2sgbGlrZSDigJMgcGFydGljdWxhcmx5IGlmIGEgZGV2aWNlIGZhaWxzIHRvIGluaXRpYWxpemUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzc1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6NTEuODQ4MzgyODE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM4MjA0MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0MjgwMHBjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jPTQ0OT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzo0NTE6c3RhdGljIGludCBydDI4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NTItXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYz00NTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0MjgwMHBjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MjgwMHBjaS5jLTQ1OS1cXHQuaWRfdGFibGVcXHQ9IHJ0MjgwMHBjaV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYzo0NjA6XFx0LnByb2JlXFx0XFx0PSBydDI4MDBwY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDI4MDBwY2kuYy00NjEtXFx0LnJlbW92ZVxcdFxcdD0gcnQyeDAwcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MTM6NTMuMjg2NTk3NzM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5NDM3ODYxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVW5mdXp6YWJsZSBDb2RlIFBhdGhzKipcblxuT2theSwgc28gSSd2ZSBqdXN0IHJldmlld2VkIHRoZXNlIHBhdGNoZXMsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB3aGVyZSB3ZSBzdGFuZC4gQWxsIGZvdXIgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBQQ0kgZHJpdmVyczogYHJ0MjQwMHBjaWAsIGBydDI1MDBwY2lgLCBgcnQyODAwcGNpYCwgYW5kIGBydDYxcGNpYC4gVGhlc2UgYXJlIHNwZWNpZmljYWxseSBmb3IgUmFsaW5rJ3MgUENJIHdpcmVsZXNzIG5ldHdvcmsgY2FyZHMsIGFuZCB0aGlzIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGVzZSBkcml2ZXJzICpyZXF1aXJlKiBhY3R1YWwgcGh5c2ljYWwgUENJL1BDSWUgaGFyZHdhcmUuIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWUgZW11bGF0ZWQgZGV2aWNlIGhlcmU7IGl0J3MgdGhlIHJlYWwgZGVhbC5cblxuSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQgdGhlIFwiV29ydGhGdXp6aW5nXCIgZ3VpZGVsaW5lcywgYW5kLCBhcyBleHBlY3RlZCwgaXQncyBhIHBlcmZlY3QgbWF0Y2ggZm9yIHRoYXQgYnVsbGV0IHBvaW50LiBJdCBleHBsaWNpdGx5IHN0YXRlczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhlc2UgZHJpdmVycyBhcmUgZGVmaW5pdGVseSBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLiBJIGNhbid0IHRoaW5rIG9mIGFueSByZWFzb24gdGhhdCB0aGlzIGNvdWxkIGJlIGZ1enplZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0J3Mgbm90IHdvcnRoIG15IHRpbWUsIG9yIHRoZSB0aW1lIG9mIHRoZSBmdXp6ZXJzLCBhdCBhbGwuXG5cblRoZXJlZm9yZSwgaXQncyBhIHNpbXBsZSBjYWxsLCBJIHRoaW5rLiBJJ2xsIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTU0LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOToxMzo1OC4yMzAzODczMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluaXRpYWxpemVzIHRoZSBgZWVwcm9tXzkzY3g2YCBzdHJ1Y3QgaW4gUENJIHdpcmVsZXNzIGRyaXZlcnMgKHJ0MjQwMHBjaSwgcnQyNTAwcGNpLCBydDI4MDBwY2ksIHJ0NjFwY2kpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUENJIHdpcmVsZXNzIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjEzOjU4LjIzMDQxNDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow764hd[1] Phase: Running StartedAt: 2026-08-31 19:14:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow764hd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 19:14:09 +0000 UTC FinishedAt: 2026-08-31 19:14:13 +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,}