Name: series-workflowzk8tq Phase: Failed StartedAt: 2026-09-02 05:56:24 +0000 UTC FinishedAt: 2026-09-02 06:32:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk8tq[0] Phase: Succeeded StartedAt: 2026-09-02 05:56:24 +0000 UTC FinishedAt: 2026-09-02 06:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk8tq[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 05:56:24 +0000 UTC FinishedAt: 2026-09-02 06:32:43 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MDU1ZjhkOTMzN2RmZTU2M2ZiZWUxOTg4NmQyODdiNjU4ZjllMTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwNjoyOToyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaCBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5pbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5AQCAtMTMsNyAmIzQzOzEzLDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnFldGhfbDJfYXR0cl9ncm91cHNbXTtcbiBcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0XHRlbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLFxuLVx0XHRcdFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKTtcbiYjNDM7XHRcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUsXG4mIzQzO1x0XHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLCBlbnVtIHFldGhfc2JwX3JvbGVzIHJvbGUpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jXG5pbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuQEAgLTExNTgsNyAmIzQzOzExNTgsNyBAQCBzdGF0aWMgdm9pZCBxZXRoX2wyX3NldHVwX2JyaWRnZXBvcnRfYXR0cnMoc3RydWN0IHFldGhfY2FyZCAqY2FyZClcbiBcdFx0cWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoY2FyZCwgY2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlKTtcbiBcdFx0LyogTGV0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiByZWZyZXNoIHRoZSBzdG9yZWQgcm9sZSB2YWx1ZS4gKi9cbiBcdFx0cWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsIFx1MDAyNmNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSxcbi1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xuIFx0fVxuIFx0aWYgKGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAuaG9zdG5vdGlmaWNhdGlvbikge1xuIFx0XHRpZiAocWV0aF9icmlkZ2Vwb3J0X2FuX3NldChjYXJkLCAxKSlcbkBAIC0xNTQ1LDYgJiM0MzsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcbiBcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGU7XG4mIzQzO1x0XHRcdGJvb2wgKm9zX21pc21hdGNoO1xuIFx0XHR9IHFwb3J0cztcbiBcdH0gZGF0YTtcbiB9O1xuQEAgLTE3MjEsMTAgJiM0MzsxNzIyLDE5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhO1xuIFx0c3RydWN0IF9xZXRoX3NicF9jYmN0bCAqY2JjdGwgPSAoc3RydWN0IF9xZXRoX3NicF9jYmN0bCAqKXJlcGx5LVx1MDAzZXBhcmFtO1xuIFx0c3RydWN0IHFldGhfc2JwX3BvcnRfZGF0YSAqcXBvcnRzO1xuJiM0MztcdHUxNiBzYnBfcmM7XG4gXHRpbnQgcmM7XG4gXG4gXHRRRVRIX0NBUkRfVEVYVChjYXJkLCAyLCBcJiMzNDticnFwcnRjYlwmIzM0Oyk7XG4tXHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcbiYjNDM7XHRzYnBfcmMgPSBjbWQtXHUwMDNlZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlO1xuJiM0MztcbiYjNDM7XHQvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhO1xuJiM0MztcdCAqIHRyZWF0IGFzIHN1Y2Nlc3NcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIIFx1MDAyNlx1MDAyNiAhY21kLVx1MDAzZWhkci5yZXR1cm5fY29kZSlcbiYjNDM7XHRcdHJjID0gMDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIHJjO1xuIFxuQEAgLTE3NDAsNiAmIzQzOzE3NTAsOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0XHRpZiAoY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXG4gXHRcdFx0KmNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLVx1MDAzZWVudHJ5WzBdLnN0YXRlO1xuIFx0fVxuJiM0MztcdGlmIChjYmN0bC1cdTAwM2VkYXRhLnFwb3J0cy5vc19taXNtYXRjaClcbiYjNDM7XHRcdCpjYmN0bC1cdTAwM2VkYXRhLnFwb3J0cy5vc19taXNtYXRjaCA9XG4mIzQzO1x0XHRcdChzYnBfcmMgPT0gSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0gpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3NDgsMTMgJiM0MzsxNzYxLDE3IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gICogQGNhcmQ6XHRcdFx0ICAgcWV0aF9jYXJkIHN0cnVjdHVyZSBwb2ludGVyLlxuICAqIEByb2xlOiAgIFJvbGUgb2YgdGhlIHBvcnQ6IDAtbm9uZSwgMS1wcmltYXJ5LCAyLXNlY29uZGFyeS5cbiAgKiBAc3RhdGU6ICBTdGF0ZSBvZiB0aGUgcG9ydDogMC1pbmFjdGl2ZSwgMS1zdGFuZGJ5LCAyLWFjdGl2ZS5cbiYjNDM7ICogQG9zX21pc21hdGNoOiBpZiBub24tTlVMTCwgc2V0IHRvIHRydWUgd2hlbiBmaXJtd2FyZSByZXBvcnRzXG4mIzQzOyAqXHRcdCBPUyBmYW1pbHkgbWlzbWF0Y2guXG4gICpcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXG4gICpcbi0gKiAmIzM5O3JvbGUmIzM5OyBhbmQgJiMzOTtzdGF0ZSYjMzk7IGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLlxuJiM0MzsgKiAmIzM5O3JvbGUmIzM5OywgJiMzOTtzdGF0ZSYjMzk7IGFuZCAmIzM5O29zX21pc21hdGNoJiMzOTsgYXJlIG5vdCB1cGRhdGVkIGluIGNhc2Ugb2ZcbiYjNDM7ICogaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4gICovXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuLVx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKVxuJiM0MztcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsIGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcbiYjNDM7XHRib29sICpvc19taXNtYXRjaClcbiB7XG4gXHRzdHJ1Y3QgcWV0aF9jbWRfYnVmZmVyICppb2I7XG4gXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0ge1xuQEAgLTE3NjIsNiAmIzQzOzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0LnFwb3J0cyA9IHtcbiBcdFx0XHRcdC5yb2xlID0gcm9sZSxcbiBcdFx0XHRcdC5zdGF0ZSA9IHN0YXRlLFxuJiM0MztcdFx0XHRcdC5vc19taXNtYXRjaCA9IG9zX21pc21hdGNoLFxuIFx0XHRcdH0sXG4gXHRcdH0sXG4gXHR9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xuaW5kZXggN2Y1OTJmOTEyNTE3Mi4uNzEwMWJlNjJlYjFkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiBcdGVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7XG4mIzQzO1x0Ym9vbCBvc19taXNtYXRjaCA9IGZhbHNlO1xuIFx0aW50IHJjID0gMDtcbiBcdGNoYXIgKndvcmQ7XG4gXG5AQCAtMjUsNyAmIzQzOzI2LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0aWYgKHFldGhfY2FyZF9od19pc19yZWFjaGFibGUoY2FyZCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHRcdGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAuc3VwcG9ydGVkX2Z1bmNzKVxuIFx0XHRyYyA9IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhjYXJkLFxuLVx0XHRcdFx1MDAyNmNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgXHUwMDI2c3RhdGUpO1xuJiM0MztcdFx0XHRcdTAwMjZjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIFx1MDAyNnN0YXRlLCBcdTAwMjZvc19taXNtYXRjaCk7XG4gXHRpZiAoIXJjKSB7XG4gXHRcdGlmIChzaG93X3N0YXRlKVxuIFx0XHRcdHN3aXRjaCAoc3RhdGUpIHtcbkBAIC01Miw2ICYjNDM7NTMsMTAgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0UUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsIFwmIzM0O1NCUCUwMng6JTAyeFwmIzM0OyxcbiBcdFx0XHRcdGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgc3RhdGUpO1xuJiM0MztcdFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUgPT0gUUVUSF9TQlBfUk9MRV9OT05FIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgb3NfbWlzbWF0Y2gpXG4mIzQzO1x0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzIChPUyBmYW1pbHkgbWlzbWF0Y2gpXFxuXCYjMzQ7LCB3b3JkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCB3b3JkKTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNTVmOGQ5MzM3ZGZlNTYzZmJlZTE5ODg2ZDI4N2I2NThmOWUxMTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDA2OjI5OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmggYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaAppbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaApAQCAtMTMsNyAmIzQzOzEzLDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnFldGhfbDJfYXR0cl9ncm91cHNbXTsKIAogaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLAogCQkJCWVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsCi0JCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKTsKJiM0MzsJCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLAomIzQzOwkJCQlib29sICpvc19taXNtYXRjaCk7CiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgZW51bSBxZXRoX3NicF9yb2xlcyByb2xlKTsKIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYwppbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMKQEAgLTExNTgsNyAmIzQzOzExNTgsNyBAQCBzdGF0aWMgdm9pZCBxZXRoX2wyX3NldHVwX2JyaWRnZXBvcnRfYXR0cnMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCkKIAkJcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoY2FyZCwgY2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSk7CiAJCS8qIExldCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcmVmcmVzaCB0aGUgc3RvcmVkIHJvbGUgdmFsdWUuICovCiAJCXFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhjYXJkLCAmYW1wO2NhcmQtJmd0O29wdGlvbnMuc2JwLnJvbGUsCi0JCQkJCSAgICBOVUxMKTsKJiM0MzsJCQkJCSAgICBOVUxMLCBOVUxMKTsKIAl9CiAJaWYgKGNhcmQtJmd0O29wdGlvbnMuc2JwLmhvc3Rub3RpZmljYXRpb24pIHsKIAkJaWYgKHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoY2FyZCwgMSkpCkBAIC0xNTQ1LDYgJiM0MzsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7CiAJCXN0cnVjdCB7CiAJCQllbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlOwogCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlOwomIzQzOwkJCWJvb2wgKm9zX21pc21hdGNoOwogCQl9IHFwb3J0czsKIAl9IGRhdGE7CiB9OwpAQCAtMTcyMSwxMCAmIzQzOzE3MjIsMTkgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKIAlzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhOwogCXN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKmNiY3RsID0gKHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKilyZXBseS0mZ3Q7cGFyYW07CiAJc3RydWN0IHFldGhfc2JwX3BvcnRfZGF0YSAqcXBvcnRzOwomIzQzOwl1MTYgc2JwX3JjOwogCWludCByYzsKIAogCVFFVEhfQ0FSRF9URVhUKGNhcmQsIDIsICYjMzQ7YnJxcHJ0Y2ImIzM0Oyk7Ci0JcmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7CiYjNDM7CXNicF9yYyA9IGNtZC0mZ3Q7ZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlOwomIzQzOwomIzQzOwkvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhOwomIzQzOwkgKiB0cmVhdCBhcyBzdWNjZXNzCiYjNDM7CSAqLwomIzQzOwlpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIICZhbXA7JmFtcDsgIWNtZC0mZ3Q7aGRyLnJldHVybl9jb2RlKQomIzQzOwkJcmMgPSAwOwomIzQzOwllbHNlCiYjNDM7CQlyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIApAQCAtMTc0MCw2ICYjNDM7MTc1MCw5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsCiAJCWlmIChjYmN0bC0mZ3Q7ZGF0YS5xcG9ydHMuc3RhdGUpCiAJCQkqY2JjdGwtJmd0O2RhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLSZndDtlbnRyeVswXS5zdGF0ZTsKIAl9CiYjNDM7CWlmIChjYmN0bC0mZ3Q7ZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2gpCiYjNDM7CQkqY2JjdGwtJmd0O2RhdGEucXBvcnRzLm9zX21pc21hdGNoID0KJiM0MzsJCQkoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTc0OCwxMyAmIzQzOzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKICAqIEBjYXJkOgkJCSAgIHFldGhfY2FyZCBzdHJ1Y3R1cmUgcG9pbnRlci4KICAqIEByb2xlOiAgIFJvbGUgb2YgdGhlIHBvcnQ6IDAtbm9uZSwgMS1wcmltYXJ5LCAyLXNlY29uZGFyeS4KICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLgomIzQzOyAqIEBvc19taXNtYXRjaDogaWYgbm9uLU5VTEwsIHNldCB0byB0cnVlIHdoZW4gZmlybXdhcmUgcmVwb3J0cwomIzQzOyAqCQkgT1MgZmFtaWx5IG1pc21hdGNoLgogICoKICAqIFJldHVybnMgbmVnYXRpdmUgZXJybm8tY29tcGF0aWJsZSBlcnJvciBpbmRpY2F0aW9uIG9yIDAgb24gc3VjY2Vzcy4KICAqCi0gKiAmIzM5O3JvbGUmIzM5OyBhbmQgJiMzOTtzdGF0ZSYjMzk7IGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLgomIzQzOyAqICYjMzk7cm9sZSYjMzk7LCAmIzM5O3N0YXRlJiMzOTsgYW5kICYjMzk7b3NfbWlzbWF0Y2gmIzM5OyBhcmUgbm90IHVwZGF0ZWQgaW4gY2FzZSBvZgomIzQzOyAqIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLgogICovCiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsCi0JZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKQomIzQzOwllbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLCBlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUsCiYjNDM7CWJvb2wgKm9zX21pc21hdGNoKQogewogCXN0cnVjdCBxZXRoX2NtZF9idWZmZXIgKmlvYjsKIAlzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0gewpAQCAtMTc2Miw2ICYjNDM7MTc3OSw3IEBAIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKIAkJCS5xcG9ydHMgPSB7CiAJCQkJLnJvbGUgPSByb2xlLAogCQkJCS5zdGF0ZSA9IHN0YXRlLAomIzQzOwkJCQkub3NfbWlzbWF0Y2ggPSBvc19taXNtYXRjaCwKIAkJCX0sCiAJCX0sCiAJfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYwppbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdGF0aWMgc3NpemVfdCBxZXRoX2JyaWRnZV9wb3J0X3JvbGVfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IHFldGhfY2FyZCAqY2FyZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCWVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7CiYjNDM7CWJvb2wgb3NfbWlzbWF0Y2ggPSBmYWxzZTsKIAlpbnQgcmMgPSAwOwogCWNoYXIgKndvcmQ7CiAKQEAgLTI1LDcgJiM0MzsyNiw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKIAlpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSAmYW1wOyZhbXA7CiAJCQkJCWNhcmQtJmd0O29wdGlvbnMuc2JwLnN1cHBvcnRlZF9mdW5jcykKIAkJcmMgPSBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwKLQkJCSZhbXA7Y2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSwgJmFtcDtzdGF0ZSk7CiYjNDM7CQkJJmFtcDtjYXJkLSZndDtvcHRpb25zLnNicC5yb2xlLCAmYW1wO3N0YXRlLCAmYW1wO29zX21pc21hdGNoKTsKIAlpZiAoIXJjKSB7CiAJCWlmIChzaG93X3N0YXRlKQogCQkJc3dpdGNoIChzdGF0ZSkgewpAQCAtNTIsNiAmIzQzOzUzLDEwIEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJaWYgKHJjKQogCQkJUUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsICYjMzQ7U0JQJTAyeDolMDJ4JiMzNDssCiAJCQkJY2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSwgc3RhdGUpOwomIzQzOwkJZWxzZSBpZiAoIXNob3dfc3RhdGUgJmFtcDsmYW1wOwomIzQzOwkJCSBjYXJkLSZndDtvcHRpb25zLnNicC5yb2xlID09IFFFVEhfU0JQX1JPTEVfTk9ORSAmYW1wOyZhbXA7CiYjNDM7CQkJIG9zX21pc21hdGNoKQomIzQzOwkJCXJjID0gc3lzZnNfZW1pdChidWYsICYjMzQ7JXMgKE9TIGZhbWlseSBtaXNtYXRjaClcbiYjMzQ7LCB3b3JkKTsKIAkJZWxzZQogCQkJcmMgPSBzeXNmc19lbWl0KGJ1ZiwgJiMzNDslc1xuJiMzNDssIHdvcmQpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBFdmFsdWF0aW9uOiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsLiBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2ggdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gTGV0JiMzOTtzIGRpZyBpbi4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaGAsIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jYCwgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGBzMzkwYCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB0aGUgYHFldGhgIG5ldHdvcmsgZHJpdmVyLiBUaGlzIGlzIGxpa2VseSBoYW5kbGluZyBJQk0mIzM5O3MgczM5MCBPU0EtRXhwcmVzcyBvciBIaXBlclNvY2tldHMgbmV0d29yayBjYXJkcy4KCk5vdywgbXkgY3JpdGVyaWEgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkgbmVlZCB0byBzYXkgJiMzNDtubyYjMzQ7IHRvIGZ1enppbmcgaWYgdGhlIHBhdGNoOiAqb25seSogdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdHlwaWNhbCBmdXp6aW5nIHNldHVwcyDigJMgdGhpbmdzIGxpa2UgaGFyZHdhcmUtc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCByZWFsIGhhcmR3YXJlLCBvciBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gdHJpZ2dlciBldmVuIGluIGVtdWxhdGVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGBxZXRoYCBkcml2ZXIgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IGhpdCB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdG9vbHM/IElzIGl0IHJlYWNoYWJsZSBpbiwgc2F5LCBzeXprYWxsZXIgcnVubmluZyBvbiB4ODYgb3IgQVJNNjQsIG9yIGV2ZW4gYSBwbGFpbiBRRU1VIHMzOTAgc2V0dXA/IE9yIGlzIHRoaXMgYSBDQ1cvY2hhbm5lbCBkZXZpY2UgdGhhdCYjMzk7cyAqY29tcGxldGVseSogczM5MC1zcGVjaWZpYz8gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGlzIGBxZXRoYCBkcml2ZXIgZGVwZW5kcyBvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYHFldGhgIHVzaW5nIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBoZWxwIG1lIG1ha2UgdGhlIGNhbGwgb24gd2hldGhlciB0aGlzIHBhdGNoIGlzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTI4PWNvbmZpZyBTTVNHSVVDVl9FVkVOVFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy0zOC1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzozOTpjb25maWcgUUVUSFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTQwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNTAtXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6NTE6Y29uZmlnIFFFVEhfTDJcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy01Mi1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTYwLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjYxOmNvbmZpZyBRRVRIX0wzXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNjItXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02OS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3MDpjb25maWcgUUVUSF9PU1hcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03MS1cdGRlZl9ib29sICFIQVZFX01BUkNIX1oxNV9GRUFUVVJFU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgUzM5MCBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFMzOTAgYXJjaGl0ZWN0dXJlJiMzOTtzIG5ldHdvcmsgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGJldHdlZW4gbGluZXMgMzUgYW5kIDc1LiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBvcHRpb25zIGFyZSBkZWZpbmVkLCBvciBwZXJoYXBzIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWMgUzM5MCBuZXR3b3JrIGludGVyZmFjZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgYmFzZSBkcml2ZXIgb3B0aW9ucywgd2hpY2ggYWRhcHRlcnMgYXJlIHN1cHBvcnRlZCwgaWYgdGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIGNvbXBpbGUgdGhlIGRyaXZlciwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBmZWF0dXJlcyBlbmFibGVkIG9yIGRpc2FibGVkIGRlcGVuZGluZyBvbiBob3cgdGhlIHN5c3RlbSBpcyBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXR3b3JrIGRyaXZlcnMgYXJlIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdmFyaW91cyBTMzkwLXNwZWNpZmljIG5ldHdvcmsgaGFyZHdhcmUsIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiBpcyByZWFzb25hYmx5IHdlbGwtY29tbWVudGVkLCBidXQgZXZlbiBpZiBpdCBpc24mIzM5O3QsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBlc3NlbnRpYWwgbG9naWMgcHJldHR5IHF1aWNrbHkuIEkgYW50aWNpcGF0ZSBlbmNvdW50ZXJpbmcgdGhlIHVzdWFsIGBjb25maWdgIHN0YXRlbWVudHMsIGB0cmlzdGF0ZWAgdmFsdWVzLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIEtub3dpbmcgdGhpcyBhcmVhIHdlbGwgd2lsbCBwcm9iYWJseSBwcm92ZSBpbnZhbHVhYmxlIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdFx0ICBzdGFydCB3aXRoIFwmIzM0O0FQUFwmIzM0Oy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBcJiMzNDtzbXNnaXVjdl9hcHBcJiMzNDsuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFFFVEhcbiAgNDA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDQxOlx0XHRwcm9tcHQgXCYjMzQ7R2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDQ1cgXHUwMDI2XHUwMDI2IE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjYgUURJTyBcdTAwMjZcdTAwMjYgRVRIRVJORVRcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJiMzOTtzIE9TQSBFeHByZXNzIG5ldHdvcmsgYWRhcHRlcnMgaW4gUURJTyBtb2RlLFxuICA0NTpcdFx0ICBIaXBlclNvY2tldHMgaW50ZXJmYWNlcyBhbmQgei9WTSB2aXJ0dWFsIE5JQ3MgZm9yIEd1ZXN0IExBTiBhbmRcbiAgNDY6XHRcdCAgVlNXSVRDSC5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXG4gIDQ5Olx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxuICA1MDpcdFxuICA1MTpcdGNvbmZpZyBRRVRIX0wyXG4gIDUyOlx0XHRkZWZfdHJpc3RhdGUgeVxuICA1MzpcdFx0cHJvbXB0IFwmIzM0O3FldGggbGF5ZXIgMiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBRRVRIXG4gIDU1Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICA1NjpcdFx0aGVscFxuICA1NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gYmUgYWJsZSB0byBydW4gcWV0aCBkZXZpY2VzIGluIGxheWVyIDIgbW9kZS5cbiAgNTg6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoX2wyLlxuICA1OTpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSB5LlxuICA2MDpcdFxuICA2MTpcdGNvbmZpZyBRRVRIX0wzXG4gIDYyOlx0XHRkZWZfdHJpc3RhdGUgeVxuICA2MzpcdFx0cHJvbXB0IFwmIzM0O3FldGggbGF5ZXIgMyBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA2NDpcdFx0ZGVwZW5kcyBvbiBRRVRIXG4gIDY1Olx0XHRoZWxwXG4gIDY2Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBiZSBhYmxlIHRvIHJ1biBxZXRoIGRldmljZXMgaW4gbGF5ZXIgMyBtb2RlLlxuICA2NzpcdFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aF9sMy5cbiAgNjg6XHRcdCAgSWYgdW5zdXJlLCBjaG9vc2UgWS5cbiAgNjk6XHRcbiAgNzA6XHRjb25maWcgUUVUSF9PU1hcbiAgNzE6XHRcdGRlZl9ib29sICFIQVZFX01BUkNIX1oxNV9GRUFUVVJFU1xuICA3MjpcdFx0cHJvbXB0IFwmIzM0O3FldGggT1NYIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIFFFVEhcbiAgNzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODUxCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25jZXB0czoKCioqQ2hhbm5lbCBTdWJzeXN0ZW0gQ29uc2lkZXJhdGlvbnMgZm9yIHMzOTAgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYENDV2AgYW5kIGBRRElPYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgczM5MC1zcGVjaWZpYyBjaGFubmVsIHN1YnN5c3RlbSBjb25jZXB0cywgcmlnaHQ/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzLCBhbmQgbWF5YmUgc29tZSBvZiB0aGUgbnVhbmNlcy4gV2hlcmUgYXJlIHRob3NlIGRlZmluZWQgaW4gdGhlIGtlcm5lbD8gSSYjMzk7bGwgYmV0IGl0JiMzOTtzIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLi4uIFllYWgsIGxldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBgYXJjaC9zMzkwL0tjb25maWdgIGFuZCBgZHJpdmVycy9zMzkwL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhvc2UgS2NvbmZpZ3MgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDQ1cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL0tjb25maWc9ODYwPWVuZG1lbnVcbmFyY2gvczM5MC9LY29uZmlnLTg2MS1cbmFyY2gvczM5MC9LY29uZmlnOjg2Mjpjb25maWcgQ0NXXG5hcmNoL3MzOTAvS2NvbmZpZy04NjMtXHRkZWZfYm9vbCB5XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZz0zND1jb25maWcgVE4zMjE1X0NPTlNPTEVcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTQxLVxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZzo0Mjpjb25maWcgQ0NXX0NPTlNPTEVcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctNDMtXHRkZWZfYm9vbCB5IGlmIFROMzIxNV9DT05TT0xFIHx8IFROMzI3MF9DT05TT0xFXG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTcwPWNvbmZpZyBRRVRIX09TWFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03Ny1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3ODpjb25maWcgQ0NXR1JPVVBcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03OS1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0MAoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA2NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IGBDT05GSUdfQ0NXYCBpcyBzcGVjaWZpYyB0byB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBjb25maWd1cmF0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGBxZXRoYCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGNvbmNlcm4sIHNpbmNlIGl0JiMzOTtzIGFuIElCTSBzMzkwIG1haW5mcmFtZSBPU0EvSGlwZXJTb2NrZXRzIG5ldHdvcmsgYWRhcHRlciBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gUUVNVSBldmVuICplbXVsYXRlKiBgcWV0aGAgb3IgaXRzIENDVyBpbnRlcmZhY2U/JiMzNDsKCkkgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbjogUUVNVSwgZXZlbiB0aGUgYHFlbXUtc3lzdGVtLXMzOTB4YCB2YXJpYW50LCBwcmltYXJpbHkgc3VwcG9ydHMgdmlydGlvLWNjdyBhbmQgc2ltaWxhciBwYXJhdmlydHVhbGl6ZWQgZGV2aWNlcy4gSXQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgSUJNLXByb3ByaWV0YXJ5IGhhcmR3YXJlIG9mIGBxZXRoYCwgd2hpY2ggcmVsaWVzIG9uIE9TQSBFeHByZXNzIGFuZCBIaXBlclNvY2tldHMuIFRoaXMgbWVhbnMgcmVhbCBtYWluZnJhbWUgaGFyZHdhcmUgKHovQXJjaGl0ZWN0dXJlLCBMUEFSLCB6L1ZNLCBPU0EvSGlwZXJTb2NrZXRzKSBpcyBuZWVkZWQuCgpJIHJlY2FsbCBhIHJlbGV2YW50IHJ1bGUgYWJvdXQgZnV6emluZzogJiMzNDtSZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDsgVGhpcyBpcyBjcnVjaWFsLiBOb3csIGxldCYjMzk7cyBhbmFseXplIHRoZSBwYXRjaCYjMzk7cyBzcGVjaWZpYyBjb2RlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiYCwgYHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c2AsIGFuZCBgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3dgLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBoYW5kbGVzIGEgc3BlY2lmaWMgZXJyb3IgY29kZSwgYElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIYCwgZnJvbSBxZXRoIEwyICh3aGVuIHF1ZXJ5aW5nIGJyaWRnZSBwb3J0IHJvbGVzIC8gc3RhdGVzKS4gUmF0aGVyIHRoYW4gZmFpbGluZywgdGhpcyBpcyB0cmVhdGVkIGFzIGEgc3VjY2VzczsgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlIGFib3V0IGFuIE9TIGZhbWlseSBtaXNtYXRjaCBpcyBwcmludGVkIGluIHN5c2ZzLgoKR2l2ZW4gdGhhdCBgcWV0aGAgcmVsaWVzIG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgYW5kIGl0cyBhcmNoaXRlY3R1cmUgZHJpdmVycyByZXF1aXJlIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlLCB0aGUgcGF0Y2gmIzM5O3MgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQgaXMgdGllZCB0byB2ZXJ5IHNwZWNpZmljIG1haW5mcmFtZSBoYXJkd2FyZSwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgYWZ0ZXIgcmV2aWV3aW5nIGFsbCByZXF1aXJlbWVudHMsIEkgY2FuIGNvbmZpZGVudGx5IHNldDoKLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlLmAKLSAgIGBFbmFibGVDb25maWdzOiBudWxsYAotICAgYEZvY3VzU3ltYm9sczogbnVsbGAKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHFldGhgIGRyaXZlciwgd2hpY2ggbmVjZXNzaXRhdGVzIHNwZWNpZmljIHMzOTAtYmFzZWQgaGFyZHdhcmUgKENDVy9RRElPKSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNjoyOToyNy4yOTQ5ODU4MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUwNTIxNjMxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MjcuMjk0OTkwNjc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ3NDk1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDU1ZjhkOTMzN2RmZTU2M2ZiZWUxOTg4NmQyODdiNjU4ZjllMTE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMDY6Mjk6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmggYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaFxcbmluZGV4IDdjNjQ2ZTJmZWQ3ZTUuLmY5NDk3NWU5NzBjYWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaFxcbkBAIC0xMyw3ICsxMyw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpxZXRoX2wyX2F0dHJfZ3JvdXBzW107XFxuIFxcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsXFxuLVxcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSk7XFxuK1xcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcXG4rXFx0XFx0XFx0XFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgZW51bSBxZXRoX3NicF9yb2xlcyByb2xlKTtcXG4gaW50IHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgaW50IGVuYWJsZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xcbmluZGV4IGE5ZTdkMWQ2MzdhMjAuLjI5MzVjMmVjYzMxNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmNcXG5AQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIHZvaWQgcWV0aF9sMl9zZXR1cF9icmlkZ2Vwb3J0X2F0dHJzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQpXFxuIFxcdFxcdHFldGhfYnJpZGdlcG9ydF9zZXRyb2xlKGNhcmQsIGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUpO1xcbiBcXHRcXHQvKiBMZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHN0b3JlZCByb2xlIHZhbHVlLiAqL1xcbiBcXHRcXHRxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwgXFx1MDAyNmNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIE5VTEwsIE5VTEwpO1xcbiBcXHR9XFxuIFxcdGlmIChjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5ob3N0bm90aWZpY2F0aW9uKSB7XFxuIFxcdFxcdGlmIChxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KGNhcmQsIDEpKVxcbkBAIC0xNTQ1LDYgKzE1NDUsNyBAQCBzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIHtcXG4gXFx0XFx0c3RydWN0IHtcXG4gXFx0XFx0XFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcXG4gXFx0XFx0XFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlO1xcbitcXHRcXHRcXHRib29sICpvc19taXNtYXRjaDtcXG4gXFx0XFx0fSBxcG9ydHM7XFxuIFxcdH0gZGF0YTtcXG4gfTtcXG5AQCAtMTcyMSwxMCArMTcyMiwxOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxcbiBcXHRzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhO1xcbiBcXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsICpjYmN0bCA9IChzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsICopcmVwbHktXFx1MDAzZXBhcmFtO1xcbiBcXHRzdHJ1Y3QgcWV0aF9zYnBfcG9ydF9kYXRhICpxcG9ydHM7XFxuK1xcdHUxNiBzYnBfcmM7XFxuIFxcdGludCByYztcXG4gXFxuIFxcdFFFVEhfQ0FSRF9URVhUKGNhcmQsIDIsIFxcXCJicnFwcnRjYlxcXCIpO1xcbi1cXHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcXG4rXFx0c2JwX3JjID0gY21kLVxcdTAwM2VkYXRhLnNicC5oZHIucmV0dXJuX2NvZGU7XFxuK1xcbitcXHQvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhO1xcbitcXHQgKiB0cmVhdCBhcyBzdWNjZXNzXFxuK1xcdCAqL1xcbitcXHRpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIIFxcdTAwMjZcXHUwMDI2ICFjbWQtXFx1MDAzZWhkci5yZXR1cm5fY29kZSlcXG4rXFx0XFx0cmMgPSAwO1xcbitcXHRlbHNlXFxuK1xcdFxcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X21ha2VyYyhjYXJkLCBjbWQpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuQEAgLTE3NDAsNiArMTc1MCw5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdGlmIChjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXFxuIFxcdFxcdFxcdCpjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUgPSBxcG9ydHMtXFx1MDAzZWVudHJ5WzBdLnN0YXRlO1xcbiBcXHR9XFxuK1xcdGlmIChjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2gpXFxuK1xcdFxcdCpjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2ggPVxcbitcXHRcXHRcXHQoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE3NDgsMTMgKzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcXG4gICogQGNhcmQ6XFx0XFx0XFx0ICAgcWV0aF9jYXJkIHN0cnVjdHVyZSBwb2ludGVyLlxcbiAgKiBAcm9sZTogICBSb2xlIG9mIHRoZSBwb3J0OiAwLW5vbmUsIDEtcHJpbWFyeSwgMi1zZWNvbmRhcnkuXFxuICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLlxcbisgKiBAb3NfbWlzbWF0Y2g6IGlmIG5vbi1OVUxMLCBzZXQgdG8gdHJ1ZSB3aGVuIGZpcm13YXJlIHJlcG9ydHNcXG4rICpcXHRcXHQgT1MgZmFtaWx5IG1pc21hdGNoLlxcbiAgKlxcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXFxuICAqXFxuLSAqICdyb2xlJyBhbmQgJ3N0YXRlJyBhcmUgbm90IHVwZGF0ZWQgaW4gY2FzZSBvZiBoYXJkd2FyZSBvcGVyYXRpb24gZmFpbHVyZS5cXG4rICogJ3JvbGUnLCAnc3RhdGUnIGFuZCAnb3NfbWlzbWF0Y2gnIGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mXFxuKyAqIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLlxcbiAgKi9cXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxcbi1cXHRlbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLCBlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUpXFxuK1xcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsIGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcXG4rXFx0Ym9vbCAqb3NfbWlzbWF0Y2gpXFxuIHtcXG4gXFx0c3RydWN0IHFldGhfY21kX2J1ZmZlciAqaW9iO1xcbiBcXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0ge1xcbkBAIC0xNzYyLDYgKzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdFxcdC5xcG9ydHMgPSB7XFxuIFxcdFxcdFxcdFxcdC5yb2xlID0gcm9sZSxcXG4gXFx0XFx0XFx0XFx0LnN0YXRlID0gc3RhdGUsXFxuK1xcdFxcdFxcdFxcdC5vc19taXNtYXRjaCA9IG9zX21pc21hdGNoLFxcbiBcXHRcXHRcXHR9LFxcbiBcXHRcXHR9LFxcbiBcXHR9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNcXG5pbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xcbkBAIC0xNSw2ICsxNSw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4ge1xcbiBcXHRzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7XFxuK1xcdGJvb2wgb3NfbWlzbWF0Y2ggPSBmYWxzZTtcXG4gXFx0aW50IHJjID0gMDtcXG4gXFx0Y2hhciAqd29yZDtcXG4gXFxuQEAgLTI1LDcgKzI2LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHRcXHRjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5zdXBwb3J0ZWRfZnVuY3MpXFxuIFxcdFxcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsXFxuLVxcdFxcdFxcdFxcdTAwMjZjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcXHUwMDI2c3RhdGUpO1xcbitcXHRcXHRcXHRcXHUwMDI2Y2FyZC1cXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgXFx1MDAyNnN0YXRlLCBcXHUwMDI2b3NfbWlzbWF0Y2gpO1xcbiBcXHRpZiAoIXJjKSB7XFxuIFxcdFxcdGlmIChzaG93X3N0YXRlKVxcbiBcXHRcXHRcXHRzd2l0Y2ggKHN0YXRlKSB7XFxuQEAgLTUyLDYgKzUzLDEwIEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRRRVRIX0NBUkRfVEVYVF8oY2FyZCwgMiwgXFxcIlNCUCUwMng6JTAyeFxcXCIsXFxuIFxcdFxcdFxcdFxcdGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIHN0YXRlKTtcXG4rXFx0XFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUgPT0gUUVUSF9TQlBfUk9MRV9OT05FIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBvc19taXNtYXRjaClcXG4rXFx0XFx0XFx0cmMgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVzIChPUyBmYW1pbHkgbWlzbWF0Y2gpXFxcXG5cXFwiLCB3b3JkKTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXNcXFxcblxcXCIsIHdvcmQpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjI3LjY3MDM1MDU4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0Njc2NzgwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzA1NWY4ZDkzMzdkZmU1NjNmYmVlMTk4ODZkMjg3YjY1OGY5ZTExNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDY6Mjk6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaCBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5pbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5AQCAtMTMsNyArMTMsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqcWV0aF9sMl9hdHRyX2dyb3Vwc1tdO1xuIFxuIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbiBcdFx0XHRcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsXG4tXHRcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUpO1xuK1x0XHRcdFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLFxuK1x0XHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLCBlbnVtIHFldGhfc2JwX3JvbGVzIHJvbGUpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jXG5pbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuQEAgLTExNTgsNyArMTE1OCw3IEBAIHN0YXRpYyB2b2lkIHFldGhfbDJfc2V0dXBfYnJpZGdlcG9ydF9hdHRycyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkKVxuIFx0XHRxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShjYXJkLCBjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUpO1xuIFx0XHQvKiBMZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHN0b3JlZCByb2xlIHZhbHVlLiAqL1xuIFx0XHRxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwgXHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLFxuLVx0XHRcdFx0XHQgICAgTlVMTCk7XG4rXHRcdFx0XHRcdCAgICBOVUxMLCBOVUxMKTtcbiBcdH1cbiBcdGlmIChjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLmhvc3Rub3RpZmljYXRpb24pIHtcbiBcdFx0aWYgKHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoY2FyZCwgMSkpXG5AQCAtMTU0NSw2ICsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcbiBcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGU7XG4rXHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2g7XG4gXHRcdH0gcXBvcnRzO1xuIFx0fSBkYXRhO1xuIH07XG5AQCAtMTcyMSwxMCArMTcyMiwxOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0c3RydWN0IHFldGhfaXBhX2NtZCAqY21kID0gKHN0cnVjdCBxZXRoX2lwYV9jbWQgKikgZGF0YTtcbiBcdHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKmNiY3RsID0gKHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKilyZXBseS1cdTAwM2VwYXJhbTtcbiBcdHN0cnVjdCBxZXRoX3NicF9wb3J0X2RhdGEgKnFwb3J0cztcbitcdHUxNiBzYnBfcmM7XG4gXHRpbnQgcmM7XG4gXG4gXHRRRVRIX0NBUkRfVEVYVChjYXJkLCAyLCBcImJycXBydGNiXCIpO1xuLVx0cmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7XG4rXHRzYnBfcmMgPSBjbWQtXHUwMDNlZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlO1xuK1xuK1x0Lyogb24gT1MgZmFtaWx5IG1pc21hdGNoLCBxdWVyeSBzdGlsbCByZXR1cm5zIHZhbGlkIHBvcnQgZGF0YTtcbitcdCAqIHRyZWF0IGFzIHN1Y2Nlc3NcbitcdCAqL1xuK1x0aWYgKHNicF9yYyA9PSBJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCBcdTAwMjZcdTAwMjYgIWNtZC1cdTAwM2VoZHIucmV0dXJuX2NvZGUpXG4rXHRcdHJjID0gMDtcbitcdGVsc2VcbitcdFx0cmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbkBAIC0xNzQwLDYgKzE3NTAsOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0XHRpZiAoY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXG4gXHRcdFx0KmNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLVx1MDAzZWVudHJ5WzBdLnN0YXRlO1xuIFx0fVxuK1x0aWYgKGNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLm9zX21pc21hdGNoKVxuK1x0XHQqY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2ggPVxuK1x0XHRcdChzYnBfcmMgPT0gSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0gpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3NDgsMTMgKzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbiAgKiBAY2FyZDpcdFx0XHQgICBxZXRoX2NhcmQgc3RydWN0dXJlIHBvaW50ZXIuXG4gICogQHJvbGU6ICAgUm9sZSBvZiB0aGUgcG9ydDogMC1ub25lLCAxLXByaW1hcnksIDItc2Vjb25kYXJ5LlxuICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLlxuKyAqIEBvc19taXNtYXRjaDogaWYgbm9uLU5VTEwsIHNldCB0byB0cnVlIHdoZW4gZmlybXdhcmUgcmVwb3J0c1xuKyAqXHRcdCBPUyBmYW1pbHkgbWlzbWF0Y2guXG4gICpcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXG4gICpcbi0gKiAncm9sZScgYW5kICdzdGF0ZScgYXJlIG5vdCB1cGRhdGVkIGluIGNhc2Ugb2YgaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4rICogJ3JvbGUnLCAnc3RhdGUnIGFuZCAnb3NfbWlzbWF0Y2gnIGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mXG4rICogaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4gICovXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuLVx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKVxuK1x0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLFxuK1x0Ym9vbCAqb3NfbWlzbWF0Y2gpXG4ge1xuIFx0c3RydWN0IHFldGhfY21kX2J1ZmZlciAqaW9iO1xuIFx0c3RydWN0IF9xZXRoX3NicF9jYmN0bCBjYmN0bCA9IHtcbkBAIC0xNzYyLDYgKzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0LnFwb3J0cyA9IHtcbiBcdFx0XHRcdC5yb2xlID0gcm9sZSxcbiBcdFx0XHRcdC5zdGF0ZSA9IHN0YXRlLFxuK1x0XHRcdFx0Lm9zX21pc21hdGNoID0gb3NfbWlzbWF0Y2gsXG4gXHRcdFx0fSxcbiBcdFx0fSxcbiBcdH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG5pbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNcbkBAIC0xNSw2ICsxNSw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbiB7XG4gXHRzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRlbnVtIHFldGhfc2JwX3N0YXRlcyBzdGF0ZSA9IFFFVEhfU0JQX1NUQVRFX0lOQUNUSVZFO1xuK1x0Ym9vbCBvc19taXNtYXRjaCA9IGZhbHNlO1xuIFx0aW50IHJjID0gMDtcbiBcdGNoYXIgKndvcmQ7XG4gXG5AQCAtMjUsNyArMjYsNyBAQCBzdGF0aWMgc3NpemVfdCBxZXRoX2JyaWRnZV9wb3J0X3JvbGVfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdFx0Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5zdXBwb3J0ZWRfZnVuY3MpXG4gXHRcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsXG4tXHRcdFx0XHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcdTAwMjZzdGF0ZSk7XG4rXHRcdFx0XHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcdTAwMjZzdGF0ZSwgXHUwMDI2b3NfbWlzbWF0Y2gpO1xuIFx0aWYgKCFyYykge1xuIFx0XHRpZiAoc2hvd19zdGF0ZSlcbiBcdFx0XHRzd2l0Y2ggKHN0YXRlKSB7XG5AQCAtNTIsNiArNTMsMTAgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0UUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsIFwiU0JQJTAyeDolMDJ4XCIsXG4gXHRcdFx0XHRjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIHN0YXRlKTtcbitcdFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSA9PSBRRVRIX1NCUF9ST0xFX05PTkUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IG9zX21pc21hdGNoKVxuK1x0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwiJXMgKE9TIGZhbWlseSBtaXNtYXRjaClcXG5cIiwgd29yZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcIiVzXFxuXCIsIHdvcmQpO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MjcuNjcwMzUxODAzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEwOTU1MDU1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggRXZhbHVhdGlvbjogRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBMZXQncyBkaWcgaW4uIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhgLCBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY2AsIGFuZCBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBgczM5MGAgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIGBxZXRoYCBuZXR3b3JrIGRyaXZlci4gVGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgSUJNJ3MgczM5MCBPU0EtRXhwcmVzcyBvciBIaXBlclNvY2tldHMgbmV0d29yayBjYXJkcy5cblxuTm93LCBteSBjcml0ZXJpYSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBuZWVkIHRvIHNheSBcIm5vXCIgdG8gZnV6emluZyBpZiB0aGUgcGF0Y2g6ICpvbmx5KiB0b3VjaGVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBzZXR1cHMg4oCTIHRoaW5ncyBsaWtlIGhhcmR3YXJlLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBoYXJkd2FyZSwgb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgZXZlbiBpbiBlbXVsYXRlZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGBxZXRoYCBkcml2ZXIgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IGhpdCB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdG9vbHM/IElzIGl0IHJlYWNoYWJsZSBpbiwgc2F5LCBzeXprYWxsZXIgcnVubmluZyBvbiB4ODYgb3IgQVJNNjQsIG9yIGV2ZW4gYSBwbGFpbiBRRU1VIHMzOTAgc2V0dXA/IE9yIGlzIHRoaXMgYSBDQ1cvY2hhbm5lbCBkZXZpY2UgdGhhdCdzICpjb21wbGV0ZWx5KiBzMzkwLXNwZWNpZmljPyBJIG5lZWQgdG8ga25vdyB3aGF0IHRoaXMgYHFldGhgIGRyaXZlciBkZXBlbmRzIG9uLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgcWV0aGAgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhlbHAgbWUgbWFrZSB0aGUgY2FsbCBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MzguNzY1ODU5NjgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzMzMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTI4PWNvbmZpZyBTTVNHSVVDVl9FVkVOVFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzozOTpjb25maWcgUUVUSFxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy00MC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTUwLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo1MTpjb25maWcgUUVUSF9MMlxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy01Mi1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo2MTpjb25maWcgUUVUSF9MM1xcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02Mi1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTY5LVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3MDpjb25maWcgUUVUSF9PU1hcXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNzEtXFx0ZGVmX2Jvb2wgIUhBVkVfTUFSQ0hfWjE1X0ZFQVRVUkVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjM4LjgyMjE5Njk5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyODk1NzEwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBTMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFMzOTAgYXJjaGl0ZWN0dXJlJ3MgbmV0d29yayBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCwgZm9jdXNpbmcgb24gdGhlIHNlY3Rpb24gYmV0d2VlbiBsaW5lcyAzNSBhbmQgNzUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIG9wdGlvbnMgYXJlIGRlZmluZWQsIG9yIHBlcmhhcHMgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpYyBTMzkwIG5ldHdvcmsgaW50ZXJmYWNlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIGJhc2UgZHJpdmVyIG9wdGlvbnMsIHdoaWNoIGFkYXB0ZXJzIGFyZSBzdXBwb3J0ZWQsIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgd2F5cyB0byBjb21waWxlIHRoZSBkcml2ZXIsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpYWwgZmVhdHVyZXMgZW5hYmxlZCBvciBkaXNhYmxlZCBkZXBlbmRpbmcgb24gaG93IHRoZSBzeXN0ZW0gaXMgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29yayBkcml2ZXJzIGFyZSBjb250cm9sbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgUzM5MC1zcGVjaWZpYyBuZXR3b3JrIGhhcmR3YXJlLCBhbmQgdGhlIHNvZnR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gaXMgcmVhc29uYWJseSB3ZWxsLWNvbW1lbnRlZCwgYnV0IGV2ZW4gaWYgaXQgaXNuJ3QsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBlc3NlbnRpYWwgbG9naWMgcHJldHR5IHF1aWNrbHkuIEkgYW50aWNpcGF0ZSBlbmNvdW50ZXJpbmcgdGhlIHVzdWFsIGBjb25maWdgIHN0YXRlbWVudHMsIGB0cmlzdGF0ZWAgdmFsdWVzLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIEtub3dpbmcgdGhpcyBhcmVhIHdlbGwgd2lsbCBwcm9iYWJseSBwcm92ZSBpbnZhbHVhYmxlIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTY1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6NDUuMTExNzcxOTQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdFxcdCAgc3RhcnQgd2l0aCBcXFwiQVBQXFxcIi5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTS4gVGhlIG1vZHVsZSBuYW1lIGlzIFxcXCJzbXNnaXVjdl9hcHBcXFwiLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgUUVUSFxcbiAgNDA6XFx0XFx0ZGVmX3RyaXN0YXRlIHlcXG4gIDQxOlxcdFxcdHByb21wdCBcXFwiR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0NXIFxcdTAwMjZcXHUwMDI2IE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUIFxcdTAwMjZcXHUwMDI2IFFESU8gXFx1MDAyNlxcdTAwMjYgRVRIRVJORVRcXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJ3MgT1NBIEV4cHJlc3MgbmV0d29yayBhZGFwdGVycyBpbiBRRElPIG1vZGUsXFxuICA0NTpcXHRcXHQgIEhpcGVyU29ja2V0cyBpbnRlcmZhY2VzIGFuZCB6L1ZNIHZpcnR1YWwgTklDcyBmb3IgR3Vlc3QgTEFOIGFuZFxcbiAgNDY6XFx0XFx0ICBWU1dJVENILlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNLlxcbiAgNDk6XFx0XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aC5cXG4gIDUwOlxcdFxcbiAgNTE6XFx0Y29uZmlnIFFFVEhfTDJcXG4gIDUyOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICA1MzpcXHRcXHRwcm9tcHQgXFxcInFldGggbGF5ZXIgMiBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDU0OlxcdFxcdGRlcGVuZHMgb24gUUVUSFxcbiAgNTU6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDU2OlxcdFxcdGhlbHBcXG4gIDU3OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGJlIGFibGUgdG8gcnVuIHFldGggZGV2aWNlcyBpbiBsYXllciAyIG1vZGUuXFxuICA1ODpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aF9sMi5cXG4gIDU5OlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgeS5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0Y29uZmlnIFFFVEhfTDNcXG4gIDYyOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICA2MzpcXHRcXHRwcm9tcHQgXFxcInFldGggbGF5ZXIgMyBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDY0OlxcdFxcdGRlcGVuZHMgb24gUUVUSFxcbiAgNjU6XFx0XFx0aGVscFxcbiAgNjY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gYmUgYWJsZSB0byBydW4gcWV0aCBkZXZpY2VzIGluIGxheWVyIDMgbW9kZS5cXG4gIDY3OlxcdFxcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSBjaG9vc2UgTS4gVGhlIG1vZHVsZSBuYW1lIGlzIHFldGhfbDMuXFxuICA2ODpcXHRcXHQgIElmIHVuc3VyZSwgY2hvb3NlIFkuXFxuICA2OTpcXHRcXG4gIDcwOlxcdGNvbmZpZyBRRVRIX09TWFxcbiAgNzE6XFx0XFx0ZGVmX2Jvb2wgIUhBVkVfTUFSQ0hfWjE1X0ZFQVRVUkVTXFxuICA3MjpcXHRcXHRwcm9tcHQgXFxcInFldGggT1NYIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgNzM6XFx0XFx0ZGVwZW5kcyBvbiBRRVRIXFxuICA3NDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjQ1LjExMTg1MTI1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMDYzNzE3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25jZXB0czpcblxuKipDaGFubmVsIFN1YnN5c3RlbSBDb25zaWRlcmF0aW9ucyBmb3IgczM5MCBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYENDV2AgYW5kIGBRRElPYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgczM5MC1zcGVjaWZpYyBjaGFubmVsIHN1YnN5c3RlbSBjb25jZXB0cywgcmlnaHQ/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzLCBhbmQgbWF5YmUgc29tZSBvZiB0aGUgbnVhbmNlcy4gV2hlcmUgYXJlIHRob3NlIGRlZmluZWQgaW4gdGhlIGtlcm5lbD8gSSdsbCBiZXQgaXQncyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4uLiBZZWFoLCBsZXQncyBzdGFydCBieSBjaGVja2luZyBgYXJjaC9zMzkwL0tjb25maWdgIGFuZCBgZHJpdmVycy9zMzkwL0tjb25maWdgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZGVmaW5pdGlvbnMgYW5kIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aG9zZSBLY29uZmlncyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjMwOjQ1LjE3NTU3MjMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTczMDE5MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQ1dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL0tjb25maWc9ODYwPWVuZG1lbnVcXG5hcmNoL3MzOTAvS2NvbmZpZy04NjEtXFxuYXJjaC9zMzkwL0tjb25maWc6ODYyOmNvbmZpZyBDQ1dcXG5hcmNoL3MzOTAvS2NvbmZpZy04NjMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZz0zND1jb25maWcgVE4zMjE1X0NPTlNPTEVcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctNDEtXFxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZzo0Mjpjb25maWcgQ0NXX0NPTlNPTEVcXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTQzLVxcdGRlZl9ib29sIHkgaWYgVE4zMjE1X0NPTlNPTEUgfHwgVE4zMjcwX0NPTlNPTEVcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03MD1jb25maWcgUUVUSF9PU1hcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6Nzg6Y29uZmlnIENDV0dST1VQXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjMwOjQ3LjE0ODU5NjQ4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA1MTk4NTAwMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgQ09ORklHX0NDV2AgaXMgc3BlY2lmaWMgdG8gdGhlIGBhcmNoL3MzOTAvS2NvbmZpZ2AgY29uZmlndXJhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBgcWV0aGAgYXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLCBzaW5jZSBpdCdzIGFuIElCTSBzMzkwIG1haW5mcmFtZSBPU0EvSGlwZXJTb2NrZXRzIG5ldHdvcmsgYWRhcHRlciBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gUUVNVSBldmVuICplbXVsYXRlKiBgcWV0aGAgb3IgaXRzIENDVyBpbnRlcmZhY2U/XCJcblxuSSBxdWlja2x5IGNvbmZpcm0gbXkgc3VzcGljaW9uOiBRRU1VLCBldmVuIHRoZSBgcWVtdS1zeXN0ZW0tczM5MHhgIHZhcmlhbnQsIHByaW1hcmlseSBzdXBwb3J0cyB2aXJ0aW8tY2N3IGFuZCBzaW1pbGFyIHBhcmF2aXJ0dWFsaXplZCBkZXZpY2VzLiBJdCBkb2Vzbid0IGVtdWxhdGUgdGhlIElCTS1wcm9wcmlldGFyeSBoYXJkd2FyZSBvZiBgcWV0aGAsIHdoaWNoIHJlbGllcyBvbiBPU0EgRXhwcmVzcyBhbmQgSGlwZXJTb2NrZXRzLiBUaGlzIG1lYW5zIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlICh6L0FyY2hpdGVjdHVyZSwgTFBBUiwgei9WTSwgT1NBL0hpcGVyU29ja2V0cykgaXMgbmVlZGVkLlxuXG5JIHJlY2FsbCBhIHJlbGV2YW50IHJ1bGUgYWJvdXQgZnV6emluZzogXCJSZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIgVGhpcyBpcyBjcnVjaWFsLiBOb3csIGxldCdzIGFuYWx5emUgdGhlIHBhdGNoJ3Mgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zLiBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYmAsIGBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNgLCBhbmQgYHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93YC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgaGFuZGxlcyBhIHNwZWNpZmljIGVycm9yIGNvZGUsIGBJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSGAsIGZyb20gcWV0aCBMMiAod2hlbiBxdWVyeWluZyBicmlkZ2UgcG9ydCByb2xlcyAvIHN0YXRlcykuIFJhdGhlciB0aGFuIGZhaWxpbmcsIHRoaXMgaXMgdHJlYXRlZCBhcyBhIHN1Y2Nlc3M7IGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSBhYm91dCBhbiBPUyBmYW1pbHkgbWlzbWF0Y2ggaXMgcHJpbnRlZCBpbiBzeXNmcy5cblxuR2l2ZW4gdGhhdCBgcWV0aGAgcmVsaWVzIG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgYW5kIGl0cyBhcmNoaXRlY3R1cmUgZHJpdmVycyByZXF1aXJlIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlLCB0aGUgcGF0Y2gncyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBpcyB0aWVkIHRvIHZlcnkgc3BlY2lmaWMgbWFpbmZyYW1lIGhhcmR3YXJlLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIGFmdGVyIHJldmlld2luZyBhbGwgcmVxdWlyZW1lbnRzLCBJIGNhbiBjb25maWRlbnRseSBzZXQ6XG4tICAgYFdvcnRoRnV6emluZzogZmFsc2UuYFxuLSAgIGBFbmFibGVDb25maWdzOiBudWxsYFxuLSAgIGBGb2N1c1N5bWJvbHM6IG51bGxgXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHFldGhgIGRyaXZlciwgd2hpY2ggbmVjZXNzaXRhdGVzIHNwZWNpZmljIHMzOTAtYmFzZWQgaGFyZHdhcmUgKENDVy9RRElPKSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MCwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6MzI6MzIuMzQ3MTAwMTQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZXRoIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL3MzOTAvbmV0KSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIGJyaWRnZSBwb3J0IHF1ZXJ5IHJlc3BvbnNlcyBhbmQgc3lzZnMgb3V0cHV0IGZvciBJQk0gczM5MCBPU0EtRXhwcmVzcy9IaXBlclNvY2tldHMgZGV2aWNlcy4gVGhpcyBoYXJkd2FyZSBpcyBzcGVjaWZpYyB0byBzMzkwIG1haW5mcmFtZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGNsb3VkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNjozMjozMi4zNDcxMzM2OTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk8tq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 05:56:24 +0000 UTC FinishedAt: 2026-09-02 06:32:33 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MDU1ZjhkOTMzN2RmZTU2M2ZiZWUxOTg4NmQyODdiNjU4ZjllMTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwNjoyOToyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaCBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5pbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5AQCAtMTMsNyAmIzQzOzEzLDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnFldGhfbDJfYXR0cl9ncm91cHNbXTtcbiBcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0XHRlbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLFxuLVx0XHRcdFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKTtcbiYjNDM7XHRcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUsXG4mIzQzO1x0XHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLCBlbnVtIHFldGhfc2JwX3JvbGVzIHJvbGUpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jXG5pbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuQEAgLTExNTgsNyAmIzQzOzExNTgsNyBAQCBzdGF0aWMgdm9pZCBxZXRoX2wyX3NldHVwX2JyaWRnZXBvcnRfYXR0cnMoc3RydWN0IHFldGhfY2FyZCAqY2FyZClcbiBcdFx0cWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoY2FyZCwgY2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlKTtcbiBcdFx0LyogTGV0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiByZWZyZXNoIHRoZSBzdG9yZWQgcm9sZSB2YWx1ZS4gKi9cbiBcdFx0cWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsIFx1MDAyNmNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSxcbi1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xuIFx0fVxuIFx0aWYgKGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAuaG9zdG5vdGlmaWNhdGlvbikge1xuIFx0XHRpZiAocWV0aF9icmlkZ2Vwb3J0X2FuX3NldChjYXJkLCAxKSlcbkBAIC0xNTQ1LDYgJiM0MzsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcbiBcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGU7XG4mIzQzO1x0XHRcdGJvb2wgKm9zX21pc21hdGNoO1xuIFx0XHR9IHFwb3J0cztcbiBcdH0gZGF0YTtcbiB9O1xuQEAgLTE3MjEsMTAgJiM0MzsxNzIyLDE5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhO1xuIFx0c3RydWN0IF9xZXRoX3NicF9jYmN0bCAqY2JjdGwgPSAoc3RydWN0IF9xZXRoX3NicF9jYmN0bCAqKXJlcGx5LVx1MDAzZXBhcmFtO1xuIFx0c3RydWN0IHFldGhfc2JwX3BvcnRfZGF0YSAqcXBvcnRzO1xuJiM0MztcdHUxNiBzYnBfcmM7XG4gXHRpbnQgcmM7XG4gXG4gXHRRRVRIX0NBUkRfVEVYVChjYXJkLCAyLCBcJiMzNDticnFwcnRjYlwmIzM0Oyk7XG4tXHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcbiYjNDM7XHRzYnBfcmMgPSBjbWQtXHUwMDNlZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlO1xuJiM0MztcbiYjNDM7XHQvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhO1xuJiM0MztcdCAqIHRyZWF0IGFzIHN1Y2Nlc3NcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIIFx1MDAyNlx1MDAyNiAhY21kLVx1MDAzZWhkci5yZXR1cm5fY29kZSlcbiYjNDM7XHRcdHJjID0gMDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIHJjO1xuIFxuQEAgLTE3NDAsNiAmIzQzOzE3NTAsOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0XHRpZiAoY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXG4gXHRcdFx0KmNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLVx1MDAzZWVudHJ5WzBdLnN0YXRlO1xuIFx0fVxuJiM0MztcdGlmIChjYmN0bC1cdTAwM2VkYXRhLnFwb3J0cy5vc19taXNtYXRjaClcbiYjNDM7XHRcdCpjYmN0bC1cdTAwM2VkYXRhLnFwb3J0cy5vc19taXNtYXRjaCA9XG4mIzQzO1x0XHRcdChzYnBfcmMgPT0gSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0gpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3NDgsMTMgJiM0MzsxNzYxLDE3IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gICogQGNhcmQ6XHRcdFx0ICAgcWV0aF9jYXJkIHN0cnVjdHVyZSBwb2ludGVyLlxuICAqIEByb2xlOiAgIFJvbGUgb2YgdGhlIHBvcnQ6IDAtbm9uZSwgMS1wcmltYXJ5LCAyLXNlY29uZGFyeS5cbiAgKiBAc3RhdGU6ICBTdGF0ZSBvZiB0aGUgcG9ydDogMC1pbmFjdGl2ZSwgMS1zdGFuZGJ5LCAyLWFjdGl2ZS5cbiYjNDM7ICogQG9zX21pc21hdGNoOiBpZiBub24tTlVMTCwgc2V0IHRvIHRydWUgd2hlbiBmaXJtd2FyZSByZXBvcnRzXG4mIzQzOyAqXHRcdCBPUyBmYW1pbHkgbWlzbWF0Y2guXG4gICpcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXG4gICpcbi0gKiAmIzM5O3JvbGUmIzM5OyBhbmQgJiMzOTtzdGF0ZSYjMzk7IGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLlxuJiM0MzsgKiAmIzM5O3JvbGUmIzM5OywgJiMzOTtzdGF0ZSYjMzk7IGFuZCAmIzM5O29zX21pc21hdGNoJiMzOTsgYXJlIG5vdCB1cGRhdGVkIGluIGNhc2Ugb2ZcbiYjNDM7ICogaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4gICovXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuLVx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKVxuJiM0MztcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsIGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcbiYjNDM7XHRib29sICpvc19taXNtYXRjaClcbiB7XG4gXHRzdHJ1Y3QgcWV0aF9jbWRfYnVmZmVyICppb2I7XG4gXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0ge1xuQEAgLTE3NjIsNiAmIzQzOzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0LnFwb3J0cyA9IHtcbiBcdFx0XHRcdC5yb2xlID0gcm9sZSxcbiBcdFx0XHRcdC5zdGF0ZSA9IHN0YXRlLFxuJiM0MztcdFx0XHRcdC5vc19taXNtYXRjaCA9IG9zX21pc21hdGNoLFxuIFx0XHRcdH0sXG4gXHRcdH0sXG4gXHR9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xuaW5kZXggN2Y1OTJmOTEyNTE3Mi4uNzEwMWJlNjJlYjFkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiBcdGVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7XG4mIzQzO1x0Ym9vbCBvc19taXNtYXRjaCA9IGZhbHNlO1xuIFx0aW50IHJjID0gMDtcbiBcdGNoYXIgKndvcmQ7XG4gXG5AQCAtMjUsNyAmIzQzOzI2LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0aWYgKHFldGhfY2FyZF9od19pc19yZWFjaGFibGUoY2FyZCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHRcdGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAuc3VwcG9ydGVkX2Z1bmNzKVxuIFx0XHRyYyA9IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhjYXJkLFxuLVx0XHRcdFx1MDAyNmNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgXHUwMDI2c3RhdGUpO1xuJiM0MztcdFx0XHRcdTAwMjZjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIFx1MDAyNnN0YXRlLCBcdTAwMjZvc19taXNtYXRjaCk7XG4gXHRpZiAoIXJjKSB7XG4gXHRcdGlmIChzaG93X3N0YXRlKVxuIFx0XHRcdHN3aXRjaCAoc3RhdGUpIHtcbkBAIC01Miw2ICYjNDM7NTMsMTAgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0UUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsIFwmIzM0O1NCUCUwMng6JTAyeFwmIzM0OyxcbiBcdFx0XHRcdGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgc3RhdGUpO1xuJiM0MztcdFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUgPT0gUUVUSF9TQlBfUk9MRV9OT05FIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgb3NfbWlzbWF0Y2gpXG4mIzQzO1x0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzIChPUyBmYW1pbHkgbWlzbWF0Y2gpXFxuXCYjMzQ7LCB3b3JkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCB3b3JkKTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNTVmOGQ5MzM3ZGZlNTYzZmJlZTE5ODg2ZDI4N2I2NThmOWUxMTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDA2OjI5OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmggYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaAppbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaApAQCAtMTMsNyAmIzQzOzEzLDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnFldGhfbDJfYXR0cl9ncm91cHNbXTsKIAogaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLAogCQkJCWVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsCi0JCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKTsKJiM0MzsJCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLAomIzQzOwkJCQlib29sICpvc19taXNtYXRjaCk7CiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgZW51bSBxZXRoX3NicF9yb2xlcyByb2xlKTsKIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uYwppbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMKQEAgLTExNTgsNyAmIzQzOzExNTgsNyBAQCBzdGF0aWMgdm9pZCBxZXRoX2wyX3NldHVwX2JyaWRnZXBvcnRfYXR0cnMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCkKIAkJcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoY2FyZCwgY2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSk7CiAJCS8qIExldCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcmVmcmVzaCB0aGUgc3RvcmVkIHJvbGUgdmFsdWUuICovCiAJCXFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhjYXJkLCAmYW1wO2NhcmQtJmd0O29wdGlvbnMuc2JwLnJvbGUsCi0JCQkJCSAgICBOVUxMKTsKJiM0MzsJCQkJCSAgICBOVUxMLCBOVUxMKTsKIAl9CiAJaWYgKGNhcmQtJmd0O29wdGlvbnMuc2JwLmhvc3Rub3RpZmljYXRpb24pIHsKIAkJaWYgKHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoY2FyZCwgMSkpCkBAIC0xNTQ1LDYgJiM0MzsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7CiAJCXN0cnVjdCB7CiAJCQllbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlOwogCQkJZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlOwomIzQzOwkJCWJvb2wgKm9zX21pc21hdGNoOwogCQl9IHFwb3J0czsKIAl9IGRhdGE7CiB9OwpAQCAtMTcyMSwxMCAmIzQzOzE3MjIsMTkgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKIAlzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhOwogCXN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKmNiY3RsID0gKHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKilyZXBseS0mZ3Q7cGFyYW07CiAJc3RydWN0IHFldGhfc2JwX3BvcnRfZGF0YSAqcXBvcnRzOwomIzQzOwl1MTYgc2JwX3JjOwogCWludCByYzsKIAogCVFFVEhfQ0FSRF9URVhUKGNhcmQsIDIsICYjMzQ7YnJxcHJ0Y2ImIzM0Oyk7Ci0JcmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7CiYjNDM7CXNicF9yYyA9IGNtZC0mZ3Q7ZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlOwomIzQzOwomIzQzOwkvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhOwomIzQzOwkgKiB0cmVhdCBhcyBzdWNjZXNzCiYjNDM7CSAqLwomIzQzOwlpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIICZhbXA7JmFtcDsgIWNtZC0mZ3Q7aGRyLnJldHVybl9jb2RlKQomIzQzOwkJcmMgPSAwOwomIzQzOwllbHNlCiYjNDM7CQlyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTsKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIApAQCAtMTc0MCw2ICYjNDM7MTc1MCw5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsCiAJCWlmIChjYmN0bC0mZ3Q7ZGF0YS5xcG9ydHMuc3RhdGUpCiAJCQkqY2JjdGwtJmd0O2RhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLSZndDtlbnRyeVswXS5zdGF0ZTsKIAl9CiYjNDM7CWlmIChjYmN0bC0mZ3Q7ZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2gpCiYjNDM7CQkqY2JjdGwtJmd0O2RhdGEucXBvcnRzLm9zX21pc21hdGNoID0KJiM0MzsJCQkoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTc0OCwxMyAmIzQzOzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKICAqIEBjYXJkOgkJCSAgIHFldGhfY2FyZCBzdHJ1Y3R1cmUgcG9pbnRlci4KICAqIEByb2xlOiAgIFJvbGUgb2YgdGhlIHBvcnQ6IDAtbm9uZSwgMS1wcmltYXJ5LCAyLXNlY29uZGFyeS4KICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLgomIzQzOyAqIEBvc19taXNtYXRjaDogaWYgbm9uLU5VTEwsIHNldCB0byB0cnVlIHdoZW4gZmlybXdhcmUgcmVwb3J0cwomIzQzOyAqCQkgT1MgZmFtaWx5IG1pc21hdGNoLgogICoKICAqIFJldHVybnMgbmVnYXRpdmUgZXJybm8tY29tcGF0aWJsZSBlcnJvciBpbmRpY2F0aW9uIG9yIDAgb24gc3VjY2Vzcy4KICAqCi0gKiAmIzM5O3JvbGUmIzM5OyBhbmQgJiMzOTtzdGF0ZSYjMzk7IGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLgomIzQzOyAqICYjMzk7cm9sZSYjMzk7LCAmIzM5O3N0YXRlJiMzOTsgYW5kICYjMzk7b3NfbWlzbWF0Y2gmIzM5OyBhcmUgbm90IHVwZGF0ZWQgaW4gY2FzZSBvZgomIzQzOyAqIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLgogICovCiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsCi0JZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKQomIzQzOwllbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLCBlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUsCiYjNDM7CWJvb2wgKm9zX21pc21hdGNoKQogewogCXN0cnVjdCBxZXRoX2NtZF9idWZmZXIgKmlvYjsKIAlzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0gewpAQCAtMTc2Miw2ICYjNDM7MTc3OSw3IEBAIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwKIAkJCS5xcG9ydHMgPSB7CiAJCQkJLnJvbGUgPSByb2xlLAogCQkJCS5zdGF0ZSA9IHN0YXRlLAomIzQzOwkJCQkub3NfbWlzbWF0Y2ggPSBvc19taXNtYXRjaCwKIAkJCX0sCiAJCX0sCiAJfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuYwppbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdGF0aWMgc3NpemVfdCBxZXRoX2JyaWRnZV9wb3J0X3JvbGVfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IHFldGhfY2FyZCAqY2FyZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCWVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7CiYjNDM7CWJvb2wgb3NfbWlzbWF0Y2ggPSBmYWxzZTsKIAlpbnQgcmMgPSAwOwogCWNoYXIgKndvcmQ7CiAKQEAgLTI1LDcgJiM0MzsyNiw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKIAlpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSAmYW1wOyZhbXA7CiAJCQkJCWNhcmQtJmd0O29wdGlvbnMuc2JwLnN1cHBvcnRlZF9mdW5jcykKIAkJcmMgPSBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwKLQkJCSZhbXA7Y2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSwgJmFtcDtzdGF0ZSk7CiYjNDM7CQkJJmFtcDtjYXJkLSZndDtvcHRpb25zLnNicC5yb2xlLCAmYW1wO3N0YXRlLCAmYW1wO29zX21pc21hdGNoKTsKIAlpZiAoIXJjKSB7CiAJCWlmIChzaG93X3N0YXRlKQogCQkJc3dpdGNoIChzdGF0ZSkgewpAQCAtNTIsNiAmIzQzOzUzLDEwIEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJaWYgKHJjKQogCQkJUUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsICYjMzQ7U0JQJTAyeDolMDJ4JiMzNDssCiAJCQkJY2FyZC0mZ3Q7b3B0aW9ucy5zYnAucm9sZSwgc3RhdGUpOwomIzQzOwkJZWxzZSBpZiAoIXNob3dfc3RhdGUgJmFtcDsmYW1wOwomIzQzOwkJCSBjYXJkLSZndDtvcHRpb25zLnNicC5yb2xlID09IFFFVEhfU0JQX1JPTEVfTk9ORSAmYW1wOyZhbXA7CiYjNDM7CQkJIG9zX21pc21hdGNoKQomIzQzOwkJCXJjID0gc3lzZnNfZW1pdChidWYsICYjMzQ7JXMgKE9TIGZhbWlseSBtaXNtYXRjaClcbiYjMzQ7LCB3b3JkKTsKIAkJZWxzZQogCQkJcmMgPSBzeXNmc19lbWl0KGJ1ZiwgJiMzNDslc1xuJiMzNDssIHdvcmQpOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBFdmFsdWF0aW9uOiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsLiBJIG5lZWQgdG8gYXNzZXNzIHRoaXMgcGF0Y2ggdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gTGV0JiMzOTtzIGRpZyBpbi4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaGAsIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jYCwgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGBzMzkwYCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB0aGUgYHFldGhgIG5ldHdvcmsgZHJpdmVyLiBUaGlzIGlzIGxpa2VseSBoYW5kbGluZyBJQk0mIzM5O3MgczM5MCBPU0EtRXhwcmVzcyBvciBIaXBlclNvY2tldHMgbmV0d29yayBjYXJkcy4KCk5vdywgbXkgY3JpdGVyaWEgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkgbmVlZCB0byBzYXkgJiMzNDtubyYjMzQ7IHRvIGZ1enppbmcgaWYgdGhlIHBhdGNoOiAqb25seSogdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdHlwaWNhbCBmdXp6aW5nIHNldHVwcyDigJMgdGhpbmdzIGxpa2UgaGFyZHdhcmUtc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCByZWFsIGhhcmR3YXJlLCBvciBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gdHJpZ2dlciBldmVuIGluIGVtdWxhdGVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGBxZXRoYCBkcml2ZXIgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IGhpdCB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdG9vbHM/IElzIGl0IHJlYWNoYWJsZSBpbiwgc2F5LCBzeXprYWxsZXIgcnVubmluZyBvbiB4ODYgb3IgQVJNNjQsIG9yIGV2ZW4gYSBwbGFpbiBRRU1VIHMzOTAgc2V0dXA/IE9yIGlzIHRoaXMgYSBDQ1cvY2hhbm5lbCBkZXZpY2UgdGhhdCYjMzk7cyAqY29tcGxldGVseSogczM5MC1zcGVjaWZpYz8gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGlzIGBxZXRoYCBkcml2ZXIgZGVwZW5kcyBvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYHFldGhgIHVzaW5nIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBoZWxwIG1lIG1ha2UgdGhlIGNhbGwgb24gd2hldGhlciB0aGlzIHBhdGNoIGlzIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTI4PWNvbmZpZyBTTVNHSVVDVl9FVkVOVFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy0zOC1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzozOTpjb25maWcgUUVUSFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTQwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNTAtXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6NTE6Y29uZmlnIFFFVEhfTDJcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy01Mi1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTYwLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjYxOmNvbmZpZyBRRVRIX0wzXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNjItXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02OS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3MDpjb25maWcgUUVUSF9PU1hcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03MS1cdGRlZl9ib29sICFIQVZFX01BUkNIX1oxNV9GRUFUVVJFU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgUzM5MCBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFMzOTAgYXJjaGl0ZWN0dXJlJiMzOTtzIG5ldHdvcmsgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGJldHdlZW4gbGluZXMgMzUgYW5kIDc1LiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBvcHRpb25zIGFyZSBkZWZpbmVkLCBvciBwZXJoYXBzIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWMgUzM5MCBuZXR3b3JrIGludGVyZmFjZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgYmFzZSBkcml2ZXIgb3B0aW9ucywgd2hpY2ggYWRhcHRlcnMgYXJlIHN1cHBvcnRlZCwgaWYgdGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIGNvbXBpbGUgdGhlIGRyaXZlciwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lhbCBmZWF0dXJlcyBlbmFibGVkIG9yIGRpc2FibGVkIGRlcGVuZGluZyBvbiBob3cgdGhlIHN5c3RlbSBpcyBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXR3b3JrIGRyaXZlcnMgYXJlIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdmFyaW91cyBTMzkwLXNwZWNpZmljIG5ldHdvcmsgaGFyZHdhcmUsIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiBpcyByZWFzb25hYmx5IHdlbGwtY29tbWVudGVkLCBidXQgZXZlbiBpZiBpdCBpc24mIzM5O3QsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBlc3NlbnRpYWwgbG9naWMgcHJldHR5IHF1aWNrbHkuIEkgYW50aWNpcGF0ZSBlbmNvdW50ZXJpbmcgdGhlIHVzdWFsIGBjb25maWdgIHN0YXRlbWVudHMsIGB0cmlzdGF0ZWAgdmFsdWVzLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIEtub3dpbmcgdGhpcyBhcmVhIHdlbGwgd2lsbCBwcm9iYWJseSBwcm92ZSBpbnZhbHVhYmxlIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdFx0ICBzdGFydCB3aXRoIFwmIzM0O0FQUFwmIzM0Oy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBcJiMzNDtzbXNnaXVjdl9hcHBcJiMzNDsuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFFFVEhcbiAgNDA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDQxOlx0XHRwcm9tcHQgXCYjMzQ7R2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDQ1cgXHUwMDI2XHUwMDI2IE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjYgUURJTyBcdTAwMjZcdTAwMjYgRVRIRVJORVRcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJiMzOTtzIE9TQSBFeHByZXNzIG5ldHdvcmsgYWRhcHRlcnMgaW4gUURJTyBtb2RlLFxuICA0NTpcdFx0ICBIaXBlclNvY2tldHMgaW50ZXJmYWNlcyBhbmQgei9WTSB2aXJ0dWFsIE5JQ3MgZm9yIEd1ZXN0IExBTiBhbmRcbiAgNDY6XHRcdCAgVlNXSVRDSC5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXG4gIDQ5Olx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxuICA1MDpcdFxuICA1MTpcdGNvbmZpZyBRRVRIX0wyXG4gIDUyOlx0XHRkZWZfdHJpc3RhdGUgeVxuICA1MzpcdFx0cHJvbXB0IFwmIzM0O3FldGggbGF5ZXIgMiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBRRVRIXG4gIDU1Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICA1NjpcdFx0aGVscFxuICA1NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gYmUgYWJsZSB0byBydW4gcWV0aCBkZXZpY2VzIGluIGxheWVyIDIgbW9kZS5cbiAgNTg6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoX2wyLlxuICA1OTpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSB5LlxuICA2MDpcdFxuICA2MTpcdGNvbmZpZyBRRVRIX0wzXG4gIDYyOlx0XHRkZWZfdHJpc3RhdGUgeVxuICA2MzpcdFx0cHJvbXB0IFwmIzM0O3FldGggbGF5ZXIgMyBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA2NDpcdFx0ZGVwZW5kcyBvbiBRRVRIXG4gIDY1Olx0XHRoZWxwXG4gIDY2Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBiZSBhYmxlIHRvIHJ1biBxZXRoIGRldmljZXMgaW4gbGF5ZXIgMyBtb2RlLlxuICA2NzpcdFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aF9sMy5cbiAgNjg6XHRcdCAgSWYgdW5zdXJlLCBjaG9vc2UgWS5cbiAgNjk6XHRcbiAgNzA6XHRjb25maWcgUUVUSF9PU1hcbiAgNzE6XHRcdGRlZl9ib29sICFIQVZFX01BUkNIX1oxNV9GRUFUVVJFU1xuICA3MjpcdFx0cHJvbXB0IFwmIzM0O3FldGggT1NYIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIFFFVEhcbiAgNzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODUxCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25jZXB0czoKCioqQ2hhbm5lbCBTdWJzeXN0ZW0gQ29uc2lkZXJhdGlvbnMgZm9yIHMzOTAgQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYENDV2AgYW5kIGBRRElPYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgczM5MC1zcGVjaWZpYyBjaGFubmVsIHN1YnN5c3RlbSBjb25jZXB0cywgcmlnaHQ/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzLCBhbmQgbWF5YmUgc29tZSBvZiB0aGUgbnVhbmNlcy4gV2hlcmUgYXJlIHRob3NlIGRlZmluZWQgaW4gdGhlIGtlcm5lbD8gSSYjMzk7bGwgYmV0IGl0JiMzOTtzIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLi4uIFllYWgsIGxldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBgYXJjaC9zMzkwL0tjb25maWdgIGFuZCBgZHJpdmVycy9zMzkwL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhvc2UgS2NvbmZpZ3MgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDQ1cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL0tjb25maWc9ODYwPWVuZG1lbnVcbmFyY2gvczM5MC9LY29uZmlnLTg2MS1cbmFyY2gvczM5MC9LY29uZmlnOjg2Mjpjb25maWcgQ0NXXG5hcmNoL3MzOTAvS2NvbmZpZy04NjMtXHRkZWZfYm9vbCB5XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZz0zND1jb25maWcgVE4zMjE1X0NPTlNPTEVcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTQxLVxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZzo0Mjpjb25maWcgQ0NXX0NPTlNPTEVcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctNDMtXHRkZWZfYm9vbCB5IGlmIFROMzIxNV9DT05TT0xFIHx8IFROMzI3MF9DT05TT0xFXG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTcwPWNvbmZpZyBRRVRIX09TWFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03Ny1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3ODpjb25maWcgQ0NXR1JPVVBcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03OS1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0MAoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA2NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IGBDT05GSUdfQ0NXYCBpcyBzcGVjaWZpYyB0byB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBjb25maWd1cmF0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGBxZXRoYCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGNvbmNlcm4sIHNpbmNlIGl0JiMzOTtzIGFuIElCTSBzMzkwIG1haW5mcmFtZSBPU0EvSGlwZXJTb2NrZXRzIG5ldHdvcmsgYWRhcHRlciBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gUUVNVSBldmVuICplbXVsYXRlKiBgcWV0aGAgb3IgaXRzIENDVyBpbnRlcmZhY2U/JiMzNDsKCkkgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbjogUUVNVSwgZXZlbiB0aGUgYHFlbXUtc3lzdGVtLXMzOTB4YCB2YXJpYW50LCBwcmltYXJpbHkgc3VwcG9ydHMgdmlydGlvLWNjdyBhbmQgc2ltaWxhciBwYXJhdmlydHVhbGl6ZWQgZGV2aWNlcy4gSXQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgSUJNLXByb3ByaWV0YXJ5IGhhcmR3YXJlIG9mIGBxZXRoYCwgd2hpY2ggcmVsaWVzIG9uIE9TQSBFeHByZXNzIGFuZCBIaXBlclNvY2tldHMuIFRoaXMgbWVhbnMgcmVhbCBtYWluZnJhbWUgaGFyZHdhcmUgKHovQXJjaGl0ZWN0dXJlLCBMUEFSLCB6L1ZNLCBPU0EvSGlwZXJTb2NrZXRzKSBpcyBuZWVkZWQuCgpJIHJlY2FsbCBhIHJlbGV2YW50IHJ1bGUgYWJvdXQgZnV6emluZzogJiMzNDtSZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDsgVGhpcyBpcyBjcnVjaWFsLiBOb3csIGxldCYjMzk7cyBhbmFseXplIHRoZSBwYXRjaCYjMzk7cyBzcGVjaWZpYyBjb2RlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiYCwgYHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c2AsIGFuZCBgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3dgLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBoYW5kbGVzIGEgc3BlY2lmaWMgZXJyb3IgY29kZSwgYElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIYCwgZnJvbSBxZXRoIEwyICh3aGVuIHF1ZXJ5aW5nIGJyaWRnZSBwb3J0IHJvbGVzIC8gc3RhdGVzKS4gUmF0aGVyIHRoYW4gZmFpbGluZywgdGhpcyBpcyB0cmVhdGVkIGFzIGEgc3VjY2VzczsgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlIGFib3V0IGFuIE9TIGZhbWlseSBtaXNtYXRjaCBpcyBwcmludGVkIGluIHN5c2ZzLgoKR2l2ZW4gdGhhdCBgcWV0aGAgcmVsaWVzIG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgYW5kIGl0cyBhcmNoaXRlY3R1cmUgZHJpdmVycyByZXF1aXJlIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlLCB0aGUgcGF0Y2gmIzM5O3MgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQgaXMgdGllZCB0byB2ZXJ5IHNwZWNpZmljIG1haW5mcmFtZSBoYXJkd2FyZSwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgYWZ0ZXIgcmV2aWV3aW5nIGFsbCByZXF1aXJlbWVudHMsIEkgY2FuIGNvbmZpZGVudGx5IHNldDoKLSAgIGBXb3J0aEZ1enppbmc6IGZhbHNlLmAKLSAgIGBFbmFibGVDb25maWdzOiBudWxsYAotICAgYEZvY3VzU3ltYm9sczogbnVsbGAKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHFldGhgIGRyaXZlciwgd2hpY2ggbmVjZXNzaXRhdGVzIHNwZWNpZmljIHMzOTAtYmFzZWQgaGFyZHdhcmUgKENDVy9RRElPKSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDY6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA2OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNjoyOToyNy4yOTQ5ODU4MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUwNTIxNjMxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MjcuMjk0OTkwNjc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ3NDk1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MDU1ZjhkOTMzN2RmZTU2M2ZiZWUxOTg4NmQyODdiNjU4ZjllMTE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMDY6Mjk6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmggYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaFxcbmluZGV4IDdjNjQ2ZTJmZWQ3ZTUuLmY5NDk3NWU5NzBjYWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaFxcbkBAIC0xMyw3ICsxMyw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpxZXRoX2wyX2F0dHJfZ3JvdXBzW107XFxuIFxcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsXFxuLVxcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSk7XFxuK1xcdFxcdFxcdFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcXG4rXFx0XFx0XFx0XFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xcbiBpbnQgcWV0aF9icmlkZ2Vwb3J0X3NldHJvbGUoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgZW51bSBxZXRoX3NicF9yb2xlcyByb2xlKTtcXG4gaW50IHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoc3RydWN0IHFldGhfY2FyZCAqY2FyZCwgaW50IGVuYWJsZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xcbmluZGV4IGE5ZTdkMWQ2MzdhMjAuLjI5MzVjMmVjYzMxNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmNcXG5AQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIHZvaWQgcWV0aF9sMl9zZXR1cF9icmlkZ2Vwb3J0X2F0dHJzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQpXFxuIFxcdFxcdHFldGhfYnJpZGdlcG9ydF9zZXRyb2xlKGNhcmQsIGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUpO1xcbiBcXHRcXHQvKiBMZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHN0b3JlZCByb2xlIHZhbHVlLiAqL1xcbiBcXHRcXHRxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwgXFx1MDAyNmNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIE5VTEwsIE5VTEwpO1xcbiBcXHR9XFxuIFxcdGlmIChjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5ob3N0bm90aWZpY2F0aW9uKSB7XFxuIFxcdFxcdGlmIChxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KGNhcmQsIDEpKVxcbkBAIC0xNTQ1LDYgKzE1NDUsNyBAQCBzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIHtcXG4gXFx0XFx0c3RydWN0IHtcXG4gXFx0XFx0XFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcXG4gXFx0XFx0XFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlO1xcbitcXHRcXHRcXHRib29sICpvc19taXNtYXRjaDtcXG4gXFx0XFx0fSBxcG9ydHM7XFxuIFxcdH0gZGF0YTtcXG4gfTtcXG5AQCAtMTcyMSwxMCArMTcyMiwxOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxcbiBcXHRzdHJ1Y3QgcWV0aF9pcGFfY21kICpjbWQgPSAoc3RydWN0IHFldGhfaXBhX2NtZCAqKSBkYXRhO1xcbiBcXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsICpjYmN0bCA9IChzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsICopcmVwbHktXFx1MDAzZXBhcmFtO1xcbiBcXHRzdHJ1Y3QgcWV0aF9zYnBfcG9ydF9kYXRhICpxcG9ydHM7XFxuK1xcdHUxNiBzYnBfcmM7XFxuIFxcdGludCByYztcXG4gXFxuIFxcdFFFVEhfQ0FSRF9URVhUKGNhcmQsIDIsIFxcXCJicnFwcnRjYlxcXCIpO1xcbi1cXHRyYyA9IHFldGhfYnJpZGdlcG9ydF9tYWtlcmMoY2FyZCwgY21kKTtcXG4rXFx0c2JwX3JjID0gY21kLVxcdTAwM2VkYXRhLnNicC5oZHIucmV0dXJuX2NvZGU7XFxuK1xcbitcXHQvKiBvbiBPUyBmYW1pbHkgbWlzbWF0Y2gsIHF1ZXJ5IHN0aWxsIHJldHVybnMgdmFsaWQgcG9ydCBkYXRhO1xcbitcXHQgKiB0cmVhdCBhcyBzdWNjZXNzXFxuK1xcdCAqL1xcbitcXHRpZiAoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIIFxcdTAwMjZcXHUwMDI2ICFjbWQtXFx1MDAzZWhkci5yZXR1cm5fY29kZSlcXG4rXFx0XFx0cmMgPSAwO1xcbitcXHRlbHNlXFxuK1xcdFxcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X21ha2VyYyhjYXJkLCBjbWQpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuQEAgLTE3NDAsNiArMTc1MCw5IEBAIHN0YXRpYyBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzX2NiKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdGlmIChjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXFxuIFxcdFxcdFxcdCpjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUgPSBxcG9ydHMtXFx1MDAzZWVudHJ5WzBdLnN0YXRlO1xcbiBcXHR9XFxuK1xcdGlmIChjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2gpXFxuK1xcdFxcdCpjYmN0bC1cXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2ggPVxcbitcXHRcXHRcXHQoc2JwX3JjID09IElQQV9SQ19TQlBfSVFEX09TX01JU01BVENIKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE3NDgsMTMgKzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcXG4gICogQGNhcmQ6XFx0XFx0XFx0ICAgcWV0aF9jYXJkIHN0cnVjdHVyZSBwb2ludGVyLlxcbiAgKiBAcm9sZTogICBSb2xlIG9mIHRoZSBwb3J0OiAwLW5vbmUsIDEtcHJpbWFyeSwgMi1zZWNvbmRhcnkuXFxuICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLlxcbisgKiBAb3NfbWlzbWF0Y2g6IGlmIG5vbi1OVUxMLCBzZXQgdG8gdHJ1ZSB3aGVuIGZpcm13YXJlIHJlcG9ydHNcXG4rICpcXHRcXHQgT1MgZmFtaWx5IG1pc21hdGNoLlxcbiAgKlxcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXFxuICAqXFxuLSAqICdyb2xlJyBhbmQgJ3N0YXRlJyBhcmUgbm90IHVwZGF0ZWQgaW4gY2FzZSBvZiBoYXJkd2FyZSBvcGVyYXRpb24gZmFpbHVyZS5cXG4rICogJ3JvbGUnLCAnc3RhdGUnIGFuZCAnb3NfbWlzbWF0Y2gnIGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mXFxuKyAqIGhhcmR3YXJlIG9wZXJhdGlvbiBmYWlsdXJlLlxcbiAgKi9cXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxcbi1cXHRlbnVtIHFldGhfc2JwX3JvbGVzICpyb2xlLCBlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUpXFxuK1xcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsIGVudW0gcWV0aF9zYnBfc3RhdGVzICpzdGF0ZSxcXG4rXFx0Ym9vbCAqb3NfbWlzbWF0Y2gpXFxuIHtcXG4gXFx0c3RydWN0IHFldGhfY21kX2J1ZmZlciAqaW9iO1xcbiBcXHRzdHJ1Y3QgX3FldGhfc2JwX2NiY3RsIGNiY3RsID0ge1xcbkBAIC0xNzYyLDYgKzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXFxuIFxcdFxcdFxcdC5xcG9ydHMgPSB7XFxuIFxcdFxcdFxcdFxcdC5yb2xlID0gcm9sZSxcXG4gXFx0XFx0XFx0XFx0LnN0YXRlID0gc3RhdGUsXFxuK1xcdFxcdFxcdFxcdC5vc19taXNtYXRjaCA9IG9zX21pc21hdGNoLFxcbiBcXHRcXHRcXHR9LFxcbiBcXHRcXHR9LFxcbiBcXHR9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNcXG5pbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9zeXMuY1xcbkBAIC0xNSw2ICsxNSw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4ge1xcbiBcXHRzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIFxcdGVudW0gcWV0aF9zYnBfc3RhdGVzIHN0YXRlID0gUUVUSF9TQlBfU1RBVEVfSU5BQ1RJVkU7XFxuK1xcdGJvb2wgb3NfbWlzbWF0Y2ggPSBmYWxzZTtcXG4gXFx0aW50IHJjID0gMDtcXG4gXFx0Y2hhciAqd29yZDtcXG4gXFxuQEAgLTI1LDcgKzI2LDcgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHRcXHRjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5zdXBwb3J0ZWRfZnVuY3MpXFxuIFxcdFxcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsXFxuLVxcdFxcdFxcdFxcdTAwMjZjYXJkLVxcdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcXHUwMDI2c3RhdGUpO1xcbitcXHRcXHRcXHRcXHUwMDI2Y2FyZC1cXHUwMDNlb3B0aW9ucy5zYnAucm9sZSwgXFx1MDAyNnN0YXRlLCBcXHUwMDI2b3NfbWlzbWF0Y2gpO1xcbiBcXHRpZiAoIXJjKSB7XFxuIFxcdFxcdGlmIChzaG93X3N0YXRlKVxcbiBcXHRcXHRcXHRzd2l0Y2ggKHN0YXRlKSB7XFxuQEAgLTUyLDYgKzUzLDEwIEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRRRVRIX0NBUkRfVEVYVF8oY2FyZCwgMiwgXFxcIlNCUCUwMng6JTAyeFxcXCIsXFxuIFxcdFxcdFxcdFxcdGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIHN0YXRlKTtcXG4rXFx0XFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IGNhcmQtXFx1MDAzZW9wdGlvbnMuc2JwLnJvbGUgPT0gUUVUSF9TQlBfUk9MRV9OT05FIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBvc19taXNtYXRjaClcXG4rXFx0XFx0XFx0cmMgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVzIChPUyBmYW1pbHkgbWlzbWF0Y2gpXFxcXG5cXFwiLCB3b3JkKTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXNcXFxcblxcXCIsIHdvcmQpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjI3LjY3MDM1MDU4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0Njc2NzgwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWV0aCBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9zMzkwL25ldCksIHNwZWNpZmljYWxseSBoYW5kbGluZyBvZiBicmlkZ2UgcG9ydCBxdWVyeSByZXNwb25zZXMgYW5kIHN5c2ZzIG91dHB1dCBmb3IgSUJNIHMzOTAgT1NBLUV4cHJlc3MvSGlwZXJTb2NrZXRzIGRldmljZXMuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gczM5MCBtYWluZnJhbWVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBjbG91ZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzA1NWY4ZDkzMzdkZmU1NjNmYmVlMTk4ODZkMjg3YjY1OGY5ZTExNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDY6Mjk6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDIuaCBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5pbmRleCA3YzY0NmUyZmVkN2U1Li5mOTQ5NzVlOTcwY2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhcbisrKyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMi5oXG5AQCAtMTMsNyArMTMsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqcWV0aF9sMl9hdHRyX2dyb3Vwc1tdO1xuIFxuIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbiBcdFx0XHRcdGVudW0gcWV0aF9zYnBfcm9sZXMgKnJvbGUsXG4tXHRcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGUpO1xuK1x0XHRcdFx0ZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLFxuK1x0XHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2gpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLCBlbnVtIHFldGhfc2JwX3JvbGVzIHJvbGUpO1xuIGludCBxZXRoX2JyaWRnZXBvcnRfYW5fc2V0KHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsIGludCBlbmFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9sMl9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfbWFpbi5jXG5pbmRleCBhOWU3ZDFkNjM3YTIwLi4yOTM1YzJlY2MzMTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY1xuQEAgLTExNTgsNyArMTE1OCw3IEBAIHN0YXRpYyB2b2lkIHFldGhfbDJfc2V0dXBfYnJpZGdlcG9ydF9hdHRycyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkKVxuIFx0XHRxZXRoX2JyaWRnZXBvcnRfc2V0cm9sZShjYXJkLCBjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUpO1xuIFx0XHQvKiBMZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHN0b3JlZCByb2xlIHZhbHVlLiAqL1xuIFx0XHRxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHMoY2FyZCwgXHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLFxuLVx0XHRcdFx0XHQgICAgTlVMTCk7XG4rXHRcdFx0XHRcdCAgICBOVUxMLCBOVUxMKTtcbiBcdH1cbiBcdGlmIChjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLmhvc3Rub3RpZmljYXRpb24pIHtcbiBcdFx0aWYgKHFldGhfYnJpZGdlcG9ydF9hbl9zZXQoY2FyZCwgMSkpXG5AQCAtMTU0NSw2ICsxNTQ1LDcgQEAgc3RydWN0IF9xZXRoX3NicF9jYmN0bCB7XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZTtcbiBcdFx0XHRlbnVtIHFldGhfc2JwX3N0YXRlcyAqc3RhdGU7XG4rXHRcdFx0Ym9vbCAqb3NfbWlzbWF0Y2g7XG4gXHRcdH0gcXBvcnRzO1xuIFx0fSBkYXRhO1xuIH07XG5AQCAtMTcyMSwxMCArMTcyMiwxOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0c3RydWN0IHFldGhfaXBhX2NtZCAqY21kID0gKHN0cnVjdCBxZXRoX2lwYV9jbWQgKikgZGF0YTtcbiBcdHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKmNiY3RsID0gKHN0cnVjdCBfcWV0aF9zYnBfY2JjdGwgKilyZXBseS1cdTAwM2VwYXJhbTtcbiBcdHN0cnVjdCBxZXRoX3NicF9wb3J0X2RhdGEgKnFwb3J0cztcbitcdHUxNiBzYnBfcmM7XG4gXHRpbnQgcmM7XG4gXG4gXHRRRVRIX0NBUkRfVEVYVChjYXJkLCAyLCBcImJycXBydGNiXCIpO1xuLVx0cmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7XG4rXHRzYnBfcmMgPSBjbWQtXHUwMDNlZGF0YS5zYnAuaGRyLnJldHVybl9jb2RlO1xuK1xuK1x0Lyogb24gT1MgZmFtaWx5IG1pc21hdGNoLCBxdWVyeSBzdGlsbCByZXR1cm5zIHZhbGlkIHBvcnQgZGF0YTtcbitcdCAqIHRyZWF0IGFzIHN1Y2Nlc3NcbitcdCAqL1xuK1x0aWYgKHNicF9yYyA9PSBJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSCBcdTAwMjZcdTAwMjYgIWNtZC1cdTAwM2VoZHIucmV0dXJuX2NvZGUpXG4rXHRcdHJjID0gMDtcbitcdGVsc2VcbitcdFx0cmMgPSBxZXRoX2JyaWRnZXBvcnRfbWFrZXJjKGNhcmQsIGNtZCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbkBAIC0xNzQwLDYgKzE3NTAsOSBAQCBzdGF0aWMgaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYihzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuIFx0XHRpZiAoY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMuc3RhdGUpXG4gXHRcdFx0KmNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLnN0YXRlID0gcXBvcnRzLVx1MDAzZWVudHJ5WzBdLnN0YXRlO1xuIFx0fVxuK1x0aWYgKGNiY3RsLVx1MDAzZWRhdGEucXBvcnRzLm9zX21pc21hdGNoKVxuK1x0XHQqY2JjdGwtXHUwMDNlZGF0YS5xcG9ydHMub3NfbWlzbWF0Y2ggPVxuK1x0XHRcdChzYnBfcmMgPT0gSVBBX1JDX1NCUF9JUURfT1NfTUlTTUFUQ0gpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3NDgsMTMgKzE3NjEsMTcgQEAgc3RhdGljIGludCBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNfY2Ioc3RydWN0IHFldGhfY2FyZCAqY2FyZCxcbiAgKiBAY2FyZDpcdFx0XHQgICBxZXRoX2NhcmQgc3RydWN0dXJlIHBvaW50ZXIuXG4gICogQHJvbGU6ICAgUm9sZSBvZiB0aGUgcG9ydDogMC1ub25lLCAxLXByaW1hcnksIDItc2Vjb25kYXJ5LlxuICAqIEBzdGF0ZTogIFN0YXRlIG9mIHRoZSBwb3J0OiAwLWluYWN0aXZlLCAxLXN0YW5kYnksIDItYWN0aXZlLlxuKyAqIEBvc19taXNtYXRjaDogaWYgbm9uLU5VTEwsIHNldCB0byB0cnVlIHdoZW4gZmlybXdhcmUgcmVwb3J0c1xuKyAqXHRcdCBPUyBmYW1pbHkgbWlzbWF0Y2guXG4gICpcbiAgKiBSZXR1cm5zIG5lZ2F0aXZlIGVycm5vLWNvbXBhdGlibGUgZXJyb3IgaW5kaWNhdGlvbiBvciAwIG9uIHN1Y2Nlc3MuXG4gICpcbi0gKiAncm9sZScgYW5kICdzdGF0ZScgYXJlIG5vdCB1cGRhdGVkIGluIGNhc2Ugb2YgaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4rICogJ3JvbGUnLCAnc3RhdGUnIGFuZCAnb3NfbWlzbWF0Y2gnIGFyZSBub3QgdXBkYXRlZCBpbiBjYXNlIG9mXG4rICogaGFyZHdhcmUgb3BlcmF0aW9uIGZhaWx1cmUuXG4gICovXG4gaW50IHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0cyhzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkLFxuLVx0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlKVxuK1x0ZW51bSBxZXRoX3NicF9yb2xlcyAqcm9sZSwgZW51bSBxZXRoX3NicF9zdGF0ZXMgKnN0YXRlLFxuK1x0Ym9vbCAqb3NfbWlzbWF0Y2gpXG4ge1xuIFx0c3RydWN0IHFldGhfY21kX2J1ZmZlciAqaW9iO1xuIFx0c3RydWN0IF9xZXRoX3NicF9jYmN0bCBjYmN0bCA9IHtcbkBAIC0xNzYyLDYgKzE3NzksNyBAQCBpbnQgcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKHN0cnVjdCBxZXRoX2NhcmQgKmNhcmQsXG4gXHRcdFx0LnFwb3J0cyA9IHtcbiBcdFx0XHRcdC5yb2xlID0gcm9sZSxcbiBcdFx0XHRcdC5zdGF0ZSA9IHN0YXRlLFxuK1x0XHRcdFx0Lm9zX21pc21hdGNoID0gb3NfbWlzbWF0Y2gsXG4gXHRcdFx0fSxcbiBcdFx0fSxcbiBcdH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG5pbmRleCA3ZjU5MmY5MTI1MTcyLi43MTAxYmU2MmViMWQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jXG4rKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbDJfc3lzLmNcbkBAIC0xNSw2ICsxNSw3IEBAIHN0YXRpYyBzc2l6ZV90IHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbiB7XG4gXHRzdHJ1Y3QgcWV0aF9jYXJkICpjYXJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRlbnVtIHFldGhfc2JwX3N0YXRlcyBzdGF0ZSA9IFFFVEhfU0JQX1NUQVRFX0lOQUNUSVZFO1xuK1x0Ym9vbCBvc19taXNtYXRjaCA9IGZhbHNlO1xuIFx0aW50IHJjID0gMDtcbiBcdGNoYXIgKndvcmQ7XG4gXG5AQCAtMjUsNyArMjYsNyBAQCBzdGF0aWMgc3NpemVfdCBxZXRoX2JyaWRnZV9wb3J0X3JvbGVfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRpZiAocWV0aF9jYXJkX2h3X2lzX3JlYWNoYWJsZShjYXJkKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdFx0Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5zdXBwb3J0ZWRfZnVuY3MpXG4gXHRcdHJjID0gcWV0aF9icmlkZ2Vwb3J0X3F1ZXJ5X3BvcnRzKGNhcmQsXG4tXHRcdFx0XHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcdTAwMjZzdGF0ZSk7XG4rXHRcdFx0XHUwMDI2Y2FyZC1cdTAwM2VvcHRpb25zLnNicC5yb2xlLCBcdTAwMjZzdGF0ZSwgXHUwMDI2b3NfbWlzbWF0Y2gpO1xuIFx0aWYgKCFyYykge1xuIFx0XHRpZiAoc2hvd19zdGF0ZSlcbiBcdFx0XHRzd2l0Y2ggKHN0YXRlKSB7XG5AQCAtNTIsNiArNTMsMTAgQEAgc3RhdGljIHNzaXplX3QgcWV0aF9icmlkZ2VfcG9ydF9yb2xlX3N0YXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0UUVUSF9DQVJEX1RFWFRfKGNhcmQsIDIsIFwiU0JQJTAyeDolMDJ4XCIsXG4gXHRcdFx0XHRjYXJkLVx1MDAzZW9wdGlvbnMuc2JwLnJvbGUsIHN0YXRlKTtcbitcdFx0ZWxzZSBpZiAoIXNob3dfc3RhdGUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IGNhcmQtXHUwMDNlb3B0aW9ucy5zYnAucm9sZSA9PSBRRVRIX1NCUF9ST0xFX05PTkUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IG9zX21pc21hdGNoKVxuK1x0XHRcdHJjID0gc3lzZnNfZW1pdChidWYsIFwiJXMgKE9TIGZhbWlseSBtaXNtYXRjaClcXG5cIiwgd29yZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHRyYyA9IHN5c2ZzX2VtaXQoYnVmLCBcIiVzXFxuXCIsIHdvcmQpO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MjcuNjcwMzUxODAzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEwOTU1MDU1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggRXZhbHVhdGlvbjogRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBMZXQncyBkaWcgaW4uIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyLmhgLCBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX21haW4uY2AsIGFuZCBgZHJpdmVycy9zMzkwL25ldC9xZXRoX2wyX3N5cy5jYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBgczM5MGAgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIGBxZXRoYCBuZXR3b3JrIGRyaXZlci4gVGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgSUJNJ3MgczM5MCBPU0EtRXhwcmVzcyBvciBIaXBlclNvY2tldHMgbmV0d29yayBjYXJkcy5cblxuTm93LCBteSBjcml0ZXJpYSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBuZWVkIHRvIHNheSBcIm5vXCIgdG8gZnV6emluZyBpZiB0aGUgcGF0Y2g6ICpvbmx5KiB0b3VjaGVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBzZXR1cHMg4oCTIHRoaW5ncyBsaWtlIGhhcmR3YXJlLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBoYXJkd2FyZSwgb3IgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgZXZlbiBpbiBlbXVsYXRlZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGBxZXRoYCBkcml2ZXIgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IGhpdCB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdG9vbHM/IElzIGl0IHJlYWNoYWJsZSBpbiwgc2F5LCBzeXprYWxsZXIgcnVubmluZyBvbiB4ODYgb3IgQVJNNjQsIG9yIGV2ZW4gYSBwbGFpbiBRRU1VIHMzOTAgc2V0dXA/IE9yIGlzIHRoaXMgYSBDQ1cvY2hhbm5lbCBkZXZpY2UgdGhhdCdzICpjb21wbGV0ZWx5KiBzMzkwLXNwZWNpZmljPyBJIG5lZWQgdG8ga25vdyB3aGF0IHRoaXMgYHFldGhgIGRyaXZlciBkZXBlbmRzIG9uLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgcWV0aGAgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhlbHAgbWUgbWFrZSB0aGUgY2FsbCBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6MzguNzY1ODU5NjgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzMzMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBRRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvczM5MC9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTI4PWNvbmZpZyBTTVNHSVVDVl9FVkVOVFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzozOTpjb25maWcgUUVUSFxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy00MC1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTUwLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo1MTpjb25maWcgUUVUSF9MMlxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy01Mi1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo2MTpjb25maWcgUUVUSF9MM1xcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02Mi1cXHRkZWZfdHJpc3RhdGUgeVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTY5LVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo3MDpjb25maWcgUUVUSF9PU1hcXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNzEtXFx0ZGVmX2Jvb2wgIUhBVkVfTUFSQ0hfWjE1X0ZFQVRVUkVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjM4LjgyMjE5Njk5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyODk1NzEwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBTMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFMzOTAgYXJjaGl0ZWN0dXJlJ3MgbmV0d29yayBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCwgZm9jdXNpbmcgb24gdGhlIHNlY3Rpb24gYmV0d2VlbiBsaW5lcyAzNSBhbmQgNzUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIG9wdGlvbnMgYXJlIGRlZmluZWQsIG9yIHBlcmhhcHMgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpYyBTMzkwIG5ldHdvcmsgaW50ZXJmYWNlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIGJhc2UgZHJpdmVyIG9wdGlvbnMsIHdoaWNoIGFkYXB0ZXJzIGFyZSBzdXBwb3J0ZWQsIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgd2F5cyB0byBjb21waWxlIHRoZSBkcml2ZXIsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpYWwgZmVhdHVyZXMgZW5hYmxlZCBvciBkaXNhYmxlZCBkZXBlbmRpbmcgb24gaG93IHRoZSBzeXN0ZW0gaXMgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29yayBkcml2ZXJzIGFyZSBjb250cm9sbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgUzM5MC1zcGVjaWZpYyBuZXR3b3JrIGhhcmR3YXJlLCBhbmQgdGhlIHNvZnR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gaXMgcmVhc29uYWJseSB3ZWxsLWNvbW1lbnRlZCwgYnV0IGV2ZW4gaWYgaXQgaXNuJ3QsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBlc3NlbnRpYWwgbG9naWMgcHJldHR5IHF1aWNrbHkuIEkgYW50aWNpcGF0ZSBlbmNvdW50ZXJpbmcgdGhlIHVzdWFsIGBjb25maWdgIHN0YXRlbWVudHMsIGB0cmlzdGF0ZWAgdmFsdWVzLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIEtub3dpbmcgdGhpcyBhcmVhIHdlbGwgd2lsbCBwcm9iYWJseSBwcm92ZSBpbnZhbHVhYmxlIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTY1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6Mjk6NDUuMTExNzcxOTQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdFxcdCAgc3RhcnQgd2l0aCBcXFwiQVBQXFxcIi5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTS4gVGhlIG1vZHVsZSBuYW1lIGlzIFxcXCJzbXNnaXVjdl9hcHBcXFwiLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgUUVUSFxcbiAgNDA6XFx0XFx0ZGVmX3RyaXN0YXRlIHlcXG4gIDQxOlxcdFxcdHByb21wdCBcXFwiR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0NXIFxcdTAwMjZcXHUwMDI2IE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUIFxcdTAwMjZcXHUwMDI2IFFESU8gXFx1MDAyNlxcdTAwMjYgRVRIRVJORVRcXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJ3MgT1NBIEV4cHJlc3MgbmV0d29yayBhZGFwdGVycyBpbiBRRElPIG1vZGUsXFxuICA0NTpcXHRcXHQgIEhpcGVyU29ja2V0cyBpbnRlcmZhY2VzIGFuZCB6L1ZNIHZpcnR1YWwgTklDcyBmb3IgR3Vlc3QgTEFOIGFuZFxcbiAgNDY6XFx0XFx0ICBWU1dJVENILlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNLlxcbiAgNDk6XFx0XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aC5cXG4gIDUwOlxcdFxcbiAgNTE6XFx0Y29uZmlnIFFFVEhfTDJcXG4gIDUyOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICA1MzpcXHRcXHRwcm9tcHQgXFxcInFldGggbGF5ZXIgMiBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDU0OlxcdFxcdGRlcGVuZHMgb24gUUVUSFxcbiAgNTU6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDU2OlxcdFxcdGhlbHBcXG4gIDU3OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGJlIGFibGUgdG8gcnVuIHFldGggZGV2aWNlcyBpbiBsYXllciAyIG1vZGUuXFxuICA1ODpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgcWV0aF9sMi5cXG4gIDU5OlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgeS5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0Y29uZmlnIFFFVEhfTDNcXG4gIDYyOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICA2MzpcXHRcXHRwcm9tcHQgXFxcInFldGggbGF5ZXIgMyBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDY0OlxcdFxcdGRlcGVuZHMgb24gUUVUSFxcbiAgNjU6XFx0XFx0aGVscFxcbiAgNjY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gYmUgYWJsZSB0byBydW4gcWV0aCBkZXZpY2VzIGluIGxheWVyIDMgbW9kZS5cXG4gIDY3OlxcdFxcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSBjaG9vc2UgTS4gVGhlIG1vZHVsZSBuYW1lIGlzIHFldGhfbDMuXFxuICA2ODpcXHRcXHQgIElmIHVuc3VyZSwgY2hvb3NlIFkuXFxuICA2OTpcXHRcXG4gIDcwOlxcdGNvbmZpZyBRRVRIX09TWFxcbiAgNzE6XFx0XFx0ZGVmX2Jvb2wgIUhBVkVfTUFSQ0hfWjE1X0ZFQVRVUkVTXFxuICA3MjpcXHRcXHRwcm9tcHQgXFxcInFldGggT1NYIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgNzM6XFx0XFx0ZGVwZW5kcyBvbiBRRVRIXFxuICA3NDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjI5OjQ1LjExMTg1MTI1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMDYzNzE3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25jZXB0czpcblxuKipDaGFubmVsIFN1YnN5c3RlbSBDb25zaWRlcmF0aW9ucyBmb3IgczM5MCBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYENDV2AgYW5kIGBRRElPYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgczM5MC1zcGVjaWZpYyBjaGFubmVsIHN1YnN5c3RlbSBjb25jZXB0cywgcmlnaHQ/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzLCBhbmQgbWF5YmUgc29tZSBvZiB0aGUgbnVhbmNlcy4gV2hlcmUgYXJlIHRob3NlIGRlZmluZWQgaW4gdGhlIGtlcm5lbD8gSSdsbCBiZXQgaXQncyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4uLiBZZWFoLCBsZXQncyBzdGFydCBieSBjaGVja2luZyBgYXJjaC9zMzkwL0tjb25maWdgIGFuZCBgZHJpdmVycy9zMzkwL0tjb25maWdgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZGVmaW5pdGlvbnMgYW5kIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aG9zZSBLY29uZmlncyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjMwOjQ1LjE3NTU3MjMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTczMDE5MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQ1dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL0tjb25maWc9ODYwPWVuZG1lbnVcXG5hcmNoL3MzOTAvS2NvbmZpZy04NjEtXFxuYXJjaC9zMzkwL0tjb25maWc6ODYyOmNvbmZpZyBDQ1dcXG5hcmNoL3MzOTAvS2NvbmZpZy04NjMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZz0zND1jb25maWcgVE4zMjE1X0NPTlNPTEVcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctNDEtXFxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZzo0Mjpjb25maWcgQ0NXX0NPTlNPTEVcXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTQzLVxcdGRlZl9ib29sIHkgaWYgVE4zMjE1X0NPTlNPTEUgfHwgVE4zMjcwX0NPTlNPTEVcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz03MD1jb25maWcgUUVUSF9PU1hcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6Nzg6Y29uZmlnIENDV0dST1VQXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA2OjMwOjQ3LjE0ODU5NjQ4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA1MTk4NTAwMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgQ09ORklHX0NDV2AgaXMgc3BlY2lmaWMgdG8gdGhlIGBhcmNoL3MzOTAvS2NvbmZpZ2AgY29uZmlndXJhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBgcWV0aGAgYXMgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLCBzaW5jZSBpdCdzIGFuIElCTSBzMzkwIG1haW5mcmFtZSBPU0EvSGlwZXJTb2NrZXRzIG5ldHdvcmsgYWRhcHRlciBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gUUVNVSBldmVuICplbXVsYXRlKiBgcWV0aGAgb3IgaXRzIENDVyBpbnRlcmZhY2U/XCJcblxuSSBxdWlja2x5IGNvbmZpcm0gbXkgc3VzcGljaW9uOiBRRU1VLCBldmVuIHRoZSBgcWVtdS1zeXN0ZW0tczM5MHhgIHZhcmlhbnQsIHByaW1hcmlseSBzdXBwb3J0cyB2aXJ0aW8tY2N3IGFuZCBzaW1pbGFyIHBhcmF2aXJ0dWFsaXplZCBkZXZpY2VzLiBJdCBkb2Vzbid0IGVtdWxhdGUgdGhlIElCTS1wcm9wcmlldGFyeSBoYXJkd2FyZSBvZiBgcWV0aGAsIHdoaWNoIHJlbGllcyBvbiBPU0EgRXhwcmVzcyBhbmQgSGlwZXJTb2NrZXRzLiBUaGlzIG1lYW5zIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlICh6L0FyY2hpdGVjdHVyZSwgTFBBUiwgei9WTSwgT1NBL0hpcGVyU29ja2V0cykgaXMgbmVlZGVkLlxuXG5JIHJlY2FsbCBhIHJlbGV2YW50IHJ1bGUgYWJvdXQgZnV6emluZzogXCJSZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIgVGhpcyBpcyBjcnVjaWFsLiBOb3csIGxldCdzIGFuYWx5emUgdGhlIHBhdGNoJ3Mgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zLiBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHFldGhfYnJpZGdlcG9ydF9xdWVyeV9wb3J0c19jYmAsIGBxZXRoX2JyaWRnZXBvcnRfcXVlcnlfcG9ydHNgLCBhbmQgYHFldGhfYnJpZGdlX3BvcnRfcm9sZV9zdGF0ZV9zaG93YC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgaGFuZGxlcyBhIHNwZWNpZmljIGVycm9yIGNvZGUsIGBJUEFfUkNfU0JQX0lRRF9PU19NSVNNQVRDSGAsIGZyb20gcWV0aCBMMiAod2hlbiBxdWVyeWluZyBicmlkZ2UgcG9ydCByb2xlcyAvIHN0YXRlcykuIFJhdGhlciB0aGFuIGZhaWxpbmcsIHRoaXMgaXMgdHJlYXRlZCBhcyBhIHN1Y2Nlc3M7IGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSBhYm91dCBhbiBPUyBmYW1pbHkgbWlzbWF0Y2ggaXMgcHJpbnRlZCBpbiBzeXNmcy5cblxuR2l2ZW4gdGhhdCBgcWV0aGAgcmVsaWVzIG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgYW5kIGl0cyBhcmNoaXRlY3R1cmUgZHJpdmVycyByZXF1aXJlIHJlYWwgbWFpbmZyYW1lIGhhcmR3YXJlLCB0aGUgcGF0Y2gncyBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBpcyB0aWVkIHRvIHZlcnkgc3BlY2lmaWMgbWFpbmZyYW1lIGhhcmR3YXJlLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIGFmdGVyIHJldmlld2luZyBhbGwgcmVxdWlyZW1lbnRzLCBJIGNhbiBjb25maWRlbnRseSBzZXQ6XG4tICAgYFdvcnRoRnV6emluZzogZmFsc2UuYFxuLSAgIGBFbmFibGVDb25maWdzOiBudWxsYFxuLSAgIGBGb2N1c1N5bWJvbHM6IG51bGxgXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHFldGhgIGRyaXZlciwgd2hpY2ggbmVjZXNzaXRhdGVzIHNwZWNpZmljIHMzOTAtYmFzZWQgaGFyZHdhcmUgKENDVy9RRElPKSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MCwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDY6MzI6MzIuMzQ3MTAwMTQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFldGggbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvczM5MC9uZXQpLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb2YgYnJpZGdlIHBvcnQgcXVlcnkgcmVzcG9uc2VzIGFuZCBzeXNmcyBvdXRwdXQgZm9yIElCTSBzMzkwIE9TQS1FeHByZXNzL0hpcGVyU29ja2V0cyBkZXZpY2VzLiBUaGlzIGhhcmR3YXJlIGlzIHNwZWNpZmljIHRvIHMzOTAgbWFpbmZyYW1lcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgY2xvdWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZXRoIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL3MzOTAvbmV0KSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9mIGJyaWRnZSBwb3J0IHF1ZXJ5IHJlc3BvbnNlcyBhbmQgc3lzZnMgb3V0cHV0IGZvciBJQk0gczM5MCBPU0EtRXhwcmVzcy9IaXBlclNvY2tldHMgZGV2aWNlcy4gVGhpcyBoYXJkd2FyZSBpcyBzcGVjaWZpYyB0byBzMzkwIG1haW5mcmFtZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGNsb3VkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNjozMjozMi4zNDcxMzM2OTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk8tq[1] Phase: Running StartedAt: 2026-09-02 06:32:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk8tq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 06:32:43 +0000 UTC FinishedAt: 2026-09-02 06:32:48 +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,}