Name: series-workflowwp86k Phase: Failed StartedAt: 2026-09-13 14:48:35 +0000 UTC FinishedAt: 2026-09-13 15:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwp86k[0] Phase: Succeeded StartedAt: 2026-09-13 14:48:35 +0000 UTC FinishedAt: 2026-09-13 15:07:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwp86k[0].run-triage Phase: Succeeded StartedAt: 2026-09-13 14:48:35 +0000 UTC FinishedAt: 2026-09-13 15:07:16 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDE1OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMTU6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZGE0YzU0MmMzM2I4MmJhZmVmM2FkN2NlYzg0MmQ4ZmVmZjUwYjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgMTMgMTU6MDY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHlcbmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG5AQCAtNDgsNyAmIzQzOzQ4LDcgQEAgaW1wb3J0IHJlXG4gZnJvbSBsaWIucHkgaW1wb3J0IGtzZnRfcnVuLCBrc2Z0X2V4aXQsIGtzZnRfcHJcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0RHJ2RXBFbnYsIEtzZnRGYWlsRXgsIEtzZnRYZmFpbEV4XG4gZnJvbSBsaWIucHkgaW1wb3J0IE5ldGRldkZhbWlseSwgRXRodG9vbEZhbWlseVxuLWZyb20gbGliLnB5IGltcG9ydCBia2csIGNtZCwgY3RsX2ZpbGVfd3JpdGUsIGRlZmVyLCBldGh0b29sLCBpcFxuJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQgYmtnLCBjbWQsIGN0bF9maWxlX3dyaXRlLCBkZWZlciwgZXRodG9vbCwgaXAsIHNldF9ldGh0b29sX2ZlYXRcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxuIFxuIFxuQEAgLTkxLDMxICYjNDM7OTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6XG4gICAgICAgICBkZWZlcihpcCwgZlwmIzM0O2xpbmsgc2V0IGRldiB7ZGV2WyYjMzk7aWZuYW1lJiMzOTtdfSBtdHUge2RldlsmIzM5O210dSYjMzk7XX1cJiMzNDssIGhvc3Q9aG9zdClcbiBcbiBcbi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKTpcbi0gICAgczJuID0ge1RydWU6IFwmIzM0O29uXCYjMzQ7LCBGYWxzZTogXCYjMzQ7b2ZmXCYjMzQ7fVxuLVxuLSAgICBuZXcgPSBbXCYjMzQ7LUtcJiMzNDssIGRldl1cbi0gICAgb2xkID0gW1wmIzM0Oy1LXCYjMzQ7LCBkZXZdXG4tICAgIG5vX2NoYW5nZSA9IFRydWVcbi0gICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XG4tICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXVxuLSAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XV1dXG4tXG4tICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wmIzM0O2FjdGl2ZVwmIzM0O10gIT0gc3RhdGU6XG4tICAgICAgICAgICAgbm9fY2hhbmdlID0gRmFsc2Vcbi0gICAgICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wmIzM0O2ZpeGVkXCYjMzQ7XTpcbi0gICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZlwmIzM0O0RldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVwmIzM0Oylcbi0gICAgaWYgbm9fY2hhbmdlOlxuLSAgICAgICAgcmV0dXJuXG4tXG4tICAgIGV0aF9jbWQgPSBldGh0b29sKFwmIzM0OyBcJiMzNDsuam9pbihuZXcpLCBob3N0PWhvc3QpXG4tICAgIGRlZmVyKGV0aHRvb2wsIFwmIzM0OyBcJiMzNDsuam9pbihvbGQpLCBob3N0PWhvc3QpXG4tXG4tICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbi0gICAgaWYgZXRoX2NtZC5zdGRvdXQ6XG4tICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpXG4tXG4tXG4gZGVmIF9nZXRfcXVldWVfc3RhdHMoY2ZnLCBxdWV1ZV9pZCk6XG4gICAgIFwmIzM0O1wmIzM0O1wmIzM0O0dldCBzdGF0cyBmb3IgYSBzcGVjaWZpYyBSeCBxdWV1ZS5cJiMzNDtcJiMzNDtcJiMzNDtcbiAgICAgY2ZnLndhaXRfaHdfc3RhdHNfc2V0dGxlKClcbkBAIC0yNDIsMTUgJiM0MzsyMTcsMTUgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6XG4gICAgICAgICBjdGxfZmlsZV93cml0ZShmbHVzaF9wYXRoLCBcJiMzNDsyMDAwMDBcJiMzNDspXG4gICAgICAgICBjdGxfZmlsZV93cml0ZShpcnFfcGF0aCwgXCYjMzQ7MTBcJiMzNDspXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogRmFsc2V9KVxuJiM0MzsgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7cngtZ3JvLWh3XCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSlcbiAgICAgZWxpZiBtb2RlID09IFwmIzM0O2h3XCYjMzQ7OlxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSlcbiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAge1wmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4gXG4gICAgICAgICAjIFNvbWUgTklDcyB0cmVhdCBIVyBHUk8gYXMgYSBHUk8gc3ViLWZlYXR1cmUgc28gZGlzYWJsaW5nIEdST1xuICAgICAgICAgIyB3aWxsIGFsc28gY2xlYXIgSFcgR1JPLiBVc2UgYSBoYWNrIG9mIGluc3RhbGxpbmcgWERQIGdlbmVyaWNcbkBAIC0yNjUsMjcgJiM0MzsyNDAsMjcgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6XG4gICAgICAgICAgICAgIyBBdHRhY2hpbmcgWERQIG1heSBjaGFuZ2UgZmVhdHVyZXMsIGZldGNoIHRoZSBsYXRlc3Qgc3RhdGVcbiAgICAgICAgICAgICBmZWF0ID0gZXRodG9vbChmXCYjMzQ7LWsge2NmZy5pZm5hbWV9XCYjMzQ7LCBqc29uPVRydWUpWzBdXG4gXG4tICAgICAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4mIzQzOyAgICAgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4gICAgIGVsaWYgbW9kZSA9PSBcJiMzNDtscm9cJiMzNDs6XG4gICAgICAgICAjIG5ldGRldnNpbSBhZHZlcnRpc2VzIExSTyBmb3IgZmVhdHVyZSBpbmhlcml0YW5jZSB0ZXN0aW5nIHdpdGhcbiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwZXJmb3JtIHRoZSBvZmZsb2FkXG4gICAgICAgICBjZmcucmVxdWlyZV9uc2ltKG5zaW1fdGVzdD1GYWxzZSlcbiBcbi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAge1wmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogVHJ1ZX0pXG4mIzQzOyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogRmFsc2UsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7cngtZ3JvLWh3XCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWV9KVxuIFxuICAgICB0cnk6XG4gICAgICAgICAjIERpc2FibGUgVFNPIGZvciBsb2NhbCB0ZXN0c1xuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxuIFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLnJlbW90ZV9pZm5hbWUsIGNmZy5yZW1vdGVfZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDt0Y3Atc2VnbWVudGF0aW9uLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7dGNwLXNlZ21lbnRhdGlvbi1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXG4gICAgIGV4Y2VwdCBLc2Z0WGZhaWxFeDpcbiAgICAgICAgIHBhc3NcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXG5pbmRleCBiZDNiOGQyZmE0N2UwLi41NTgyYjY0NDA3OGVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXG5AQCAtNTQsNiAmIzQzOzU0LDcgQEAgVEVTVF9QUk9HUyA9IFxcXG4gXHR0c28ucHkgXFxcbiBcdHVzZXJuc19kZXZtZW0ucHkgXFxcbiBcdHVzby5weSBcXFxuJiM0MztcdHZsYW4ucHkgXFxcbiBcdHhkcF9tZXRhZGF0YS5weSBcXFxuIFx0eHNrX3JlY29uZmlnLnB5IFxcXG4gXHQjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG5pbmRleCBkODlhOWJhMTc2NTU4Li5jNmMyYjY0YmI3MTI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWdcbkBAIC0yNCw1ICYjNDM7MjQsNiBAQCBDT05GSUdfTkVUX1NDSF9JTkdSRVNTPXlcbiBDT05GSUdfU1lOQ19GSUxFPXlcbiBDT05GSUdfVURNQUJVRj15XG4gQ09ORklHX1VTRVJfTlM9eVxuJiM0MztDT05GSUdfVkxBTl84MDIxUT1tXG4gQ09ORklHX1ZYTEFOPXlcbiBDT05GSUdfWEZSTV9VU0VSPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbmluZGV4IDgxZTFkMTg2NWNkNTAuLjQwNzdmNWYxYTFiZTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2xpYi9weS9fX2luaXRfXy5weVxuQEAgLTMxLDYgJiM0MzszMSw3IEBAIHRyeTpcbiAgICAgICAgIGtzZnRfc2V0dXAsIGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcbiYjNDM7ICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBHZW5lcmF0ZVRyYWZmaWMsIFJlbW90ZSwgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBOZXREcnZFbnYsIE5ldERydkVwRW52LCBOZXREcnZDb250RW52XG4gXG5AQCAtNDksNyAmIzQzOzUwLDcgQEAgdHJ5OlxuICAgICAgICAgICAgICAgIFwmIzM0O2tzZnRfbmVcJiMzNDssIFwmIzM0O2tzZnRfbm90X2luXCYjMzQ7LCBcJiMzNDtrc2Z0X3JhaXNlc1wmIzM0OywgXCYjMzQ7a3NmdF90cnVlXCYjMzQ7LCBcJiMzNDtrc2Z0X2d0XCYjMzQ7LFxuICAgICAgICAgICAgICAgIFwmIzM0O2tzZnRfbm90X25vbmVcJiMzNDssIFwmIzM0O2tzZnRfbm90X25vbmVcJiMzNDssXG4gICAgICAgICAgICAgICAgXCYjMzQ7TmV0RHJ2RW52XCYjMzQ7LCBcJiMzNDtOZXREcnZFcEVudlwmIzM0OywgXCYjMzQ7TmV0RHJ2Q29udEVudlwmIzM0OywgXCYjMzQ7R2VuZXJhdGVUcmFmZmljXCYjMzQ7LFxuLSAgICAgICAgICAgICAgIFwmIzM0O1JlbW90ZVwmIzM0OywgXCYjMzQ7SXBlcmYzUnVubmVyXCYjMzQ7XVxuJiM0MzsgICAgICAgICAgICAgICBcJiMzNDtSZW1vdGVcJiMzNDssIFwmIzM0O0lwZXJmM1J1bm5lclwmIzM0OywgXCYjMzQ7c2V0X2V0aHRvb2xfZmVhdFwmIzM0O11cbiBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBlOlxuICAgICBwcmludChcJiMzNDtGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1wmIzM0OylcbiAgICAgcHJpbnQoc3RyKGUpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjUxNGFkM2U1ZGZkOFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weVxuQEAgLTAsMCAmIzQzOzEsMTI3IEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1ZMQU4gdGVzdHMuXG4mIzQzO1xuJiM0MztWYWxpZGF0ZXMgdGhhdCBwaW5nIHRyYWZmaWMgaXMgc2VudCBhbmQgcmVjZWl2ZWQgY29ycmVjdGx5IG92ZXIgODAyLjFxXG4mIzQzO2FuZCA4MDIuMWFkIFZMQU4gaW50ZXJmYWNlcywgd2l0aCBoYXJkd2FyZSBSWCBWTEFOIHN0cmlwcGluZyBlbmFibGVkIGFuZFxuJiM0MztkaXNhYmxlZCBvbiB0aGUgbG9jYWwgaW50ZXJmYWNlLlxuJiM0MztcbiYjNDM7VGhlIFwmIzM0O2h3XCYjMzQ7IHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcbiYjNDM7dGhlIGRldmljZSwgdGhlIFwmIzM0O3N3XCYjMzQ7IHRlc3QgdmFyaWFudHMgZGlzYWJsZSBhbGwgb2YgdGhlbS4gQSB0ZXN0IGlzIHhmYWlsZWRcbiYjNDM7aWYgdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBwb3NzaWJsZS5cbiYjNDM7XG4mIzQzO1Rlc3QgY2FzZXM6XG4mIzQzOyAgLSA4MDIxcV9odzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9uXG4mIzQzOyAgLSA4MDIxcV9zdzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZlxuJiM0MzsgIC0gODAyMWFkX2h3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbiYjNDM7ICAtIDgwMjFhZF9zdzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZlxuJiM0MzsgIC0gcWlucV9odzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sXG4mIzQzOyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvblxuJiM0MzsgIC0gcWlucV9zdzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sXG4mIzQzOyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvZmZcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MztpbXBvcnQgb3NcbiYjNDM7XG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCAoXG4mIzQzOyAgICBLc2Z0TmFtZWRWYXJpYW50LFxuJiM0MzsgICAgS3NmdFhmYWlsRXgsXG4mIzQzOyAgICBOZXREcnZFcEVudixcbiYjNDM7ICAgIGNtZCxcbiYjNDM7ICAgIGRlZmVyLFxuJiM0MzsgICAgZXRodG9vbCxcbiYjNDM7ICAgIGlwLFxuJiM0MzsgICAga3NmdF9leGl0LFxuJiM0MzsgICAga3NmdF9ydW4sXG4mIzQzOyAgICBrc2Z0X3ZhcmlhbnRzLFxuJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdCxcbiYjNDM7KVxuJiM0MztcbiYjNDM7T1VURVJfREVWID0gZlwmIzM0O3Zsb3V0e29zLmdldHBpZCgpfVwmIzM0O1xuJiM0MztJTk5FUl9ERVYgPSBmXCYjMzQ7dmxpbntvcy5nZXRwaWQoKX1cJiMzNDtcbiYjNDM7XG4mIzQzO09VVEVSX1ZJRCA9IDEwMFxuJiM0MztJTk5FUl9WSUQgPSAyMDBcbiYjNDM7XG4mIzQzO0xPQ0FMX0lQID0gXCYjMzQ7MTk4LjUxLjEwMC4xXCYjMzQ7XG4mIzQzO1JFTU9URV9JUCA9IFwmIzM0OzE5OC41MS4xMDAuMlwmIzM0O1xuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl9hZGQoYmFzZSwgbmFtZSwgcHJvdG8sIHZpZCwgaG9zdD1Ob25lKTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O0NyZWF0ZSBhIFZMQU4gZGV2aWNlIG9uIHRvcCBvZiBiYXNlIGFuZCBicmluZyBpdCB1cC5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBpcChmXCYjMzQ7bGluayBhZGQgbGluayB7YmFzZX0gbmFtZSB7bmFtZX0gdHlwZSB2bGFuIHByb3RvIHtwcm90b30gaWQge3ZpZH1cJiMzNDssXG4mIzQzOyAgICAgICBob3N0PWhvc3QpXG4mIzQzOyAgICBkZWZlcihpcCwgZlwmIzM0O2xpbmsgZGVsIHtuYW1lfVwmIzM0OywgaG9zdD1ob3N0KVxuJiM0MzsgICAgaXAoZlwmIzM0O2xpbmsgc2V0IHtuYW1lfSB1cFwmIzM0OywgaG9zdD1ob3N0KVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl9zZXR1cChiYXNlLCBhZGRyLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sIGhvc3Q9Tm9uZSk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtDcmVhdGUgVkxBTiBpbnRlcmZhY2VzIG9uIGJhc2UgYW5kIHNldCBhbiBJUCBvbiB0aGUgaW5uZXJtb3N0IG9uZS5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBfdmxhbl9hZGQoYmFzZSwgT1VURVJfREVWLCBvdXRlcl9wcm90bywgT1VURVJfVklELCBob3N0PWhvc3QpXG4mIzQzOyAgICBpZiBpbm5lcl9wcm90bzpcbiYjNDM7ICAgICAgICBfdmxhbl9hZGQoT1VURVJfREVWLCBJTk5FUl9ERVYsIGlubmVyX3Byb3RvLCBJTk5FUl9WSUQsIGhvc3Q9aG9zdClcbiYjNDM7XG4mIzQzOyAgICBkZXYgPSBJTk5FUl9ERVYgaWYgaW5uZXJfcHJvdG8gZWxzZSBPVVRFUl9ERVZcbiYjNDM7ICAgIGlwKGZcJiMzNDthZGRyIGFkZCB7YWRkcn0vMjQgZGV2IHtkZXZ9XCYjMzQ7LCBob3N0PWhvc3QpXG4mIzQzO1xuJiM0MztcbiYjNDM7ZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q29uZmlndXJlIFZMQU4gc3RyaXBwaW5nIGFuZCBjcmVhdGUgdGhlIFZMQU4gaW50ZXJmYWNlcy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBuYW1lcyA9IFtcJiMzNDtyeC12bGFuLW9mZmxvYWRcJiMzNDtdXG4mIzQzOyAgICBpZiBvdXRlcl9wcm90byA9PSBcJiMzNDs4MDIuMWFkXCYjMzQ7OlxuJiM0MzsgICAgICAgIG5hbWVzLmFwcGVuZChcJiMzNDtyeC12bGFuLXN0YWctaHctcGFyc2VcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgZmVhdCA9IGV0aHRvb2woZlwmIzM0Oy1rIHtjZmcuaWZuYW1lfVwmIzM0OywganNvbj1UcnVlKVswXVxuJiM0MzsgICAgZmVhdHMgPSB7fVxuJiM0MzsgICAgZm9yIG5hbWUgaW4gbmFtZXM6XG4mIzQzOyAgICAgICAgIyBodzogc2tpcCB0aGUgZmVhdHVyZXMgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0XG4mIzQzOyAgICAgICAgIyBzdzogcmVxdWVzdCBhbGwgb2YgdGhlbSBvZmZcbiYjNDM7ICAgICAgICBpZiBod19zdHJpcCBhbmQgZmVhdFtuYW1lXVtcJiMzNDtmaXhlZFwmIzM0O10gYW5kIG5vdCBmZWF0W25hbWVdW1wmIzM0O2FjdGl2ZVwmIzM0O106XG4mIzQzOyAgICAgICAgICAgIGNvbnRpbnVlXG4mIzQzOyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxuJiM0MztcbiYjNDM7ICAgIGlmIGh3X3N0cmlwIGFuZCBub3QgZmVhdHM6XG4mIzQzOyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgUlggVkxBTiBzdHJpcHBpbmdcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LCBmZWF0cylcbiYjNDM7XG4mIzQzOyAgICBfdmxhbl9zZXR1cChjZmcuaWZuYW1lLCBMT0NBTF9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvKVxuJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLnJlbW90ZV9pZm5hbWUsIFJFTU9URV9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLFxuJiM0MzsgICAgICAgICAgICAgICAgaG9zdD1jZmcucmVtb3RlKVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl92YXJpYW50cygpOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7R2VuZXJhdG9yIHRoYXQgeWllbGRzIHRoZSBWTEFOIHByb3RvY29scyBhbmQgdGhlIHN0cmlwcGluZyBtb2RlLlwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMXFfaHdcJiMzNDssIFwmIzM0OzgwMi4xcVwmIzM0OywgTm9uZSwgVHJ1ZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMXFfc3dcJiMzNDssIFwmIzM0OzgwMi4xcVwmIzM0OywgTm9uZSwgRmFsc2UpXG4mIzQzOyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwmIzM0OzgwMjFhZF9od1wmIzM0OywgXCYjMzQ7ODAyLjFhZFwmIzM0OywgTm9uZSwgVHJ1ZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMWFkX3N3XCYjMzQ7LCBcJiMzNDs4MDIuMWFkXCYjMzQ7LCBOb25lLCBGYWxzZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7cWlucV9od1wmIzM0OywgXCYjMzQ7ODAyLjFhZFwmIzM0OywgXCYjMzQ7ODAyLjFxXCYjMzQ7LCBUcnVlKVxuJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcJiMzNDtxaW5xX3N3XCYjMzQ7LCBcJiMzNDs4MDIuMWFkXCYjMzQ7LCBcJiMzNDs4MDIuMXFcJiMzNDssIEZhbHNlKVxuJiM0MztcbiYjNDM7XG4mIzQzO0Brc2Z0X3ZhcmlhbnRzKF92bGFuX3ZhcmlhbnRzKCkpXG4mIzQzO2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcbiYjNDM7XG4mIzQzOyAgICBjbWQoZlwmIzM0O3BpbmcgLWMgMSAtVyA1IHtSRU1PVEVfSVB9XCYjMzQ7KVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7IEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgICAgd2l0aCBOZXREcnZFcEVudihfX2ZpbGVfXykgYXMgY2ZnOlxuJiM0MzsgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKVxuJiM0MzsgICAga3NmdF9leGl0KClcbiYjNDM7XG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSBcJiMzNDtfX21haW5fX1wmIzM0OzpcbiYjNDM7ICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XG5AQCAtNDgsMTEgJiM0Mzs0OCwxMiBAQCB0cnk6XG4gICAgICAgICAgICAgICAgXCYjMzQ7a3NmdF9ub3Rfbm9uZVwmIzM0OywgXCYjMzQ7a3NmdF9ub3Rfbm9uZVwmIzM0O11cbiBcbiAgICAgZnJvbSAuZW52IGltcG9ydCBOZXREcnZFbnYsIE5ldERydkVwRW52LCBOZXREcnZDb250RW52XG4mIzQzOyAgICBmcm9tIC5mZWF0IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXG4gXG4gICAgIF9fYWxsX18gJiM0Mzs9IFtcJiMzNDtOZXREcnZFbnZcJiMzNDssIFwmIzM0O05ldERydkVwRW52XCYjMzQ7LCBcJiMzNDtOZXREcnZDb250RW52XCYjMzQ7LCBcJiMzNDtHZW5lcmF0ZVRyYWZmaWNcJiMzNDssXG4tICAgICAgICAgICAgICAgIFwmIzM0O1JlbW90ZVwmIzM0OywgXCYjMzQ7SXBlcmYzUnVubmVyXCYjMzQ7XVxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7UmVtb3RlXCYjMzQ7LCBcJiMzNDtJcGVyZjNSdW5uZXJcJiMzNDssIFwmIzM0O3NldF9ldGh0b29sX2ZlYXRcJiMzNDtdXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcbiAgICAgcHJpbnQoXCYjMzQ7RmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXNcJiMzNDspXG4gICAgIHByaW50KHN0cihlKSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYjk0YTI0MjE0ZTU5N1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcbkBAIC0wLDAgJiM0MzsxLDM1IEBAXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzO1wmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxuJiM0MztcbiYjNDM7UHJvdmlkZXMgY29tbW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5naW5nIGRldmljZSBmZWF0dXJlcyB2aWEgZXRodG9vbC5cbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0Mztmcm9tIC4gaW1wb3J0IEtzZnRYZmFpbEV4LCBkZWZlciwgZXRodG9vbCwga3NmdF9wclxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBzZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBzMm4gPSB7VHJ1ZTogXCYjMzQ7b25cJiMzNDssIEZhbHNlOiBcJiMzNDtvZmZcJiMzNDt9XG4mIzQzO1xuJiM0MzsgICAgbmV3ID0gW1wmIzM0Oy1LXCYjMzQ7LCBkZXZdXG4mIzQzOyAgICBvbGQgPSBbXCYjMzQ7LUtcJiMzNDssIGRldl1cbiYjNDM7ICAgIG5vX2NoYW5nZSA9IFRydWVcbiYjNDM7ICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOlxuJiM0MzsgICAgICAgIG5ldyAmIzQzOz0gW25hbWUsIHMybltzdGF0ZV1dXG4mIzQzOyAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XV1dXG4mIzQzO1xuJiM0MzsgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XSAhPSBzdGF0ZTpcbiYjNDM7ICAgICAgICAgICAgbm9fY2hhbmdlID0gRmFsc2VcbiYjNDM7ICAgICAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcJiMzNDtmaXhlZFwmIzM0O106XG4mIzQzOyAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9XCYjMzQ7KVxuJiM0MzsgICAgaWYgbm9fY2hhbmdlOlxuJiM0MzsgICAgICAgIHJldHVyblxuJiM0MztcbiYjNDM7ICAgIGV0aF9jbWQgPSBldGh0b29sKFwmIzM0OyBcJiMzNDsuam9pbihuZXcpLCBob3N0PWhvc3QpXG4mIzQzOyAgICBkZWZlcihldGh0b29sLCBcJiMzNDsgXCYjMzQ7LmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxuJiM0MztcbiYjNDM7ICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbiYjNDM7ICAgIGlmIGV0aF9jbWQuc3Rkb3V0OlxuJiM0MzsgICAgICAgIGtzZnRfcHIoZXRoX2NtZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRkYTRjNTQyYzMzYjgyYmFmZWYzYWQ3Y2VjODQyZDhmZWZmNTBiMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAxNTowNjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5CmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weQpAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgaW1wb3J0IHJlCiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wcgogZnJvbSBsaWIucHkgaW1wb3J0IE5ldERydkVwRW52LCBLc2Z0RmFpbEV4LCBLc2Z0WGZhaWxFeAogZnJvbSBsaWIucHkgaW1wb3J0IE5ldGRldkZhbWlseSwgRXRodG9vbEZhbWlseQotZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwCiYjNDM7ZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwLCBzZXRfZXRodG9vbF9mZWF0CiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudAogCiAKQEAgLTkxLDMxICYjNDM7OTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6CiAgICAgICAgIGRlZmVyKGlwLCBmJiMzNDtsaW5rIHNldCBkZXYge2RldlsmIzM5O2lmbmFtZSYjMzk7XX0gbXR1IHtkZXZbJiMzOTttdHUmIzM5O119JiMzNDssIGhvc3Q9aG9zdCkKIAogCi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKToKLSAgICBzMm4gPSB7VHJ1ZTogJiMzNDtvbiYjMzQ7LCBGYWxzZTogJiMzNDtvZmYmIzM0O30KLQotICAgIG5ldyA9IFsmIzM0Oy1LJiMzNDssIGRldl0KLSAgICBvbGQgPSBbJiMzNDstSyYjMzQ7LCBkZXZdCi0gICAgbm9fY2hhbmdlID0gVHJ1ZQotICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOgotICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXQotICAgICAgICBvbGQgJiM0Mzs9IFtuYW1lLCBzMm5bY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XV1dCi0KLSAgICAgICAgaWYgY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XSAhPSBzdGF0ZToKLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlCi0gICAgICAgICAgICBpZiBjdXJyZW50W25hbWVdWyYjMzQ7Zml4ZWQmIzM0O106Ci0gICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZiYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9JiMzNDspCi0gICAgaWYgbm9fY2hhbmdlOgotICAgICAgICByZXR1cm4KLQotICAgIGV0aF9jbWQgPSBldGh0b29sKCYjMzQ7ICYjMzQ7LmpvaW4obmV3KSwgaG9zdD1ob3N0KQotICAgIGRlZmVyKGV0aHRvb2wsICYjMzQ7ICYjMzQ7LmpvaW4ob2xkKSwgaG9zdD1ob3N0KQotCi0gICAgIyBJZiBldGh0b29sIHByaW50ZWQgc29tZXRoaW5nIGtlcm5lbCBtdXN0IGhhdmUgbW9kaWZpZWQgc29tZSBmZWF0dXJlcwotICAgIGlmIGV0aF9jbWQuc3Rkb3V0OgotICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpCi0KLQogZGVmIF9nZXRfcXVldWVfc3RhdHMoY2ZnLCBxdWV1ZV9pZCk6CiAgICAgJiMzNDsmIzM0OyYjMzQ7R2V0IHN0YXRzIGZvciBhIHNwZWNpZmljIFJ4IHF1ZXVlLiYjMzQ7JiMzNDsmIzM0OwogICAgIGNmZy53YWl0X2h3X3N0YXRzX3NldHRsZSgpCkBAIC0yNDIsMTUgJiM0MzsyMTcsMTUgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6CiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGZsdXNoX3BhdGgsICYjMzQ7MjAwMDAwJiMzNDspCiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCAmIzM0OzEwJiMzNDspCiAKLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKJiM0MzsgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBGYWxzZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKICAgICBlbGlmIG1vZGUgPT0gJiMzNDtodyYjMzQ7OgotICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2V9KQomIzQzOyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2UsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2V9KQogCiAgICAgICAgICMgU29tZSBOSUNzIHRyZWF0IEhXIEdSTyBhcyBhIEdSTyBzdWItZmVhdHVyZSBzbyBkaXNhYmxpbmcgR1JPCiAgICAgICAgICMgd2lsbCBhbHNvIGNsZWFyIEhXIEdSTy4gVXNlIGEgaGFjayBvZiBpbnN0YWxsaW5nIFhEUCBnZW5lcmljCkBAIC0yNjUsMjcgJiM0MzsyNDAsMjcgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6CiAgICAgICAgICAgICAjIEF0dGFjaGluZyBYRFAgbWF5IGNoYW5nZSBmZWF0dXJlcywgZmV0Y2ggdGhlIGxhdGVzdCBzdGF0ZQogICAgICAgICAgICAgZmVhdCA9IGV0aHRvb2woZiYjMzQ7LWsge2NmZy5pZm5hbWV9JiMzNDssIGpzb249VHJ1ZSlbMF0KIAotICAgICAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtyeC1ncm8taHcmIzM0OzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZX0pCiYjNDM7ICAgICAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKICAgICBlbGlmIG1vZGUgPT0gJiMzNDtscm8mIzM0OzoKICAgICAgICAgIyBuZXRkZXZzaW0gYWR2ZXJ0aXNlcyBMUk8gZm9yIGZlYXR1cmUgaW5oZXJpdGFuY2UgdGVzdGluZyB3aXRoCiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwZXJmb3JtIHRoZSBvZmZsb2FkCiAgICAgICAgIGNmZy5yZXF1aXJlX25zaW0obnNpbV90ZXN0PUZhbHNlKQogCi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7cngtZ3JvLWh3JiMzNDs6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZX0pCiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7cngtZ3JvLWh3JiMzNDs6IEZhbHNlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZX0pCiAKICAgICB0cnk6CiAgICAgICAgICMgRGlzYWJsZSBUU08gZm9yIGxvY2FsIHRlc3RzCiAgICAgICAgIGNmZy5yZXF1aXJlX25zaW0oKSAgIyB3aWxsIHJhaXNlIEtzZnRYZmFpbEV4IGlmIG5vdCBydW5uaW5nIG9uIG5zaW0KIAotICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcucmVtb3RlX2lmbmFtZSwgY2ZnLnJlbW90ZV9mZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDt0Y3Atc2VnbWVudGF0aW9uLW9mZmxvYWQmIzM0OzogRmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpCiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O3RjcC1zZWdtZW50YXRpb24tb2ZmbG9hZCYjMzQ7OiBGYWxzZX0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSkKICAgICBleGNlcHQgS3NmdFhmYWlsRXg6CiAgICAgICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQppbmRleCBiZDNiOGQyZmE0N2UwLi41NTgyYjY0NDA3OGVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQpAQCAtNTQsNiAmIzQzOzU0LDcgQEAgVEVTVF9QUk9HUyA9IFwKIAl0c28ucHkgXAogCXVzZXJuc19kZXZtZW0ucHkgXAogCXVzby5weSBcCiYjNDM7CXZsYW4ucHkgXAogCXhkcF9tZXRhZGF0YS5weSBcCiAJeHNrX3JlY29uZmlnLnB5IFwKIAkjCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWcKaW5kZXggZDg5YTliYTE3NjU1OC4uYzZjMmI2NGJiNzEyNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZwpAQCAtMjQsNSAmIzQzOzI0LDYgQEAgQ09ORklHX05FVF9TQ0hfSU5HUkVTUz15CiBDT05GSUdfU1lOQ19GSUxFPXkKIENPTkZJR19VRE1BQlVGPXkKIENPTkZJR19VU0VSX05TPXkKJiM0MztDT05GSUdfVkxBTl84MDIxUT1tCiBDT05GSUdfVlhMQU49eQogQ09ORklHX1hGUk1fVVNFUj15CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkKaW5kZXggODFlMWQxODY1Y2Q1MC4uNDA3N2Y1ZjFhMWJlMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2xpYi9weS9fX2luaXRfXy5weQpAQCAtMzEsNiAmIzQzOzMxLDcgQEAgdHJ5OgogICAgICAgICBrc2Z0X3NldHVwLCBrc2Z0X3ZhcmlhbnRzLCBLc2Z0TmFtZWRWYXJpYW50CiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcCiAgICAgICAgIGtzZnRfbmUsIGtzZnRfbm90X2luLCBrc2Z0X3JhaXNlcywga3NmdF90cnVlLCBrc2Z0X2d0LCBrc2Z0X25vdF9ub25lCiYjNDM7ICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0CiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgUmVtb3RlLCBJcGVyZjNSdW5uZXIKICAgICBmcm9tIGRyaXZlcnMubmV0LmxpYi5weSBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudgogCkBAIC00OSw3ICYjNDM7NTAsNyBAQCB0cnk6CiAgICAgICAgICAgICAgICAmIzM0O2tzZnRfbmUmIzM0OywgJiMzNDtrc2Z0X25vdF9pbiYjMzQ7LCAmIzM0O2tzZnRfcmFpc2VzJiMzNDssICYjMzQ7a3NmdF90cnVlJiMzNDssICYjMzQ7a3NmdF9ndCYjMzQ7LAogICAgICAgICAgICAgICAgJiMzNDtrc2Z0X25vdF9ub25lJiMzNDssICYjMzQ7a3NmdF9ub3Rfbm9uZSYjMzQ7LAogICAgICAgICAgICAgICAgJiMzNDtOZXREcnZFbnYmIzM0OywgJiMzNDtOZXREcnZFcEVudiYjMzQ7LCAmIzM0O05ldERydkNvbnRFbnYmIzM0OywgJiMzNDtHZW5lcmF0ZVRyYWZmaWMmIzM0OywKLSAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDtdCiYjNDM7ICAgICAgICAgICAgICAgJiMzNDtSZW1vdGUmIzM0OywgJiMzNDtJcGVyZjNSdW5uZXImIzM0OywgJiMzNDtzZXRfZXRodG9vbF9mZWF0JiMzNDtdCiBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBlOgogICAgIHByaW50KCYjMzQ7RmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXMmIzM0OykKICAgICBwcmludChzdHIoZSkpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weQpAQCAtMCwwICYjNDM7MSwxMjcgQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzO1ZMQU4gdGVzdHMuCiYjNDM7CiYjNDM7VmFsaWRhdGVzIHRoYXQgcGluZyB0cmFmZmljIGlzIHNlbnQgYW5kIHJlY2VpdmVkIGNvcnJlY3RseSBvdmVyIDgwMi4xcQomIzQzO2FuZCA4MDIuMWFkIFZMQU4gaW50ZXJmYWNlcywgd2l0aCBoYXJkd2FyZSBSWCBWTEFOIHN0cmlwcGluZyBlbmFibGVkIGFuZAomIzQzO2Rpc2FibGVkIG9uIHRoZSBsb2NhbCBpbnRlcmZhY2UuCiYjNDM7CiYjNDM7VGhlICYjMzQ7aHcmIzM0OyB0ZXN0IHZhcmlhbnRzIGVuYWJsZSB0aGUgUlggVkxBTiBzdHJpcHBpbmcgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5CiYjNDM7dGhlIGRldmljZSwgdGhlICYjMzQ7c3cmIzM0OyB0ZXN0IHZhcmlhbnRzIGRpc2FibGUgYWxsIG9mIHRoZW0uIEEgdGVzdCBpcyB4ZmFpbGVkCiYjNDM7aWYgdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBwb3NzaWJsZS4KJiM0MzsKJiM0MztUZXN0IGNhc2VzOgomIzQzOyAgLSA4MDIxcV9odzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9uCiYjNDM7ICAtIDgwMjFxX3N3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmCiYjNDM7ICAtIDgwMjFhZF9odzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9uCiYjNDM7ICAtIDgwMjFhZF9zdzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZgomIzQzOyAgLSBxaW5xX2h3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTiwKJiM0MzsgICAgICAgICAgICAgICBIVyBzdHJpcHBpbmcgb24KJiM0MzsgIC0gcWlucV9zdzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sCiYjNDM7ICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9mZgomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2ltcG9ydCBvcwomIzQzOwomIzQzO2Zyb20gbGliLnB5IGltcG9ydCAoCiYjNDM7ICAgIEtzZnROYW1lZFZhcmlhbnQsCiYjNDM7ICAgIEtzZnRYZmFpbEV4LAomIzQzOyAgICBOZXREcnZFcEVudiwKJiM0MzsgICAgY21kLAomIzQzOyAgICBkZWZlciwKJiM0MzsgICAgZXRodG9vbCwKJiM0MzsgICAgaXAsCiYjNDM7ICAgIGtzZnRfZXhpdCwKJiM0MzsgICAga3NmdF9ydW4sCiYjNDM7ICAgIGtzZnRfdmFyaWFudHMsCiYjNDM7ICAgIHNldF9ldGh0b29sX2ZlYXQsCiYjNDM7KQomIzQzOwomIzQzO09VVEVSX0RFViA9IGYmIzM0O3Zsb3V0e29zLmdldHBpZCgpfSYjMzQ7CiYjNDM7SU5ORVJfREVWID0gZiYjMzQ7dmxpbntvcy5nZXRwaWQoKX0mIzM0OwomIzQzOwomIzQzO09VVEVSX1ZJRCA9IDEwMAomIzQzO0lOTkVSX1ZJRCA9IDIwMAomIzQzOwomIzQzO0xPQ0FMX0lQID0gJiMzNDsxOTguNTEuMTAwLjEmIzM0OwomIzQzO1JFTU9URV9JUCA9ICYjMzQ7MTk4LjUxLjEwMC4yJiMzNDsKJiM0MzsKJiM0MzsKJiM0MztkZWYgX3ZsYW5fYWRkKGJhc2UsIG5hbWUsIHByb3RvLCB2aWQsIGhvc3Q9Tm9uZSk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0O0NyZWF0ZSBhIFZMQU4gZGV2aWNlIG9uIHRvcCBvZiBiYXNlIGFuZCBicmluZyBpdCB1cC4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgaXAoZiYjMzQ7bGluayBhZGQgbGluayB7YmFzZX0gbmFtZSB7bmFtZX0gdHlwZSB2bGFuIHByb3RvIHtwcm90b30gaWQge3ZpZH0mIzM0OywKJiM0MzsgICAgICAgaG9zdD1ob3N0KQomIzQzOyAgICBkZWZlcihpcCwgZiYjMzQ7bGluayBkZWwge25hbWV9JiMzNDssIGhvc3Q9aG9zdCkKJiM0MzsgICAgaXAoZiYjMzQ7bGluayBzZXQge25hbWV9IHVwJiMzNDssIGhvc3Q9aG9zdCkKJiM0MzsKJiM0MzsKJiM0MztkZWYgX3ZsYW5fc2V0dXAoYmFzZSwgYWRkciwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBob3N0PU5vbmUpOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtDcmVhdGUgVkxBTiBpbnRlcmZhY2VzIG9uIGJhc2UgYW5kIHNldCBhbiBJUCBvbiB0aGUgaW5uZXJtb3N0IG9uZS4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgX3ZsYW5fYWRkKGJhc2UsIE9VVEVSX0RFViwgb3V0ZXJfcHJvdG8sIE9VVEVSX1ZJRCwgaG9zdD1ob3N0KQomIzQzOyAgICBpZiBpbm5lcl9wcm90bzoKJiM0MzsgICAgICAgIF92bGFuX2FkZChPVVRFUl9ERVYsIElOTkVSX0RFViwgaW5uZXJfcHJvdG8sIElOTkVSX1ZJRCwgaG9zdD1ob3N0KQomIzQzOwomIzQzOyAgICBkZXYgPSBJTk5FUl9ERVYgaWYgaW5uZXJfcHJvdG8gZWxzZSBPVVRFUl9ERVYKJiM0MzsgICAgaXAoZiYjMzQ7YWRkciBhZGQge2FkZHJ9LzI0IGRldiB7ZGV2fSYjMzQ7LCBob3N0PWhvc3QpCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtDb25maWd1cmUgVkxBTiBzdHJpcHBpbmcgYW5kIGNyZWF0ZSB0aGUgVkxBTiBpbnRlcmZhY2VzLiYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzOyAgICBuYW1lcyA9IFsmIzM0O3J4LXZsYW4tb2ZmbG9hZCYjMzQ7XQomIzQzOyAgICBpZiBvdXRlcl9wcm90byA9PSAmIzM0OzgwMi4xYWQmIzM0OzoKJiM0MzsgICAgICAgIG5hbWVzLmFwcGVuZCgmIzM0O3J4LXZsYW4tc3RhZy1ody1wYXJzZSYjMzQ7KQomIzQzOwomIzQzOyAgICBmZWF0ID0gZXRodG9vbChmJiMzNDstayB7Y2ZnLmlmbmFtZX0mIzM0OywganNvbj1UcnVlKVswXQomIzQzOyAgICBmZWF0cyA9IHt9CiYjNDM7ICAgIGZvciBuYW1lIGluIG5hbWVzOgomIzQzOyAgICAgICAgIyBodzogc2tpcCB0aGUgZmVhdHVyZXMgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0CiYjNDM7ICAgICAgICAjIHN3OiByZXF1ZXN0IGFsbCBvZiB0aGVtIG9mZgomIzQzOyAgICAgICAgaWYgaHdfc3RyaXAgYW5kIGZlYXRbbmFtZV1bJiMzNDtmaXhlZCYjMzQ7XSBhbmQgbm90IGZlYXRbbmFtZV1bJiMzNDthY3RpdmUmIzM0O106CiYjNDM7ICAgICAgICAgICAgY29udGludWUKJiM0MzsgICAgICAgIGZlYXRzW25hbWVdID0gaHdfc3RyaXAKJiM0MzsKJiM0MzsgICAgaWYgaHdfc3RyaXAgYW5kIG5vdCBmZWF0czoKJiM0MzsgICAgICAgIHJhaXNlIEtzZnRYZmFpbEV4KCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgUlggVkxBTiBzdHJpcHBpbmcmIzM0OykKJiM0MzsKJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LCBmZWF0cykKJiM0MzsKJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLmlmbmFtZSwgTE9DQUxfSVAsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bykKJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLnJlbW90ZV9pZm5hbWUsIFJFTU9URV9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLAomIzQzOyAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIF92bGFuX3ZhcmlhbnRzKCk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0O0dlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgVkxBTiBwcm90b2NvbHMgYW5kIHRoZSBzdHJpcHBpbmcgbW9kZS4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFxX2h3JiMzNDssICYjMzQ7ODAyLjFxJiMzNDssIE5vbmUsIFRydWUpCiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoJiMzNDs4MDIxcV9zdyYjMzQ7LCAmIzM0OzgwMi4xcSYjMzQ7LCBOb25lLCBGYWxzZSkKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFhZF9odyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgTm9uZSwgVHJ1ZSkKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFhZF9zdyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgTm9uZSwgRmFsc2UpCiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoJiMzNDtxaW5xX2h3JiMzNDssICYjMzQ7ODAyLjFhZCYjMzQ7LCAmIzM0OzgwMi4xcSYjMzQ7LCBUcnVlKQomIzQzOyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KCYjMzQ7cWlucV9zdyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgJiMzNDs4MDIuMXEmIzM0OywgRmFsc2UpCiYjNDM7CiYjNDM7CiYjNDM7QGtzZnRfdmFyaWFudHMoX3ZsYW5fdmFyaWFudHMoKSkKJiM0MztkZWYgdGVzdChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0JiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICAgIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApCiYjNDM7CiYjNDM7ICAgIGNtZChmJiMzNDtwaW5nIC1jIDEgLVcgNSB7UkVNT1RFX0lQfSYjMzQ7KQomIzQzOwomIzQzOwomIzQzO2RlZiBtYWluKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7IEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICAgIHdpdGggTmV0RHJ2RXBFbnYoX19maWxlX18pIGFzIGNmZzoKJiM0MzsgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKQomIzQzOyAgICBrc2Z0X2V4aXQoKQomIzQzOwomIzQzOwomIzQzO2lmIF9fbmFtZV9fID09ICYjMzQ7X19tYWluX18mIzM0OzoKJiM0MzsgICAgbWFpbigpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvX19pbml0X18ucHkKaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weQpAQCAtNDgsMTEgJiM0Mzs0OCwxMiBAQCB0cnk6CiAgICAgICAgICAgICAgICAmIzM0O2tzZnRfbm90X25vbmUmIzM0OywgJiMzNDtrc2Z0X25vdF9ub25lJiMzNDtdCiAKICAgICBmcm9tIC5lbnYgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnYKJiM0MzsgICAgZnJvbSAuZmVhdCBpbXBvcnQgc2V0X2V0aHRvb2xfZmVhdAogICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyCiAgICAgZnJvbSAucmVtb3RlIGltcG9ydCBSZW1vdGUKIAogICAgIF9fYWxsX18gJiM0Mzs9IFsmIzM0O05ldERydkVudiYjMzQ7LCAmIzM0O05ldERydkVwRW52JiMzNDssICYjMzQ7TmV0RHJ2Q29udEVudiYjMzQ7LCAmIzM0O0dlbmVyYXRlVHJhZmZpYyYjMzQ7LAotICAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDtdCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDssICYjMzQ7c2V0X2V0aHRvb2xfZmVhdCYjMzQ7XQogZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZToKICAgICBwcmludCgmIzM0O0ZhaWxlZCBpbXBvcnRpbmcgYG5ldGAgbGlicmFyeSBmcm9tIGtlcm5lbCBzb3VyY2VzJiMzNDspCiAgICAgcHJpbnQoc3RyKGUpKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5iOTRhMjQyMTRlNTk3Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHkKQEAgLTAsMCAmIzQzOzEsMzUgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7JiMzNDsmIzM0OyYjMzQ7CiYjNDM7TmV0ZGV2IGZlYXR1cmUgaGVscGVyIHV0aWxpdGllcyBmb3Iga2VybmVsIHNlbGZ0ZXN0cy4KJiM0MzsKJiM0MztQcm92aWRlcyBjb21tb24gb3BlcmF0aW9ucyBmb3IgY2hhbmdpbmcgZGV2aWNlIGZlYXR1cmVzIHZpYSBldGh0b29sLgomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2Zyb20gLiBpbXBvcnQgS3NmdFhmYWlsRXgsIGRlZmVyLCBldGh0b29sLCBrc2Z0X3ByCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIHNldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7U2V0IGV0aHRvb2wgZmVhdHVyZXMgd2l0aCBkZWZlciB0byByZXN0b3JlIG9yaWdpbmFsIHN0YXRlLiYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBzMm4gPSB7VHJ1ZTogJiMzNDtvbiYjMzQ7LCBGYWxzZTogJiMzNDtvZmYmIzM0O30KJiM0MzsKJiM0MzsgICAgbmV3ID0gWyYjMzQ7LUsmIzM0OywgZGV2XQomIzQzOyAgICBvbGQgPSBbJiMzNDstSyYjMzQ7LCBkZXZdCiYjNDM7ICAgIG5vX2NoYW5nZSA9IFRydWUKJiM0MzsgICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6CiYjNDM7ICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXQomIzQzOyAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bJiMzNDthY3RpdmUmIzM0O11dXQomIzQzOwomIzQzOyAgICAgICAgaWYgY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XSAhPSBzdGF0ZToKJiM0MzsgICAgICAgICAgICBub19jaGFuZ2UgPSBGYWxzZQomIzQzOyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bJiMzNDtmaXhlZCYjMzQ7XToKJiM0MzsgICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZiYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9JiMzNDspCiYjNDM7ICAgIGlmIG5vX2NoYW5nZToKJiM0MzsgICAgICAgIHJldHVybgomIzQzOwomIzQzOyAgICBldGhfY21kID0gZXRodG9vbCgmIzM0OyAmIzM0Oy5qb2luKG5ldyksIGhvc3Q9aG9zdCkKJiM0MzsgICAgZGVmZXIoZXRodG9vbCwgJiMzNDsgJiMzNDsuam9pbihvbGQpLCBob3N0PWhvc3QpCiYjNDM7CiYjNDM7ICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXMKJiM0MzsgICAgaWYgZXRoX2NtZC5zdGRvdXQ6CiYjNDM7ICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDE1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODcKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA4OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyB0byBQeXRob24gc2NyaXB0cyAoYGdyb19saWIucHlgLCBgdmxhbi5weWAsIHZhcmlvdXMgYF9faW5pdF9fLnB5YCBmaWxlcyBhbmQgYGZlYXQucHlgKSwgYSBgTWFrZWZpbGVgLCBhbmQgYSBgY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZywgc28gSSBpbW1lZGlhdGVseSBoZWFkIHRvIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiB0aGUgaW5zdHJ1Y3Rpb25zLgoKQWNjb3JkaW5nIHRvIFNlY3Rpb24gMiwgYSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHJlc3VsdCBpcyBqdXN0aWZpZWQgaWYgKmFsbCogdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBvbmUgb3IgbW9yZSBvZiBzZXZlcmFsIGNhdGVnb3JpZXMsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiBvdXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgaXMgY3JpdGljYWwgdG8gZ2V0dGluZyB0aGlzIHJpZ2h0LiBUaGUgaW5zdHJ1Y3Rpb25zIGxpc3QgbW9kaWZpY2F0aW9ucyB0aGF0IGRvICpub3QqIHJlcXVpcmUgZnV6emluZzogZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHVzZXItc3BhY2UgdG9vbHMgYW5kIHNjcmlwdHMgdGhhdCBkb24mIzM5O3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBhbmQgYnVpbGQgc3lzdGVtL0tjb25maWcgY2hhbmdlcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgoKTG9va2luZyBjbG9zZWx5IGF0IHRoZSBmaWxlIHBhdGhzLCBJIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGFsbCBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2AgcGF0aC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgKnVzZXItc3BhY2UqIHNlbGYtdGVzdHMsIHNjcmlwdHMsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLCBkZWZpbml0ZWx5IG5vdCBrZXJuZWwgY29kZS4gVGhleSBsaXZlIGluIGEgY29tcGxldGVseSBpc29sYXRlZCBlbnZpcm9ubWVudCwgc28gdGhlcmUgaXMgbm8gcmlzayBvZiB0aGVtIGFmZmVjdGluZyB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUga2VybmVsIG1vZHVsZXMuIFRoZXNlIGFyZSBQeXRob24gc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGEgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIHRoZSBzZWxmdGVzdHMuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHBhdGNoIHN0cmljdGx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgYXJlIG1ldC4gSSBjb25maXJtIHRoaXMgYnkgYXNzaWduaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB3aXRoIG5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYC4gVGhlIHJlYXNvbmluZyBtdXN0IGJlIGNsZWFyIGFuZCBjb25jaXNlLiBCYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgdXNlci1zcGFjZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4gQWZ0ZXIgYSBxdWljayBkb3VibGUtY2hlY2sgb2YgdGhlIGluc3RydWN0aW9ucyBhbmQgdGhlICYjMzQ7c2V0LXJlc3VsdHMmIzM0OyBndWlkZWxpbmVzLCBJJiMzOTttIHN1cmUgdGhhdCB0aGlzIGFzc2Vzc21lbnQgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdGVzdCBzY3JpcHRzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0Lywgd2hpY2ggZG9lcyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3Iga2VybmVsIG1vZHVsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuMzM1MTk3OTg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyOTE5ODkwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuMzM1MjA2NjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwNDI4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZGE0YzU0MmMzM2I4MmJhZmVmM2FkN2NlYzg0MmQ4ZmVmZjUwYjI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDE1OjA2OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XFxuaW5kZXggYjdhYzA2NjBhZGMwMS4uZTlkMzczY2YzNDgzYyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weVxcbkBAIC00OCw3ICs0OCw3IEBAIGltcG9ydCByZVxcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wclxcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0RHJ2RXBFbnYsIEtzZnRGYWlsRXgsIEtzZnRYZmFpbEV4XFxuIGZyb20gbGliLnB5IGltcG9ydCBOZXRkZXZGYW1pbHksIEV0aHRvb2xGYW1pbHlcXG4tZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwXFxuK2Zyb20gbGliLnB5IGltcG9ydCBia2csIGNtZCwgY3RsX2ZpbGVfd3JpdGUsIGRlZmVyLCBldGh0b29sLCBpcCwgc2V0X2V0aHRvb2xfZmVhdFxcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxcbiBcXG4gXFxuQEAgLTkxLDMxICs5MSw2IEBAIGRlZiBfc2V0X210dV9yZXN0b3JlKGRldiwgbXR1LCBob3N0KTpcXG4gICAgICAgICBkZWZlcihpcCwgZlxcXCJsaW5rIHNldCBkZXYge2RldlsnaWZuYW1lJ119IG10dSB7ZGV2WydtdHUnXX1cXFwiLCBob3N0PWhvc3QpXFxuIFxcbiBcXG4tZGVmIF9zZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XFxuLSAgICBzMm4gPSB7VHJ1ZTogXFxcIm9uXFxcIiwgRmFsc2U6IFxcXCJvZmZcXFwifVxcbi1cXG4tICAgIG5ldyA9IFtcXFwiLUtcXFwiLCBkZXZdXFxuLSAgICBvbGQgPSBbXFxcIi1LXFxcIiwgZGV2XVxcbi0gICAgbm9fY2hhbmdlID0gVHJ1ZVxcbi0gICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XFxuLSAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxcbi0gICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXFxcImFjdGl2ZVxcXCJdXV1cXG4tXFxuLSAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcXFwiYWN0aXZlXFxcIl0gIT0gc3RhdGU6XFxuLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXFxuLSAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXFxcImZpeGVkXFxcIl06XFxuLSAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVxcXCIpXFxuLSAgICBpZiBub19jaGFuZ2U6XFxuLSAgICAgICAgcmV0dXJuXFxuLVxcbi0gICAgZXRoX2NtZCA9IGV0aHRvb2woXFxcIiBcXFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxcbi0gICAgZGVmZXIoZXRodG9vbCwgXFxcIiBcXFwiLmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxcbi1cXG4tICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcXG4tICAgIGlmIGV0aF9jbWQuc3Rkb3V0Olxcbi0gICAgICAgIGtzZnRfcHIoZXRoX2NtZClcXG4tXFxuLVxcbiBkZWYgX2dldF9xdWV1ZV9zdGF0cyhjZmcsIHF1ZXVlX2lkKTpcXG4gICAgIFxcXCJcXFwiXFxcIkdldCBzdGF0cyBmb3IgYSBzcGVjaWZpYyBSeCBxdWV1ZS5cXFwiXFxcIlxcXCJcXG4gICAgIGNmZy53YWl0X2h3X3N0YXRzX3NldHRsZSgpXFxuQEAgLTI0MiwxNSArMjE3LDE1IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGZsdXNoX3BhdGgsIFxcXCIyMDAwMDBcXFwiKVxcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCBcXFwiMTBcXFwiKVxcbiBcXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZSxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IEZhbHNlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbisgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogRmFsc2UsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxhcmdlLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlfSlcXG4gICAgIGVsaWYgbW9kZSA9PSBcXFwiaHdcXFwiOlxcbi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZSxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IFRydWUsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZX0pXFxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogVHJ1ZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbiBcXG4gICAgICAgICAjIFNvbWUgTklDcyB0cmVhdCBIVyBHUk8gYXMgYSBHUk8gc3ViLWZlYXR1cmUgc28gZGlzYWJsaW5nIEdST1xcbiAgICAgICAgICMgd2lsbCBhbHNvIGNsZWFyIEhXIEdSTy4gVXNlIGEgaGFjayBvZiBpbnN0YWxsaW5nIFhEUCBnZW5lcmljXFxuQEAgLTI2NSwyNyArMjQwLDI3IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxcbiAgICAgICAgICAgICAjIEF0dGFjaGluZyBYRFAgbWF5IGNoYW5nZSBmZWF0dXJlcywgZmV0Y2ggdGhlIGxhdGVzdCBzdGF0ZVxcbiAgICAgICAgICAgICBmZWF0ID0gZXRodG9vbChmXFxcIi1rIHtjZmcuaWZuYW1lfVxcXCIsIGpzb249VHJ1ZSlbMF1cXG4gXFxuLSAgICAgICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBUcnVlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IFRydWUsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbisgICAgICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IFRydWUsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyeC1ncm8taHdcXFwiOiBUcnVlLFxcbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbiAgICAgZWxpZiBtb2RlID09IFxcXCJscm9cXFwiOlxcbiAgICAgICAgICMgbmV0ZGV2c2ltIGFkdmVydGlzZXMgTFJPIGZvciBmZWF0dXJlIGluaGVyaXRhbmNlIHRlc3Rpbmcgd2l0aFxcbiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2Vzbid0IGFjdHVhbGx5IHBlcmZvcm0gdGhlIG9mZmxvYWRcXG4gICAgICAgICBjZmcucmVxdWlyZV9uc2ltKG5zaW1fdGVzdD1GYWxzZSlcXG4gXFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogRmFsc2UsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcXFwiOiBUcnVlfSlcXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlLFxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyeC1ncm8taHdcXFwiOiBGYWxzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZX0pXFxuIFxcbiAgICAgdHJ5OlxcbiAgICAgICAgICMgRGlzYWJsZSBUU08gZm9yIGxvY2FsIHRlc3RzXFxuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxcbiBcXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcucmVtb3RlX2lmbmFtZSwgY2ZnLnJlbW90ZV9mZWF0LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwidGNwLXNlZ21lbnRhdGlvbi1vZmZsb2FkXFxcIjogRmFsc2V9LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFxcXCI6IEZhbHNlfSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcXG4gICAgIGV4Y2VwdCBLc2Z0WGZhaWxFeDpcXG4gICAgICAgICBwYXNzXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXFxuaW5kZXggYmQzYjhkMmZhNDdlMC4uNTU4MmI2NDQwNzhlZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXFxuQEAgLTU0LDYgKzU0LDcgQEAgVEVTVF9QUk9HUyA9IFxcXFxcXG4gXFx0dHNvLnB5IFxcXFxcXG4gXFx0dXNlcm5zX2Rldm1lbS5weSBcXFxcXFxuIFxcdHVzby5weSBcXFxcXFxuK1xcdHZsYW4ucHkgXFxcXFxcbiBcXHR4ZHBfbWV0YWRhdGEucHkgXFxcXFxcbiBcXHR4c2tfcmVjb25maWcucHkgXFxcXFxcbiBcXHQjXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZ1xcbmluZGV4IGQ4OWE5YmExNzY1NTguLmM2YzJiNjRiYjcxMjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXFxuQEAgLTI0LDUgKzI0LDYgQEAgQ09ORklHX05FVF9TQ0hfSU5HUkVTUz15XFxuIENPTkZJR19TWU5DX0ZJTEU9eVxcbiBDT05GSUdfVURNQUJVRj15XFxuIENPTkZJR19VU0VSX05TPXlcXG4rQ09ORklHX1ZMQU5fODAyMVE9bVxcbiBDT05GSUdfVlhMQU49eVxcbiBDT05GSUdfWEZSTV9VU0VSPXlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XFxuaW5kZXggODFlMWQxODY1Y2Q1MC4uNDA3N2Y1ZjFhMWJlMyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcXG5AQCAtMzEsNiArMzEsNyBAQCB0cnk6XFxuICAgICAgICAga3NmdF9zZXR1cCwga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcXG4rICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XFxuICAgICBmcm9tIGRyaXZlcnMubmV0LmxpYi5weSBpbXBvcnQgR2VuZXJhdGVUcmFmZmljLCBSZW1vdGUsIElwZXJmM1J1bm5lclxcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnZcXG4gXFxuQEAgLTQ5LDcgKzUwLDcgQEAgdHJ5OlxcbiAgICAgICAgICAgICAgICBcXFwia3NmdF9uZVxcXCIsIFxcXCJrc2Z0X25vdF9pblxcXCIsIFxcXCJrc2Z0X3JhaXNlc1xcXCIsIFxcXCJrc2Z0X3RydWVcXFwiLCBcXFwia3NmdF9ndFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJrc2Z0X25vdF9ub25lXFxcIiwgXFxcImtzZnRfbm90X25vbmVcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiTmV0RHJ2RW52XFxcIiwgXFxcIk5ldERydkVwRW52XFxcIiwgXFxcIk5ldERydkNvbnRFbnZcXFwiLCBcXFwiR2VuZXJhdGVUcmFmZmljXFxcIixcXG4tICAgICAgICAgICAgICAgXFxcIlJlbW90ZVxcXCIsIFxcXCJJcGVyZjNSdW5uZXJcXFwiXVxcbisgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCIsIFxcXCJzZXRfZXRodG9vbF9mZWF0XFxcIl1cXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcXG4gICAgIHByaW50KFxcXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1xcXCIpXFxuICAgICBwcmludChzdHIoZSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHlcXG5AQCAtMCwwICsxLDEyNyBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbitWTEFOIHRlc3RzLlxcbitcXG4rVmFsaWRhdGVzIHRoYXQgcGluZyB0cmFmZmljIGlzIHNlbnQgYW5kIHJlY2VpdmVkIGNvcnJlY3RseSBvdmVyIDgwMi4xcVxcbithbmQgODAyLjFhZCBWTEFOIGludGVyZmFjZXMsIHdpdGggaGFyZHdhcmUgUlggVkxBTiBzdHJpcHBpbmcgZW5hYmxlZCBhbmRcXG4rZGlzYWJsZWQgb24gdGhlIGxvY2FsIGludGVyZmFjZS5cXG4rXFxuK1RoZSBcXFwiaHdcXFwiIHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcXG4rdGhlIGRldmljZSwgdGhlIFxcXCJzd1xcXCIgdGVzdCB2YXJpYW50cyBkaXNhYmxlIGFsbCBvZiB0aGVtLiBBIHRlc3QgaXMgeGZhaWxlZFxcbitpZiB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHBvc3NpYmxlLlxcbitcXG4rVGVzdCBjYXNlczpcXG4rICAtIDgwMjFxX2h3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb25cXG4rICAtIDgwMjFxX3N3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXFxuKyAgLSA4MDIxYWRfaHc6IFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMWFkIFZMQU4sIEhXIHN0cmlwcGluZyBvblxcbisgIC0gODAyMWFkX3N3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXFxuKyAgLSBxaW5xX2h3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcXG4rICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9uXFxuKyAgLSBxaW5xX3N3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcXG4rICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9mZlxcbitcXFwiXFxcIlxcXCJcXG4rXFxuK2ltcG9ydCBvc1xcbitcXG4rZnJvbSBsaWIucHkgaW1wb3J0IChcXG4rICAgIEtzZnROYW1lZFZhcmlhbnQsXFxuKyAgICBLc2Z0WGZhaWxFeCxcXG4rICAgIE5ldERydkVwRW52LFxcbisgICAgY21kLFxcbisgICAgZGVmZXIsXFxuKyAgICBldGh0b29sLFxcbisgICAgaXAsXFxuKyAgICBrc2Z0X2V4aXQsXFxuKyAgICBrc2Z0X3J1bixcXG4rICAgIGtzZnRfdmFyaWFudHMsXFxuKyAgICBzZXRfZXRodG9vbF9mZWF0LFxcbispXFxuK1xcbitPVVRFUl9ERVYgPSBmXFxcInZsb3V0e29zLmdldHBpZCgpfVxcXCJcXG4rSU5ORVJfREVWID0gZlxcXCJ2bGlue29zLmdldHBpZCgpfVxcXCJcXG4rXFxuK09VVEVSX1ZJRCA9IDEwMFxcbitJTk5FUl9WSUQgPSAyMDBcXG4rXFxuK0xPQ0FMX0lQID0gXFxcIjE5OC41MS4xMDAuMVxcXCJcXG4rUkVNT1RFX0lQID0gXFxcIjE5OC41MS4xMDAuMlxcXCJcXG4rXFxuK1xcbitkZWYgX3ZsYW5fYWRkKGJhc2UsIG5hbWUsIHByb3RvLCB2aWQsIGhvc3Q9Tm9uZSk6XFxuKyAgICBcXFwiXFxcIlxcXCJDcmVhdGUgYSBWTEFOIGRldmljZSBvbiB0b3Agb2YgYmFzZSBhbmQgYnJpbmcgaXQgdXAuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgaXAoZlxcXCJsaW5rIGFkZCBsaW5rIHtiYXNlfSBuYW1lIHtuYW1lfSB0eXBlIHZsYW4gcHJvdG8ge3Byb3RvfSBpZCB7dmlkfVxcXCIsXFxuKyAgICAgICBob3N0PWhvc3QpXFxuKyAgICBkZWZlcihpcCwgZlxcXCJsaW5rIGRlbCB7bmFtZX1cXFwiLCBob3N0PWhvc3QpXFxuKyAgICBpcChmXFxcImxpbmsgc2V0IHtuYW1lfSB1cFxcXCIsIGhvc3Q9aG9zdClcXG4rXFxuK1xcbitkZWYgX3ZsYW5fc2V0dXAoYmFzZSwgYWRkciwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBob3N0PU5vbmUpOlxcbisgICAgXFxcIlxcXCJcXFwiQ3JlYXRlIFZMQU4gaW50ZXJmYWNlcyBvbiBiYXNlIGFuZCBzZXQgYW4gSVAgb24gdGhlIGlubmVybW9zdCBvbmUuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgX3ZsYW5fYWRkKGJhc2UsIE9VVEVSX0RFViwgb3V0ZXJfcHJvdG8sIE9VVEVSX1ZJRCwgaG9zdD1ob3N0KVxcbisgICAgaWYgaW5uZXJfcHJvdG86XFxuKyAgICAgICAgX3ZsYW5fYWRkKE9VVEVSX0RFViwgSU5ORVJfREVWLCBpbm5lcl9wcm90bywgSU5ORVJfVklELCBob3N0PWhvc3QpXFxuK1xcbisgICAgZGV2ID0gSU5ORVJfREVWIGlmIGlubmVyX3Byb3RvIGVsc2UgT1VURVJfREVWXFxuKyAgICBpcChmXFxcImFkZHIgYWRkIHthZGRyfS8yNCBkZXYge2Rldn1cXFwiLCBob3N0PWhvc3QpXFxuK1xcbitcXG4rZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOlxcbisgICAgXFxcIlxcXCJcXFwiQ29uZmlndXJlIFZMQU4gc3RyaXBwaW5nIGFuZCBjcmVhdGUgdGhlIFZMQU4gaW50ZXJmYWNlcy5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgICBuYW1lcyA9IFtcXFwicngtdmxhbi1vZmZsb2FkXFxcIl1cXG4rICAgIGlmIG91dGVyX3Byb3RvID09IFxcXCI4MDIuMWFkXFxcIjpcXG4rICAgICAgICBuYW1lcy5hcHBlbmQoXFxcInJ4LXZsYW4tc3RhZy1ody1wYXJzZVxcXCIpXFxuK1xcbisgICAgZmVhdCA9IGV0aHRvb2woZlxcXCItayB7Y2ZnLmlmbmFtZX1cXFwiLCBqc29uPVRydWUpWzBdXFxuKyAgICBmZWF0cyA9IHt9XFxuKyAgICBmb3IgbmFtZSBpbiBuYW1lczpcXG4rICAgICAgICAjIGh3OiBza2lwIHRoZSBmZWF0dXJlcyB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnRcXG4rICAgICAgICAjIHN3OiByZXF1ZXN0IGFsbCBvZiB0aGVtIG9mZlxcbisgICAgICAgIGlmIGh3X3N0cmlwIGFuZCBmZWF0W25hbWVdW1xcXCJmaXhlZFxcXCJdIGFuZCBub3QgZmVhdFtuYW1lXVtcXFwiYWN0aXZlXFxcIl06XFxuKyAgICAgICAgICAgIGNvbnRpbnVlXFxuKyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxcbitcXG4rICAgIGlmIGh3X3N0cmlwIGFuZCBub3QgZmVhdHM6XFxuKyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IFJYIFZMQU4gc3RyaXBwaW5nXFxcIilcXG4rXFxuKyAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsIGZlYXRzKVxcbitcXG4rICAgIF92bGFuX3NldHVwKGNmZy5pZm5hbWUsIExPQ0FMX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8pXFxuKyAgICBfdmxhbl9zZXR1cChjZmcucmVtb3RlX2lmbmFtZSwgUkVNT1RFX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sXFxuKyAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXFxuK1xcbitcXG4rZGVmIF92bGFuX3ZhcmlhbnRzKCk6XFxuKyAgICBcXFwiXFxcIlxcXCJHZW5lcmF0b3IgdGhhdCB5aWVsZHMgdGhlIFZMQU4gcHJvdG9jb2xzIGFuZCB0aGUgc3RyaXBwaW5nIG1vZGUuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMXFfaHdcXFwiLCBcXFwiODAyLjFxXFxcIiwgTm9uZSwgVHJ1ZSlcXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXFxcIjgwMjFxX3N3XFxcIiwgXFxcIjgwMi4xcVxcXCIsIE5vbmUsIEZhbHNlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMWFkX2h3XFxcIiwgXFxcIjgwMi4xYWRcXFwiLCBOb25lLCBUcnVlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMWFkX3N3XFxcIiwgXFxcIjgwMi4xYWRcXFwiLCBOb25lLCBGYWxzZSlcXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXFxcInFpbnFfaHdcXFwiLCBcXFwiODAyLjFhZFxcXCIsIFxcXCI4MDIuMXFcXFwiLCBUcnVlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwicWlucV9zd1xcXCIsIFxcXCI4MDIuMWFkXFxcIiwgXFxcIjgwMi4xcVxcXCIsIEZhbHNlKVxcbitcXG4rXFxuK0Brc2Z0X3ZhcmlhbnRzKF92bGFuX3ZhcmlhbnRzKCkpXFxuK2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XFxuKyAgICBcXFwiXFxcIlxcXCJSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0XFxcIlxcXCJcXFwiXFxuK1xcbisgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcXG4rXFxuKyAgICBjbWQoZlxcXCJwaW5nIC1jIDEgLVcgNSB7UkVNT1RFX0lQfVxcXCIpXFxuK1xcbitcXG4rZGVmIG1haW4oKSAtXFx1MDAzZSBOb25lOlxcbisgICAgXFxcIlxcXCJcXFwiIEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgd2l0aCBOZXREcnZFcEVudihfX2ZpbGVfXykgYXMgY2ZnOlxcbisgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKVxcbisgICAga3NmdF9leGl0KClcXG4rXFxuK1xcbitpZiBfX25hbWVfXyA9PSBcXFwiX19tYWluX19cXFwiOlxcbisgICAgbWFpbigpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxcbmluZGV4IDU5MWIxZTZjN2VlYWEuLjQwY2NkY2YwYzM3ODYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XFxuQEAgLTQ4LDExICs0OCwxMiBAQCB0cnk6XFxuICAgICAgICAgICAgICAgIFxcXCJrc2Z0X25vdF9ub25lXFxcIiwgXFxcImtzZnRfbm90X25vbmVcXFwiXVxcbiBcXG4gICAgIGZyb20gLmVudiBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudlxcbisgICAgZnJvbSAuZmVhdCBpbXBvcnQgc2V0X2V0aHRvb2xfZmVhdFxcbiAgICAgZnJvbSAubG9hZCBpbXBvcnQgR2VuZXJhdGVUcmFmZmljLCBJcGVyZjNSdW5uZXJcXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXFxuIFxcbiAgICAgX19hbGxfXyArPSBbXFxcIk5ldERydkVudlxcXCIsIFxcXCJOZXREcnZFcEVudlxcXCIsIFxcXCJOZXREcnZDb250RW52XFxcIiwgXFxcIkdlbmVyYXRlVHJhZmZpY1xcXCIsXFxuLSAgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCJdXFxuKyAgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCIsIFxcXCJzZXRfZXRodG9vbF9mZWF0XFxcIl1cXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcXG4gICAgIHByaW50KFxcXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1xcXCIpXFxuICAgICBwcmludChzdHIoZSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmI5NGEyNDIxNGU1OTdcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcXG5AQCAtMCwwICsxLDM1IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbitOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxcbitcXG4rUHJvdmlkZXMgY29tbW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5naW5nIGRldmljZSBmZWF0dXJlcyB2aWEgZXRodG9vbC5cXG4rXFxcIlxcXCJcXFwiXFxuK1xcbitmcm9tIC4gaW1wb3J0IEtzZnRYZmFpbEV4LCBkZWZlciwgZXRodG9vbCwga3NmdF9wclxcbitcXG4rXFxuK2RlZiBzZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XFxuKyAgICBcXFwiXFxcIlxcXCJTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXFxcIlxcXCJcXFwiXFxuKyAgICBzMm4gPSB7VHJ1ZTogXFxcIm9uXFxcIiwgRmFsc2U6IFxcXCJvZmZcXFwifVxcbitcXG4rICAgIG5ldyA9IFtcXFwiLUtcXFwiLCBkZXZdXFxuKyAgICBvbGQgPSBbXFxcIi1LXFxcIiwgZGV2XVxcbisgICAgbm9fY2hhbmdlID0gVHJ1ZVxcbisgICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XFxuKyAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxcbisgICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXFxcImFjdGl2ZVxcXCJdXV1cXG4rXFxuKyAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcXFwiYWN0aXZlXFxcIl0gIT0gc3RhdGU6XFxuKyAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXFxuKyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXFxcImZpeGVkXFxcIl06XFxuKyAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVxcXCIpXFxuKyAgICBpZiBub19jaGFuZ2U6XFxuKyAgICAgICAgcmV0dXJuXFxuK1xcbisgICAgZXRoX2NtZCA9IGV0aHRvb2woXFxcIiBcXFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxcbisgICAgZGVmZXIoZXRodG9vbCwgXFxcIiBcXFwiLmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxcbitcXG4rICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcXG4rICAgIGlmIGV0aF9jbWQuc3Rkb3V0OlxcbisgICAgICAgIGtzZnRfcHIoZXRoX2NtZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuODA4ODU5NjMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjgxODMxNDg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGRhNGM1NDJjMzNiODJiYWZlZjNhZDdjZWM4NDJkOGZlZmY1MGIyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDE1OjA2OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHlcbmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG5AQCAtNDgsNyArNDgsNyBAQCBpbXBvcnQgcmVcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wclxuIGZyb20gbGliLnB5IGltcG9ydCBOZXREcnZFcEVudiwgS3NmdEZhaWxFeCwgS3NmdFhmYWlsRXhcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0ZGV2RmFtaWx5LCBFdGh0b29sRmFtaWx5XG4tZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwXG4rZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwLCBzZXRfZXRodG9vbF9mZWF0XG4gZnJvbSBsaWIucHkgaW1wb3J0IGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiBcbiBcbkBAIC05MSwzMSArOTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6XG4gICAgICAgICBkZWZlcihpcCwgZlwibGluayBzZXQgZGV2IHtkZXZbJ2lmbmFtZSddfSBtdHUge2RldlsnbXR1J119XCIsIGhvc3Q9aG9zdClcbiBcbiBcbi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKTpcbi0gICAgczJuID0ge1RydWU6IFwib25cIiwgRmFsc2U6IFwib2ZmXCJ9XG4tXG4tICAgIG5ldyA9IFtcIi1LXCIsIGRldl1cbi0gICAgb2xkID0gW1wiLUtcIiwgZGV2XVxuLSAgICBub19jaGFuZ2UgPSBUcnVlXG4tICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOlxuLSAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxuLSAgICAgICAgb2xkICs9IFtuYW1lLCBzMm5bY3VycmVudFtuYW1lXVtcImFjdGl2ZVwiXV1dXG4tXG4tICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wiYWN0aXZlXCJdICE9IHN0YXRlOlxuLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXG4tICAgICAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcImZpeGVkXCJdOlxuLSAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB7bmFtZX1cIilcbi0gICAgaWYgbm9fY2hhbmdlOlxuLSAgICAgICAgcmV0dXJuXG4tXG4tICAgIGV0aF9jbWQgPSBldGh0b29sKFwiIFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxuLSAgICBkZWZlcihldGh0b29sLCBcIiBcIi5qb2luKG9sZCksIGhvc3Q9aG9zdClcbi1cbi0gICAgIyBJZiBldGh0b29sIHByaW50ZWQgc29tZXRoaW5nIGtlcm5lbCBtdXN0IGhhdmUgbW9kaWZpZWQgc29tZSBmZWF0dXJlc1xuLSAgICBpZiBldGhfY21kLnN0ZG91dDpcbi0gICAgICAgIGtzZnRfcHIoZXRoX2NtZClcbi1cbi1cbiBkZWYgX2dldF9xdWV1ZV9zdGF0cyhjZmcsIHF1ZXVlX2lkKTpcbiAgICAgXCJcIlwiR2V0IHN0YXRzIGZvciBhIHNwZWNpZmljIFJ4IHF1ZXVlLlwiXCJcIlxuICAgICBjZmcud2FpdF9od19zdGF0c19zZXR0bGUoKVxuQEAgLTI0MiwxNSArMjE3LDE1IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxuICAgICAgICAgY3RsX2ZpbGVfd3JpdGUoZmx1c2hfcGF0aCwgXCIyMDAwMDBcIilcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCBcIjEwXCIpXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyeC1ncm8taHdcIjogRmFsc2UsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1wiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcIjogVHJ1ZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IEZhbHNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuICAgICBlbGlmIG1vZGUgPT0gXCJod1wiOlxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwiOiBGYWxzZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcInJ4LWdyby1od1wiOiBUcnVlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbisgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyeC1ncm8taHdcIjogVHJ1ZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbiBcbiAgICAgICAgICMgU29tZSBOSUNzIHRyZWF0IEhXIEdSTyBhcyBhIEdSTyBzdWItZmVhdHVyZSBzbyBkaXNhYmxpbmcgR1JPXG4gICAgICAgICAjIHdpbGwgYWxzbyBjbGVhciBIVyBHUk8uIFVzZSBhIGhhY2sgb2YgaW5zdGFsbGluZyBYRFAgZ2VuZXJpY1xuQEAgLTI2NSwyNyArMjQwLDI3IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxuICAgICAgICAgICAgICMgQXR0YWNoaW5nIFhEUCBtYXkgY2hhbmdlIGZlYXR1cmVzLCBmZXRjaCB0aGUgbGF0ZXN0IHN0YXRlXG4gICAgICAgICAgICAgZmVhdCA9IGV0aHRvb2woZlwiLWsge2NmZy5pZm5hbWV9XCIsIGpzb249VHJ1ZSlbMF1cbiBcbi0gICAgICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbisgICAgICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwiOiBUcnVlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IFRydWUsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuICAgICBlbGlmIG1vZGUgPT0gXCJscm9cIjpcbiAgICAgICAgICMgbmV0ZGV2c2ltIGFkdmVydGlzZXMgTFJPIGZvciBmZWF0dXJlIGluaGVyaXRhbmNlIHRlc3Rpbmcgd2l0aFxuICAgICAgICAgIyBib25kaW5nL3RlYW0gdGVzdHMgYnV0IGl0IGRvZXNuJ3QgYWN0dWFsbHkgcGVyZm9ybSB0aGUgb2ZmbG9hZFxuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbShuc2ltX3Rlc3Q9RmFsc2UpXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWV9KVxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1wiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2UsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcInJ4LWdyby1od1wiOiBGYWxzZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWV9KVxuIFxuICAgICB0cnk6XG4gICAgICAgICAjIERpc2FibGUgVFNPIGZvciBsb2NhbCB0ZXN0c1xuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxuIFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLnJlbW90ZV9pZm5hbWUsIGNmZy5yZW1vdGVfZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFwiOiBGYWxzZX0sXG4tICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFwiOiBGYWxzZX0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbiAgICAgZXhjZXB0IEtzZnRYZmFpbEV4OlxuICAgICAgICAgcGFzc1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbmluZGV4IGJkM2I4ZDJmYTQ3ZTAuLjU1ODJiNjQ0MDc4ZWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbkBAIC01NCw2ICs1NCw3IEBAIFRFU1RfUFJPR1MgPSBcXFxuIFx0dHNvLnB5IFxcXG4gXHR1c2VybnNfZGV2bWVtLnB5IFxcXG4gXHR1c28ucHkgXFxcbitcdHZsYW4ucHkgXFxcbiBcdHhkcF9tZXRhZGF0YS5weSBcXFxuIFx0eHNrX3JlY29uZmlnLnB5IFxcXG4gXHQjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG5pbmRleCBkODlhOWJhMTc2NTU4Li5jNmMyYjY0YmI3MTI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWdcbkBAIC0yNCw1ICsyNCw2IEBAIENPTkZJR19ORVRfU0NIX0lOR1JFU1M9eVxuIENPTkZJR19TWU5DX0ZJTEU9eVxuIENPTkZJR19VRE1BQlVGPXlcbiBDT05GSUdfVVNFUl9OUz15XG4rQ09ORklHX1ZMQU5fODAyMVE9bVxuIENPTkZJR19WWExBTj15XG4gQ09ORklHX1hGUk1fVVNFUj15XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XG5pbmRleCA4MWUxZDE4NjVjZDUwLi40MDc3ZjVmMWExYmUzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbkBAIC0zMSw2ICszMSw3IEBAIHRyeTpcbiAgICAgICAgIGtzZnRfc2V0dXAsIGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcbisgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IHNldF9ldGh0b29sX2ZlYXRcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgUmVtb3RlLCBJcGVyZjNSdW5uZXJcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnZcbiBcbkBAIC00OSw3ICs1MCw3IEBAIHRyeTpcbiAgICAgICAgICAgICAgICBcImtzZnRfbmVcIiwgXCJrc2Z0X25vdF9pblwiLCBcImtzZnRfcmFpc2VzXCIsIFwia3NmdF90cnVlXCIsIFwia3NmdF9ndFwiLFxuICAgICAgICAgICAgICAgIFwia3NmdF9ub3Rfbm9uZVwiLCBcImtzZnRfbm90X25vbmVcIixcbiAgICAgICAgICAgICAgICBcIk5ldERydkVudlwiLCBcIk5ldERydkVwRW52XCIsIFwiTmV0RHJ2Q29udEVudlwiLCBcIkdlbmVyYXRlVHJhZmZpY1wiLFxuLSAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCJdXG4rICAgICAgICAgICAgICAgXCJSZW1vdGVcIiwgXCJJcGVyZjNSdW5uZXJcIiwgXCJzZXRfZXRodG9vbF9mZWF0XCJdXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcbiAgICAgcHJpbnQoXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1wiKVxuICAgICBwcmludChzdHIoZSkpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHlcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XG5AQCAtMCwwICsxLDEyNyBAQFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rXCJcIlwiXG4rVkxBTiB0ZXN0cy5cbitcbitWYWxpZGF0ZXMgdGhhdCBwaW5nIHRyYWZmaWMgaXMgc2VudCBhbmQgcmVjZWl2ZWQgY29ycmVjdGx5IG92ZXIgODAyLjFxXG4rYW5kIDgwMi4xYWQgVkxBTiBpbnRlcmZhY2VzLCB3aXRoIGhhcmR3YXJlIFJYIFZMQU4gc3RyaXBwaW5nIGVuYWJsZWQgYW5kXG4rZGlzYWJsZWQgb24gdGhlIGxvY2FsIGludGVyZmFjZS5cbitcbitUaGUgXCJod1wiIHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcbit0aGUgZGV2aWNlLCB0aGUgXCJzd1wiIHRlc3QgdmFyaWFudHMgZGlzYWJsZSBhbGwgb2YgdGhlbS4gQSB0ZXN0IGlzIHhmYWlsZWRcbitpZiB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHBvc3NpYmxlLlxuK1xuK1Rlc3QgY2FzZXM6XG4rICAtIDgwMjFxX2h3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbisgIC0gODAyMXFfc3c6ICBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFxIFZMQU4sIEhXIHN0cmlwcGluZyBvZmZcbisgIC0gODAyMWFkX2h3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbisgIC0gODAyMWFkX3N3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXG4rICAtIHFpbnFfaHc6ICAgVHJhZmZpYyBvdmVyIGFuIDgwMi4xcSBWTEFOIHN0YWNrZWQgb24gYW4gODAyLjFhZCBWTEFOLFxuKyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvblxuKyAgLSBxaW5xX3N3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcbisgICAgICAgICAgICAgICBIVyBzdHJpcHBpbmcgb2ZmXG4rXCJcIlwiXG4rXG4raW1wb3J0IG9zXG4rXG4rZnJvbSBsaWIucHkgaW1wb3J0IChcbisgICAgS3NmdE5hbWVkVmFyaWFudCxcbisgICAgS3NmdFhmYWlsRXgsXG4rICAgIE5ldERydkVwRW52LFxuKyAgICBjbWQsXG4rICAgIGRlZmVyLFxuKyAgICBldGh0b29sLFxuKyAgICBpcCxcbisgICAga3NmdF9leGl0LFxuKyAgICBrc2Z0X3J1bixcbisgICAga3NmdF92YXJpYW50cyxcbisgICAgc2V0X2V0aHRvb2xfZmVhdCxcbispXG4rXG4rT1VURVJfREVWID0gZlwidmxvdXR7b3MuZ2V0cGlkKCl9XCJcbitJTk5FUl9ERVYgPSBmXCJ2bGlue29zLmdldHBpZCgpfVwiXG4rXG4rT1VURVJfVklEID0gMTAwXG4rSU5ORVJfVklEID0gMjAwXG4rXG4rTE9DQUxfSVAgPSBcIjE5OC41MS4xMDAuMVwiXG4rUkVNT1RFX0lQID0gXCIxOTguNTEuMTAwLjJcIlxuK1xuK1xuK2RlZiBfdmxhbl9hZGQoYmFzZSwgbmFtZSwgcHJvdG8sIHZpZCwgaG9zdD1Ob25lKTpcbisgICAgXCJcIlwiQ3JlYXRlIGEgVkxBTiBkZXZpY2Ugb24gdG9wIG9mIGJhc2UgYW5kIGJyaW5nIGl0IHVwLlwiXCJcIlxuK1xuKyAgICBpcChmXCJsaW5rIGFkZCBsaW5rIHtiYXNlfSBuYW1lIHtuYW1lfSB0eXBlIHZsYW4gcHJvdG8ge3Byb3RvfSBpZCB7dmlkfVwiLFxuKyAgICAgICBob3N0PWhvc3QpXG4rICAgIGRlZmVyKGlwLCBmXCJsaW5rIGRlbCB7bmFtZX1cIiwgaG9zdD1ob3N0KVxuKyAgICBpcChmXCJsaW5rIHNldCB7bmFtZX0gdXBcIiwgaG9zdD1ob3N0KVxuK1xuK1xuK2RlZiBfdmxhbl9zZXR1cChiYXNlLCBhZGRyLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sIGhvc3Q9Tm9uZSk6XG4rICAgIFwiXCJcIkNyZWF0ZSBWTEFOIGludGVyZmFjZXMgb24gYmFzZSBhbmQgc2V0IGFuIElQIG9uIHRoZSBpbm5lcm1vc3Qgb25lLlwiXCJcIlxuK1xuKyAgICBfdmxhbl9hZGQoYmFzZSwgT1VURVJfREVWLCBvdXRlcl9wcm90bywgT1VURVJfVklELCBob3N0PWhvc3QpXG4rICAgIGlmIGlubmVyX3Byb3RvOlxuKyAgICAgICAgX3ZsYW5fYWRkKE9VVEVSX0RFViwgSU5ORVJfREVWLCBpbm5lcl9wcm90bywgSU5ORVJfVklELCBob3N0PWhvc3QpXG4rXG4rICAgIGRldiA9IElOTkVSX0RFViBpZiBpbm5lcl9wcm90byBlbHNlIE9VVEVSX0RFVlxuKyAgICBpcChmXCJhZGRyIGFkZCB7YWRkcn0vMjQgZGV2IHtkZXZ9XCIsIGhvc3Q9aG9zdClcbitcbitcbitkZWYgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4rICAgIFwiXCJcIkNvbmZpZ3VyZSBWTEFOIHN0cmlwcGluZyBhbmQgY3JlYXRlIHRoZSBWTEFOIGludGVyZmFjZXMuXCJcIlwiXG4rXG4rICAgIG5hbWVzID0gW1wicngtdmxhbi1vZmZsb2FkXCJdXG4rICAgIGlmIG91dGVyX3Byb3RvID09IFwiODAyLjFhZFwiOlxuKyAgICAgICAgbmFtZXMuYXBwZW5kKFwicngtdmxhbi1zdGFnLWh3LXBhcnNlXCIpXG4rXG4rICAgIGZlYXQgPSBldGh0b29sKGZcIi1rIHtjZmcuaWZuYW1lfVwiLCBqc29uPVRydWUpWzBdXG4rICAgIGZlYXRzID0ge31cbisgICAgZm9yIG5hbWUgaW4gbmFtZXM6XG4rICAgICAgICAjIGh3OiBza2lwIHRoZSBmZWF0dXJlcyB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnRcbisgICAgICAgICMgc3c6IHJlcXVlc3QgYWxsIG9mIHRoZW0gb2ZmXG4rICAgICAgICBpZiBod19zdHJpcCBhbmQgZmVhdFtuYW1lXVtcImZpeGVkXCJdIGFuZCBub3QgZmVhdFtuYW1lXVtcImFjdGl2ZVwiXTpcbisgICAgICAgICAgICBjb250aW51ZVxuKyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxuK1xuKyAgICBpZiBod19zdHJpcCBhbmQgbm90IGZlYXRzOlxuKyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBSWCBWTEFOIHN0cmlwcGluZ1wiKVxuK1xuKyAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsIGZlYXRzKVxuK1xuKyAgICBfdmxhbl9zZXR1cChjZmcuaWZuYW1lLCBMT0NBTF9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvKVxuKyAgICBfdmxhbl9zZXR1cChjZmcucmVtb3RlX2lmbmFtZSwgUkVNT1RFX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sXG4rICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbitcbitcbitkZWYgX3ZsYW5fdmFyaWFudHMoKTpcbisgICAgXCJcIlwiR2VuZXJhdG9yIHRoYXQgeWllbGRzIHRoZSBWTEFOIHByb3RvY29scyBhbmQgdGhlIHN0cmlwcGluZyBtb2RlLlwiXCJcIlxuK1xuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMXFfaHdcIiwgXCI4MDIuMXFcIiwgTm9uZSwgVHJ1ZSlcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcIjgwMjFxX3N3XCIsIFwiODAyLjFxXCIsIE5vbmUsIEZhbHNlKVxuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMWFkX2h3XCIsIFwiODAyLjFhZFwiLCBOb25lLCBUcnVlKVxuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMWFkX3N3XCIsIFwiODAyLjFhZFwiLCBOb25lLCBGYWxzZSlcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcInFpbnFfaHdcIiwgXCI4MDIuMWFkXCIsIFwiODAyLjFxXCIsIFRydWUpXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCJxaW5xX3N3XCIsIFwiODAyLjFhZFwiLCBcIjgwMi4xcVwiLCBGYWxzZSlcbitcbitcbitAa3NmdF92YXJpYW50cyhfdmxhbl92YXJpYW50cygpKVxuK2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4rICAgIFwiXCJcIlJ1biBhIHNpbmdsZSBWTEFOIHRlc3RcIlwiXCJcbitcbisgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcbitcbisgICAgY21kKGZcInBpbmcgLWMgMSAtVyA1IHtSRU1PVEVfSVB9XCIpXG4rXG4rXG4rZGVmIG1haW4oKSAtXHUwMDNlIE5vbmU6XG4rICAgIFwiXCJcIiBLc2Z0IGJvaWxlciBwbGF0ZSBtYWluIFwiXCJcIlxuK1xuKyAgICB3aXRoIE5ldERydkVwRW52KF9fZmlsZV9fKSBhcyBjZmc6XG4rICAgICAgICBrc2Z0X3J1bihjYXNlcz1bdGVzdF0sIGFyZ3M9KGNmZywgKSlcbisgICAga3NmdF9leGl0KClcbitcbitcbitpZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4rICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XG5AQCAtNDgsMTEgKzQ4LDEyIEBAIHRyeTpcbiAgICAgICAgICAgICAgICBcImtzZnRfbm90X25vbmVcIiwgXCJrc2Z0X25vdF9ub25lXCJdXG4gXG4gICAgIGZyb20gLmVudiBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudlxuKyAgICBmcm9tIC5mZWF0IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXG4gXG4gICAgIF9fYWxsX18gKz0gW1wiTmV0RHJ2RW52XCIsIFwiTmV0RHJ2RXBFbnZcIiwgXCJOZXREcnZDb250RW52XCIsIFwiR2VuZXJhdGVUcmFmZmljXCIsXG4tICAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCJdXG4rICAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCIsIFwic2V0X2V0aHRvb2xfZmVhdFwiXVxuIGV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9yIGFzIGU6XG4gICAgIHByaW50KFwiRmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXNcIilcbiAgICAgcHJpbnQoc3RyKGUpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iOTRhMjQyMTRlNTk3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weVxuQEAgLTAsMCArMSwzNSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbitcIlwiXCJcbitOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxuK1xuK1Byb3ZpZGVzIGNvbW1vbiBvcGVyYXRpb25zIGZvciBjaGFuZ2luZyBkZXZpY2UgZmVhdHVyZXMgdmlhIGV0aHRvb2wuXG4rXCJcIlwiXG4rXG4rZnJvbSAuIGltcG9ydCBLc2Z0WGZhaWxFeCwgZGVmZXIsIGV0aHRvb2wsIGtzZnRfcHJcbitcbitcbitkZWYgc2V0X2V0aHRvb2xfZmVhdChkZXYsIGN1cnJlbnQsIGZlYXRzLCBob3N0PU5vbmUpOlxuKyAgICBcIlwiXCJTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXCJcIlwiXG4rICAgIHMybiA9IHtUcnVlOiBcIm9uXCIsIEZhbHNlOiBcIm9mZlwifVxuK1xuKyAgICBuZXcgPSBbXCItS1wiLCBkZXZdXG4rICAgIG9sZCA9IFtcIi1LXCIsIGRldl1cbisgICAgbm9fY2hhbmdlID0gVHJ1ZVxuKyAgICBmb3IgbmFtZSwgc3RhdGUgaW4gZmVhdHMuaXRlbXMoKTpcbisgICAgICAgIG5ldyArPSBbbmFtZSwgczJuW3N0YXRlXV1cbisgICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCJhY3RpdmVcIl1dXVxuK1xuKyAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcImFjdGl2ZVwiXSAhPSBzdGF0ZTpcbisgICAgICAgICAgICBub19jaGFuZ2UgPSBGYWxzZVxuKyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXCJmaXhlZFwiXTpcbisgICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZlwiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9XCIpXG4rICAgIGlmIG5vX2NoYW5nZTpcbisgICAgICAgIHJldHVyblxuK1xuKyAgICBldGhfY21kID0gZXRodG9vbChcIiBcIi5qb2luKG5ldyksIGhvc3Q9aG9zdClcbisgICAgZGVmZXIoZXRodG9vbCwgXCIgXCIuam9pbihvbGQpLCBob3N0PWhvc3QpXG4rXG4rICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbisgICAgaWYgZXRoX2NtZC5zdGRvdXQ6XG4rICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QxNTowNjowNy44MDg4NjMyNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NjgxODI4NjQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHNlZWluZyBjaGFuZ2VzIHRvIFB5dGhvbiBzY3JpcHRzIChgZ3JvX2xpYi5weWAsIGB2bGFuLnB5YCwgdmFyaW91cyBgX19pbml0X18ucHlgIGZpbGVzIGFuZCBgZmVhdC5weWApLCBhIGBNYWtlZmlsZWAsIGFuZCBhIGBjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyByZXF1aXJlcyBmdXp6aW5nLCBzbyBJIGltbWVkaWF0ZWx5IGhlYWQgdG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkFjY29yZGluZyB0byBTZWN0aW9uIDIsIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiByZXN1bHQgaXMganVzdGlmaWVkIGlmICphbGwqIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gb25lIG9yIG1vcmUgb2Ygc2V2ZXJhbCBjYXRlZ29yaWVzLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIGlzIGNyaXRpY2FsIHRvIGdldHRpbmcgdGhpcyByaWdodC4gVGhlIGluc3RydWN0aW9ucyBsaXN0IG1vZGlmaWNhdGlvbnMgdGhhdCBkbyAqbm90KiByZXF1aXJlIGZ1enppbmc6IGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCB1c2VyLXNwYWNlIHRvb2xzIGFuZCBzY3JpcHRzIHRoYXQgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBhbmQgYnVpbGQgc3lzdGVtL0tjb25maWcgY2hhbmdlcyB0aGF0IGRvbid0IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG5cbkxvb2tpbmcgY2xvc2VseSBhdCB0aGUgZmlsZSBwYXRocywgSSBpbW1lZGlhdGVseSBzZWUgdGhhdCBhbGwgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9gIHBhdGguIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlc2UgYXJlICp1c2VyLXNwYWNlKiBzZWxmLXRlc3RzLCBzY3JpcHRzLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgZGVmaW5pdGVseSBub3Qga2VybmVsIGNvZGUuIFRoZXkgbGl2ZSBpbiBhIGNvbXBsZXRlbHkgaXNvbGF0ZWQgZW52aXJvbm1lbnQsIHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgdGhlbSBhZmZlY3RpbmcgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBUaGVzZSBhcmUgUHl0aG9uIHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhIE1ha2VmaWxlIGZvciBidWlsZGluZyB0aGUgc2VsZnRlc3RzLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHBhdGNoIHN0cmljdGx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgYXJlIG1ldC4gSSBjb25maXJtIHRoaXMgYnkgYXNzaWduaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB3aXRoIG5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYC4gVGhlIHJlYXNvbmluZyBtdXN0IGJlIGNsZWFyIGFuZCBjb25jaXNlLiBCYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgdXNlci1zcGFjZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4gQWZ0ZXIgYSBxdWljayBkb3VibGUtY2hlY2sgb2YgdGhlIGluc3RydWN0aW9ucyBhbmQgdGhlIFwic2V0LXJlc3VsdHNcIiBndWlkZWxpbmVzLCBJJ20gc3VyZSB0aGF0IHRoaXMgYXNzZXNzbWVudCBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mzg3LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDc6MDQuNjI3MTUxNzg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDE1OjA3OjA0LjYyNzE3NjY1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwp86k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-13 14:48:35 +0000 UTC FinishedAt: 2026-09-13 15:07:06 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDE1OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMTU6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZGE0YzU0MmMzM2I4MmJhZmVmM2FkN2NlYzg0MmQ4ZmVmZjUwYjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgMTMgMTU6MDY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHlcbmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG5AQCAtNDgsNyAmIzQzOzQ4LDcgQEAgaW1wb3J0IHJlXG4gZnJvbSBsaWIucHkgaW1wb3J0IGtzZnRfcnVuLCBrc2Z0X2V4aXQsIGtzZnRfcHJcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0RHJ2RXBFbnYsIEtzZnRGYWlsRXgsIEtzZnRYZmFpbEV4XG4gZnJvbSBsaWIucHkgaW1wb3J0IE5ldGRldkZhbWlseSwgRXRodG9vbEZhbWlseVxuLWZyb20gbGliLnB5IGltcG9ydCBia2csIGNtZCwgY3RsX2ZpbGVfd3JpdGUsIGRlZmVyLCBldGh0b29sLCBpcFxuJiM0Mztmcm9tIGxpYi5weSBpbXBvcnQgYmtnLCBjbWQsIGN0bF9maWxlX3dyaXRlLCBkZWZlciwgZXRodG9vbCwgaXAsIHNldF9ldGh0b29sX2ZlYXRcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxuIFxuIFxuQEAgLTkxLDMxICYjNDM7OTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6XG4gICAgICAgICBkZWZlcihpcCwgZlwmIzM0O2xpbmsgc2V0IGRldiB7ZGV2WyYjMzk7aWZuYW1lJiMzOTtdfSBtdHUge2RldlsmIzM5O210dSYjMzk7XX1cJiMzNDssIGhvc3Q9aG9zdClcbiBcbiBcbi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKTpcbi0gICAgczJuID0ge1RydWU6IFwmIzM0O29uXCYjMzQ7LCBGYWxzZTogXCYjMzQ7b2ZmXCYjMzQ7fVxuLVxuLSAgICBuZXcgPSBbXCYjMzQ7LUtcJiMzNDssIGRldl1cbi0gICAgb2xkID0gW1wmIzM0Oy1LXCYjMzQ7LCBkZXZdXG4tICAgIG5vX2NoYW5nZSA9IFRydWVcbi0gICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XG4tICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXVxuLSAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XV1dXG4tXG4tICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wmIzM0O2FjdGl2ZVwmIzM0O10gIT0gc3RhdGU6XG4tICAgICAgICAgICAgbm9fY2hhbmdlID0gRmFsc2Vcbi0gICAgICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wmIzM0O2ZpeGVkXCYjMzQ7XTpcbi0gICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZlwmIzM0O0RldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVwmIzM0Oylcbi0gICAgaWYgbm9fY2hhbmdlOlxuLSAgICAgICAgcmV0dXJuXG4tXG4tICAgIGV0aF9jbWQgPSBldGh0b29sKFwmIzM0OyBcJiMzNDsuam9pbihuZXcpLCBob3N0PWhvc3QpXG4tICAgIGRlZmVyKGV0aHRvb2wsIFwmIzM0OyBcJiMzNDsuam9pbihvbGQpLCBob3N0PWhvc3QpXG4tXG4tICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbi0gICAgaWYgZXRoX2NtZC5zdGRvdXQ6XG4tICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpXG4tXG4tXG4gZGVmIF9nZXRfcXVldWVfc3RhdHMoY2ZnLCBxdWV1ZV9pZCk6XG4gICAgIFwmIzM0O1wmIzM0O1wmIzM0O0dldCBzdGF0cyBmb3IgYSBzcGVjaWZpYyBSeCBxdWV1ZS5cJiMzNDtcJiMzNDtcJiMzNDtcbiAgICAgY2ZnLndhaXRfaHdfc3RhdHNfc2V0dGxlKClcbkBAIC0yNDIsMTUgJiM0MzsyMTcsMTUgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6XG4gICAgICAgICBjdGxfZmlsZV93cml0ZShmbHVzaF9wYXRoLCBcJiMzNDsyMDAwMDBcJiMzNDspXG4gICAgICAgICBjdGxfZmlsZV93cml0ZShpcnFfcGF0aCwgXCYjMzQ7MTBcJiMzNDspXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogRmFsc2V9KVxuJiM0MzsgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7cngtZ3JvLWh3XCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSlcbiAgICAgZWxpZiBtb2RlID09IFwmIzM0O2h3XCYjMzQ7OlxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSlcbiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAge1wmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4gXG4gICAgICAgICAjIFNvbWUgTklDcyB0cmVhdCBIVyBHUk8gYXMgYSBHUk8gc3ViLWZlYXR1cmUgc28gZGlzYWJsaW5nIEdST1xuICAgICAgICAgIyB3aWxsIGFsc28gY2xlYXIgSFcgR1JPLiBVc2UgYSBoYWNrIG9mIGluc3RhbGxpbmcgWERQIGdlbmVyaWNcbkBAIC0yNjUsMjcgJiM0MzsyNDAsMjcgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6XG4gICAgICAgICAgICAgIyBBdHRhY2hpbmcgWERQIG1heSBjaGFuZ2UgZmVhdHVyZXMsIGZldGNoIHRoZSBsYXRlc3Qgc3RhdGVcbiAgICAgICAgICAgICBmZWF0ID0gZXRodG9vbChmXCYjMzQ7LWsge2NmZy5pZm5hbWV9XCYjMzQ7LCBqc29uPVRydWUpWzBdXG4gXG4tICAgICAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4mIzQzOyAgICAgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O3J4LWdyby1od1wmIzM0OzogVHJ1ZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0pXG4gICAgIGVsaWYgbW9kZSA9PSBcJiMzNDtscm9cJiMzNDs6XG4gICAgICAgICAjIG5ldGRldnNpbSBhZHZlcnRpc2VzIExSTyBmb3IgZmVhdHVyZSBpbmhlcml0YW5jZSB0ZXN0aW5nIHdpdGhcbiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwZXJmb3JtIHRoZSBvZmZsb2FkXG4gICAgICAgICBjZmcucmVxdWlyZV9uc2ltKG5zaW1fdGVzdD1GYWxzZSlcbiBcbi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAge1wmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCYjMzQ7OiBGYWxzZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtyeC1ncm8taHdcJiMzNDs6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogVHJ1ZX0pXG4mIzQzOyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwmIzM0OzogRmFsc2UsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7cngtZ3JvLWh3XCYjMzQ7OiBGYWxzZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBcJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWRcJiMzNDs6IFRydWV9KVxuIFxuICAgICB0cnk6XG4gICAgICAgICAjIERpc2FibGUgVFNPIGZvciBsb2NhbCB0ZXN0c1xuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxuIFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLnJlbW90ZV9pZm5hbWUsIGNmZy5yZW1vdGVfZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcJiMzNDt0Y3Atc2VnbWVudGF0aW9uLW9mZmxvYWRcJiMzNDs6IEZhbHNlfSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7XCYjMzQ7dGNwLXNlZ21lbnRhdGlvbi1vZmZsb2FkXCYjMzQ7OiBGYWxzZX0sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXG4gICAgIGV4Y2VwdCBLc2Z0WGZhaWxFeDpcbiAgICAgICAgIHBhc3NcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXG5pbmRleCBiZDNiOGQyZmE0N2UwLi41NTgyYjY0NDA3OGVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXG5AQCAtNTQsNiAmIzQzOzU0LDcgQEAgVEVTVF9QUk9HUyA9IFxcXG4gXHR0c28ucHkgXFxcbiBcdHVzZXJuc19kZXZtZW0ucHkgXFxcbiBcdHVzby5weSBcXFxuJiM0MztcdHZsYW4ucHkgXFxcbiBcdHhkcF9tZXRhZGF0YS5weSBcXFxuIFx0eHNrX3JlY29uZmlnLnB5IFxcXG4gXHQjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG5pbmRleCBkODlhOWJhMTc2NTU4Li5jNmMyYjY0YmI3MTI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWdcbkBAIC0yNCw1ICYjNDM7MjQsNiBAQCBDT05GSUdfTkVUX1NDSF9JTkdSRVNTPXlcbiBDT05GSUdfU1lOQ19GSUxFPXlcbiBDT05GSUdfVURNQUJVRj15XG4gQ09ORklHX1VTRVJfTlM9eVxuJiM0MztDT05GSUdfVkxBTl84MDIxUT1tXG4gQ09ORklHX1ZYTEFOPXlcbiBDT05GSUdfWEZSTV9VU0VSPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbmluZGV4IDgxZTFkMTg2NWNkNTAuLjQwNzdmNWYxYTFiZTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2xpYi9weS9fX2luaXRfXy5weVxuQEAgLTMxLDYgJiM0MzszMSw3IEBAIHRyeTpcbiAgICAgICAgIGtzZnRfc2V0dXAsIGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcbiYjNDM7ICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBHZW5lcmF0ZVRyYWZmaWMsIFJlbW90ZSwgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBOZXREcnZFbnYsIE5ldERydkVwRW52LCBOZXREcnZDb250RW52XG4gXG5AQCAtNDksNyAmIzQzOzUwLDcgQEAgdHJ5OlxuICAgICAgICAgICAgICAgIFwmIzM0O2tzZnRfbmVcJiMzNDssIFwmIzM0O2tzZnRfbm90X2luXCYjMzQ7LCBcJiMzNDtrc2Z0X3JhaXNlc1wmIzM0OywgXCYjMzQ7a3NmdF90cnVlXCYjMzQ7LCBcJiMzNDtrc2Z0X2d0XCYjMzQ7LFxuICAgICAgICAgICAgICAgIFwmIzM0O2tzZnRfbm90X25vbmVcJiMzNDssIFwmIzM0O2tzZnRfbm90X25vbmVcJiMzNDssXG4gICAgICAgICAgICAgICAgXCYjMzQ7TmV0RHJ2RW52XCYjMzQ7LCBcJiMzNDtOZXREcnZFcEVudlwmIzM0OywgXCYjMzQ7TmV0RHJ2Q29udEVudlwmIzM0OywgXCYjMzQ7R2VuZXJhdGVUcmFmZmljXCYjMzQ7LFxuLSAgICAgICAgICAgICAgIFwmIzM0O1JlbW90ZVwmIzM0OywgXCYjMzQ7SXBlcmYzUnVubmVyXCYjMzQ7XVxuJiM0MzsgICAgICAgICAgICAgICBcJiMzNDtSZW1vdGVcJiMzNDssIFwmIzM0O0lwZXJmM1J1bm5lclwmIzM0OywgXCYjMzQ7c2V0X2V0aHRvb2xfZmVhdFwmIzM0O11cbiBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBlOlxuICAgICBwcmludChcJiMzNDtGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1wmIzM0OylcbiAgICAgcHJpbnQoc3RyKGUpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjUxNGFkM2U1ZGZkOFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weVxuQEAgLTAsMCAmIzQzOzEsMTI3IEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1ZMQU4gdGVzdHMuXG4mIzQzO1xuJiM0MztWYWxpZGF0ZXMgdGhhdCBwaW5nIHRyYWZmaWMgaXMgc2VudCBhbmQgcmVjZWl2ZWQgY29ycmVjdGx5IG92ZXIgODAyLjFxXG4mIzQzO2FuZCA4MDIuMWFkIFZMQU4gaW50ZXJmYWNlcywgd2l0aCBoYXJkd2FyZSBSWCBWTEFOIHN0cmlwcGluZyBlbmFibGVkIGFuZFxuJiM0MztkaXNhYmxlZCBvbiB0aGUgbG9jYWwgaW50ZXJmYWNlLlxuJiM0MztcbiYjNDM7VGhlIFwmIzM0O2h3XCYjMzQ7IHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcbiYjNDM7dGhlIGRldmljZSwgdGhlIFwmIzM0O3N3XCYjMzQ7IHRlc3QgdmFyaWFudHMgZGlzYWJsZSBhbGwgb2YgdGhlbS4gQSB0ZXN0IGlzIHhmYWlsZWRcbiYjNDM7aWYgdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBwb3NzaWJsZS5cbiYjNDM7XG4mIzQzO1Rlc3QgY2FzZXM6XG4mIzQzOyAgLSA4MDIxcV9odzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9uXG4mIzQzOyAgLSA4MDIxcV9zdzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZlxuJiM0MzsgIC0gODAyMWFkX2h3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbiYjNDM7ICAtIDgwMjFhZF9zdzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZlxuJiM0MzsgIC0gcWlucV9odzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sXG4mIzQzOyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvblxuJiM0MzsgIC0gcWlucV9zdzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sXG4mIzQzOyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvZmZcbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MztpbXBvcnQgb3NcbiYjNDM7XG4mIzQzO2Zyb20gbGliLnB5IGltcG9ydCAoXG4mIzQzOyAgICBLc2Z0TmFtZWRWYXJpYW50LFxuJiM0MzsgICAgS3NmdFhmYWlsRXgsXG4mIzQzOyAgICBOZXREcnZFcEVudixcbiYjNDM7ICAgIGNtZCxcbiYjNDM7ICAgIGRlZmVyLFxuJiM0MzsgICAgZXRodG9vbCxcbiYjNDM7ICAgIGlwLFxuJiM0MzsgICAga3NmdF9leGl0LFxuJiM0MzsgICAga3NmdF9ydW4sXG4mIzQzOyAgICBrc2Z0X3ZhcmlhbnRzLFxuJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdCxcbiYjNDM7KVxuJiM0MztcbiYjNDM7T1VURVJfREVWID0gZlwmIzM0O3Zsb3V0e29zLmdldHBpZCgpfVwmIzM0O1xuJiM0MztJTk5FUl9ERVYgPSBmXCYjMzQ7dmxpbntvcy5nZXRwaWQoKX1cJiMzNDtcbiYjNDM7XG4mIzQzO09VVEVSX1ZJRCA9IDEwMFxuJiM0MztJTk5FUl9WSUQgPSAyMDBcbiYjNDM7XG4mIzQzO0xPQ0FMX0lQID0gXCYjMzQ7MTk4LjUxLjEwMC4xXCYjMzQ7XG4mIzQzO1JFTU9URV9JUCA9IFwmIzM0OzE5OC41MS4xMDAuMlwmIzM0O1xuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl9hZGQoYmFzZSwgbmFtZSwgcHJvdG8sIHZpZCwgaG9zdD1Ob25lKTpcbiYjNDM7ICAgIFwmIzM0O1wmIzM0O1wmIzM0O0NyZWF0ZSBhIFZMQU4gZGV2aWNlIG9uIHRvcCBvZiBiYXNlIGFuZCBicmluZyBpdCB1cC5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBpcChmXCYjMzQ7bGluayBhZGQgbGluayB7YmFzZX0gbmFtZSB7bmFtZX0gdHlwZSB2bGFuIHByb3RvIHtwcm90b30gaWQge3ZpZH1cJiMzNDssXG4mIzQzOyAgICAgICBob3N0PWhvc3QpXG4mIzQzOyAgICBkZWZlcihpcCwgZlwmIzM0O2xpbmsgZGVsIHtuYW1lfVwmIzM0OywgaG9zdD1ob3N0KVxuJiM0MzsgICAgaXAoZlwmIzM0O2xpbmsgc2V0IHtuYW1lfSB1cFwmIzM0OywgaG9zdD1ob3N0KVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl9zZXR1cChiYXNlLCBhZGRyLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sIGhvc3Q9Tm9uZSk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtDcmVhdGUgVkxBTiBpbnRlcmZhY2VzIG9uIGJhc2UgYW5kIHNldCBhbiBJUCBvbiB0aGUgaW5uZXJtb3N0IG9uZS5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBfdmxhbl9hZGQoYmFzZSwgT1VURVJfREVWLCBvdXRlcl9wcm90bywgT1VURVJfVklELCBob3N0PWhvc3QpXG4mIzQzOyAgICBpZiBpbm5lcl9wcm90bzpcbiYjNDM7ICAgICAgICBfdmxhbl9hZGQoT1VURVJfREVWLCBJTk5FUl9ERVYsIGlubmVyX3Byb3RvLCBJTk5FUl9WSUQsIGhvc3Q9aG9zdClcbiYjNDM7XG4mIzQzOyAgICBkZXYgPSBJTk5FUl9ERVYgaWYgaW5uZXJfcHJvdG8gZWxzZSBPVVRFUl9ERVZcbiYjNDM7ICAgIGlwKGZcJiMzNDthZGRyIGFkZCB7YWRkcn0vMjQgZGV2IHtkZXZ9XCYjMzQ7LCBob3N0PWhvc3QpXG4mIzQzO1xuJiM0MztcbiYjNDM7ZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q29uZmlndXJlIFZMQU4gc3RyaXBwaW5nIGFuZCBjcmVhdGUgdGhlIFZMQU4gaW50ZXJmYWNlcy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgICBuYW1lcyA9IFtcJiMzNDtyeC12bGFuLW9mZmxvYWRcJiMzNDtdXG4mIzQzOyAgICBpZiBvdXRlcl9wcm90byA9PSBcJiMzNDs4MDIuMWFkXCYjMzQ7OlxuJiM0MzsgICAgICAgIG5hbWVzLmFwcGVuZChcJiMzNDtyeC12bGFuLXN0YWctaHctcGFyc2VcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgZmVhdCA9IGV0aHRvb2woZlwmIzM0Oy1rIHtjZmcuaWZuYW1lfVwmIzM0OywganNvbj1UcnVlKVswXVxuJiM0MzsgICAgZmVhdHMgPSB7fVxuJiM0MzsgICAgZm9yIG5hbWUgaW4gbmFtZXM6XG4mIzQzOyAgICAgICAgIyBodzogc2tpcCB0aGUgZmVhdHVyZXMgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0XG4mIzQzOyAgICAgICAgIyBzdzogcmVxdWVzdCBhbGwgb2YgdGhlbSBvZmZcbiYjNDM7ICAgICAgICBpZiBod19zdHJpcCBhbmQgZmVhdFtuYW1lXVtcJiMzNDtmaXhlZFwmIzM0O10gYW5kIG5vdCBmZWF0W25hbWVdW1wmIzM0O2FjdGl2ZVwmIzM0O106XG4mIzQzOyAgICAgICAgICAgIGNvbnRpbnVlXG4mIzQzOyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxuJiM0MztcbiYjNDM7ICAgIGlmIGh3X3N0cmlwIGFuZCBub3QgZmVhdHM6XG4mIzQzOyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgUlggVkxBTiBzdHJpcHBpbmdcJiMzNDspXG4mIzQzO1xuJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LCBmZWF0cylcbiYjNDM7XG4mIzQzOyAgICBfdmxhbl9zZXR1cChjZmcuaWZuYW1lLCBMT0NBTF9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvKVxuJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLnJlbW90ZV9pZm5hbWUsIFJFTU9URV9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLFxuJiM0MzsgICAgICAgICAgICAgICAgaG9zdD1jZmcucmVtb3RlKVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBfdmxhbl92YXJpYW50cygpOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7R2VuZXJhdG9yIHRoYXQgeWllbGRzIHRoZSBWTEFOIHByb3RvY29scyBhbmQgdGhlIHN0cmlwcGluZyBtb2RlLlwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMXFfaHdcJiMzNDssIFwmIzM0OzgwMi4xcVwmIzM0OywgTm9uZSwgVHJ1ZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMXFfc3dcJiMzNDssIFwmIzM0OzgwMi4xcVwmIzM0OywgTm9uZSwgRmFsc2UpXG4mIzQzOyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwmIzM0OzgwMjFhZF9od1wmIzM0OywgXCYjMzQ7ODAyLjFhZFwmIzM0OywgTm9uZSwgVHJ1ZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7ODAyMWFkX3N3XCYjMzQ7LCBcJiMzNDs4MDIuMWFkXCYjMzQ7LCBOb25lLCBGYWxzZSlcbiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCYjMzQ7cWlucV9od1wmIzM0OywgXCYjMzQ7ODAyLjFhZFwmIzM0OywgXCYjMzQ7ODAyLjFxXCYjMzQ7LCBUcnVlKVxuJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcJiMzNDtxaW5xX3N3XCYjMzQ7LCBcJiMzNDs4MDIuMWFkXCYjMzQ7LCBcJiMzNDs4MDIuMXFcJiMzNDssIEZhbHNlKVxuJiM0MztcbiYjNDM7XG4mIzQzO0Brc2Z0X3ZhcmlhbnRzKF92bGFuX3ZhcmlhbnRzKCkpXG4mIzQzO2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcbiYjNDM7XG4mIzQzOyAgICBjbWQoZlwmIzM0O3BpbmcgLWMgMSAtVyA1IHtSRU1PVEVfSVB9XCYjMzQ7KVxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7IEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgICAgd2l0aCBOZXREcnZFcEVudihfX2ZpbGVfXykgYXMgY2ZnOlxuJiM0MzsgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKVxuJiM0MzsgICAga3NmdF9leGl0KClcbiYjNDM7XG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSBcJiMzNDtfX21haW5fX1wmIzM0OzpcbiYjNDM7ICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XG5AQCAtNDgsMTEgJiM0Mzs0OCwxMiBAQCB0cnk6XG4gICAgICAgICAgICAgICAgXCYjMzQ7a3NmdF9ub3Rfbm9uZVwmIzM0OywgXCYjMzQ7a3NmdF9ub3Rfbm9uZVwmIzM0O11cbiBcbiAgICAgZnJvbSAuZW52IGltcG9ydCBOZXREcnZFbnYsIE5ldERydkVwRW52LCBOZXREcnZDb250RW52XG4mIzQzOyAgICBmcm9tIC5mZWF0IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXG4gXG4gICAgIF9fYWxsX18gJiM0Mzs9IFtcJiMzNDtOZXREcnZFbnZcJiMzNDssIFwmIzM0O05ldERydkVwRW52XCYjMzQ7LCBcJiMzNDtOZXREcnZDb250RW52XCYjMzQ7LCBcJiMzNDtHZW5lcmF0ZVRyYWZmaWNcJiMzNDssXG4tICAgICAgICAgICAgICAgIFwmIzM0O1JlbW90ZVwmIzM0OywgXCYjMzQ7SXBlcmYzUnVubmVyXCYjMzQ7XVxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7UmVtb3RlXCYjMzQ7LCBcJiMzNDtJcGVyZjNSdW5uZXJcJiMzNDssIFwmIzM0O3NldF9ldGh0b29sX2ZlYXRcJiMzNDtdXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcbiAgICAgcHJpbnQoXCYjMzQ7RmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXNcJiMzNDspXG4gICAgIHByaW50KHN0cihlKSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYjk0YTI0MjE0ZTU5N1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcbkBAIC0wLDAgJiM0MzsxLDM1IEBAXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzO1wmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxuJiM0MztcbiYjNDM7UHJvdmlkZXMgY29tbW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5naW5nIGRldmljZSBmZWF0dXJlcyB2aWEgZXRodG9vbC5cbiYjNDM7XCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0Mztmcm9tIC4gaW1wb3J0IEtzZnRYZmFpbEV4LCBkZWZlciwgZXRodG9vbCwga3NmdF9wclxuJiM0MztcbiYjNDM7XG4mIzQzO2RlZiBzZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBzMm4gPSB7VHJ1ZTogXCYjMzQ7b25cJiMzNDssIEZhbHNlOiBcJiMzNDtvZmZcJiMzNDt9XG4mIzQzO1xuJiM0MzsgICAgbmV3ID0gW1wmIzM0Oy1LXCYjMzQ7LCBkZXZdXG4mIzQzOyAgICBvbGQgPSBbXCYjMzQ7LUtcJiMzNDssIGRldl1cbiYjNDM7ICAgIG5vX2NoYW5nZSA9IFRydWVcbiYjNDM7ICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOlxuJiM0MzsgICAgICAgIG5ldyAmIzQzOz0gW25hbWUsIHMybltzdGF0ZV1dXG4mIzQzOyAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XV1dXG4mIzQzO1xuJiM0MzsgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXCYjMzQ7YWN0aXZlXCYjMzQ7XSAhPSBzdGF0ZTpcbiYjNDM7ICAgICAgICAgICAgbm9fY2hhbmdlID0gRmFsc2VcbiYjNDM7ICAgICAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcJiMzNDtmaXhlZFwmIzM0O106XG4mIzQzOyAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9XCYjMzQ7KVxuJiM0MzsgICAgaWYgbm9fY2hhbmdlOlxuJiM0MzsgICAgICAgIHJldHVyblxuJiM0MztcbiYjNDM7ICAgIGV0aF9jbWQgPSBldGh0b29sKFwmIzM0OyBcJiMzNDsuam9pbihuZXcpLCBob3N0PWhvc3QpXG4mIzQzOyAgICBkZWZlcihldGh0b29sLCBcJiMzNDsgXCYjMzQ7LmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxuJiM0MztcbiYjNDM7ICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbiYjNDM7ICAgIGlmIGV0aF9jbWQuc3Rkb3V0OlxuJiM0MzsgICAgICAgIGtzZnRfcHIoZXRoX2NtZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRkYTRjNTQyYzMzYjgyYmFmZWYzYWQ3Y2VjODQyZDhmZWZmNTBiMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAxNTowNjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5CmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weQpAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgaW1wb3J0IHJlCiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wcgogZnJvbSBsaWIucHkgaW1wb3J0IE5ldERydkVwRW52LCBLc2Z0RmFpbEV4LCBLc2Z0WGZhaWxFeAogZnJvbSBsaWIucHkgaW1wb3J0IE5ldGRldkZhbWlseSwgRXRodG9vbEZhbWlseQotZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwCiYjNDM7ZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwLCBzZXRfZXRodG9vbF9mZWF0CiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudAogCiAKQEAgLTkxLDMxICYjNDM7OTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6CiAgICAgICAgIGRlZmVyKGlwLCBmJiMzNDtsaW5rIHNldCBkZXYge2RldlsmIzM5O2lmbmFtZSYjMzk7XX0gbXR1IHtkZXZbJiMzOTttdHUmIzM5O119JiMzNDssIGhvc3Q9aG9zdCkKIAogCi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKToKLSAgICBzMm4gPSB7VHJ1ZTogJiMzNDtvbiYjMzQ7LCBGYWxzZTogJiMzNDtvZmYmIzM0O30KLQotICAgIG5ldyA9IFsmIzM0Oy1LJiMzNDssIGRldl0KLSAgICBvbGQgPSBbJiMzNDstSyYjMzQ7LCBkZXZdCi0gICAgbm9fY2hhbmdlID0gVHJ1ZQotICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOgotICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXQotICAgICAgICBvbGQgJiM0Mzs9IFtuYW1lLCBzMm5bY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XV1dCi0KLSAgICAgICAgaWYgY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XSAhPSBzdGF0ZToKLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlCi0gICAgICAgICAgICBpZiBjdXJyZW50W25hbWVdWyYjMzQ7Zml4ZWQmIzM0O106Ci0gICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZiYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9JiMzNDspCi0gICAgaWYgbm9fY2hhbmdlOgotICAgICAgICByZXR1cm4KLQotICAgIGV0aF9jbWQgPSBldGh0b29sKCYjMzQ7ICYjMzQ7LmpvaW4obmV3KSwgaG9zdD1ob3N0KQotICAgIGRlZmVyKGV0aHRvb2wsICYjMzQ7ICYjMzQ7LmpvaW4ob2xkKSwgaG9zdD1ob3N0KQotCi0gICAgIyBJZiBldGh0b29sIHByaW50ZWQgc29tZXRoaW5nIGtlcm5lbCBtdXN0IGhhdmUgbW9kaWZpZWQgc29tZSBmZWF0dXJlcwotICAgIGlmIGV0aF9jbWQuc3Rkb3V0OgotICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpCi0KLQogZGVmIF9nZXRfcXVldWVfc3RhdHMoY2ZnLCBxdWV1ZV9pZCk6CiAgICAgJiMzNDsmIzM0OyYjMzQ7R2V0IHN0YXRzIGZvciBhIHNwZWNpZmljIFJ4IHF1ZXVlLiYjMzQ7JiMzNDsmIzM0OwogICAgIGNmZy53YWl0X2h3X3N0YXRzX3NldHRsZSgpCkBAIC0yNDIsMTUgJiM0MzsyMTcsMTUgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6CiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGZsdXNoX3BhdGgsICYjMzQ7MjAwMDAwJiMzNDspCiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCAmIzM0OzEwJiMzNDspCiAKLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKJiM0MzsgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBGYWxzZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKICAgICBlbGlmIG1vZGUgPT0gJiMzNDtodyYjMzQ7OgotICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2V9KQomIzQzOyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2UsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogRmFsc2V9KQogCiAgICAgICAgICMgU29tZSBOSUNzIHRyZWF0IEhXIEdSTyBhcyBhIEdSTyBzdWItZmVhdHVyZSBzbyBkaXNhYmxpbmcgR1JPCiAgICAgICAgICMgd2lsbCBhbHNvIGNsZWFyIEhXIEdSTy4gVXNlIGEgaGFjayBvZiBpbnN0YWxsaW5nIFhEUCBnZW5lcmljCkBAIC0yNjUsMjcgJiM0MzsyNDAsMjcgQEAgZGVmIF9zZXR1cChjZmcsIG1vZGUsIHRlc3RfbmFtZSk6CiAgICAgICAgICAgICAjIEF0dGFjaGluZyBYRFAgbWF5IGNoYW5nZSBmZWF0dXJlcywgZmV0Y2ggdGhlIGxhdGVzdCBzdGF0ZQogICAgICAgICAgICAgZmVhdCA9IGV0aHRvb2woZiYjMzQ7LWsge2NmZy5pZm5hbWV9JiMzNDssIGpzb249VHJ1ZSlbMF0KIAotICAgICAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgZmVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O2dlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtyeC1ncm8taHcmIzM0OzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O2xhcmdlLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZX0pCiYjNDM7ICAgICAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyYjMzQ7Z2VuZXJpYy1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM0O3J4LWdyby1odyYjMzQ7OiBUcnVlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7bGFyZ2UtcmVjZWl2ZS1vZmZsb2FkJiMzNDs6IEZhbHNlfSkKICAgICBlbGlmIG1vZGUgPT0gJiMzNDtscm8mIzM0OzoKICAgICAgICAgIyBuZXRkZXZzaW0gYWR2ZXJ0aXNlcyBMUk8gZm9yIGZlYXR1cmUgaW5oZXJpdGFuY2UgdGVzdGluZyB3aXRoCiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwZXJmb3JtIHRoZSBvZmZsb2FkCiAgICAgICAgIGNmZy5yZXF1aXJlX25zaW0obnNpbV90ZXN0PUZhbHNlKQogCi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7cngtZ3JvLWh3JiMzNDs6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZX0pCiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDtnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZCYjMzQ7OiBGYWxzZSwKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICYjMzQ7cngtZ3JvLWh3JiMzNDs6IEZhbHNlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgJiMzNDtsYXJnZS1yZWNlaXZlLW9mZmxvYWQmIzM0OzogVHJ1ZX0pCiAKICAgICB0cnk6CiAgICAgICAgICMgRGlzYWJsZSBUU08gZm9yIGxvY2FsIHRlc3RzCiAgICAgICAgIGNmZy5yZXF1aXJlX25zaW0oKSAgIyB3aWxsIHJhaXNlIEtzZnRYZmFpbEV4IGlmIG5vdCBydW5uaW5nIG9uIG5zaW0KIAotICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcucmVtb3RlX2lmbmFtZSwgY2ZnLnJlbW90ZV9mZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICB7JiMzNDt0Y3Atc2VnbWVudGF0aW9uLW9mZmxvYWQmIzM0OzogRmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpCiYjNDM7ICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIHsmIzM0O3RjcC1zZWdtZW50YXRpb24tb2ZmbG9hZCYjMzQ7OiBGYWxzZX0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSkKICAgICBleGNlcHQgS3NmdFhmYWlsRXg6CiAgICAgICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQppbmRleCBiZDNiOGQyZmE0N2UwLi41NTgyYjY0NDA3OGVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZQpAQCAtNTQsNiAmIzQzOzU0LDcgQEAgVEVTVF9QUk9HUyA9IFwKIAl0c28ucHkgXAogCXVzZXJuc19kZXZtZW0ucHkgXAogCXVzby5weSBcCiYjNDM7CXZsYW4ucHkgXAogCXhkcF9tZXRhZGF0YS5weSBcCiAJeHNrX3JlY29uZmlnLnB5IFwKIAkjCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWcKaW5kZXggZDg5YTliYTE3NjU1OC4uYzZjMmI2NGJiNzEyNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZwpAQCAtMjQsNSAmIzQzOzI0LDYgQEAgQ09ORklHX05FVF9TQ0hfSU5HUkVTUz15CiBDT05GSUdfU1lOQ19GSUxFPXkKIENPTkZJR19VRE1BQlVGPXkKIENPTkZJR19VU0VSX05TPXkKJiM0MztDT05GSUdfVkxBTl84MDIxUT1tCiBDT05GSUdfVlhMQU49eQogQ09ORklHX1hGUk1fVVNFUj15CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHkKaW5kZXggODFlMWQxODY1Y2Q1MC4uNDA3N2Y1ZjFhMWJlMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2xpYi9weS9fX2luaXRfXy5weQpAQCAtMzEsNiAmIzQzOzMxLDcgQEAgdHJ5OgogICAgICAgICBrc2Z0X3NldHVwLCBrc2Z0X3ZhcmlhbnRzLCBLc2Z0TmFtZWRWYXJpYW50CiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcCiAgICAgICAgIGtzZnRfbmUsIGtzZnRfbm90X2luLCBrc2Z0X3JhaXNlcywga3NmdF90cnVlLCBrc2Z0X2d0LCBrc2Z0X25vdF9ub25lCiYjNDM7ICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0CiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgUmVtb3RlLCBJcGVyZjNSdW5uZXIKICAgICBmcm9tIGRyaXZlcnMubmV0LmxpYi5weSBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudgogCkBAIC00OSw3ICYjNDM7NTAsNyBAQCB0cnk6CiAgICAgICAgICAgICAgICAmIzM0O2tzZnRfbmUmIzM0OywgJiMzNDtrc2Z0X25vdF9pbiYjMzQ7LCAmIzM0O2tzZnRfcmFpc2VzJiMzNDssICYjMzQ7a3NmdF90cnVlJiMzNDssICYjMzQ7a3NmdF9ndCYjMzQ7LAogICAgICAgICAgICAgICAgJiMzNDtrc2Z0X25vdF9ub25lJiMzNDssICYjMzQ7a3NmdF9ub3Rfbm9uZSYjMzQ7LAogICAgICAgICAgICAgICAgJiMzNDtOZXREcnZFbnYmIzM0OywgJiMzNDtOZXREcnZFcEVudiYjMzQ7LCAmIzM0O05ldERydkNvbnRFbnYmIzM0OywgJiMzNDtHZW5lcmF0ZVRyYWZmaWMmIzM0OywKLSAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDtdCiYjNDM7ICAgICAgICAgICAgICAgJiMzNDtSZW1vdGUmIzM0OywgJiMzNDtJcGVyZjNSdW5uZXImIzM0OywgJiMzNDtzZXRfZXRodG9vbF9mZWF0JiMzNDtdCiBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBlOgogICAgIHByaW50KCYjMzQ7RmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXMmIzM0OykKICAgICBwcmludChzdHIoZSkpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weQpAQCAtMCwwICYjNDM7MSwxMjcgQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzO1ZMQU4gdGVzdHMuCiYjNDM7CiYjNDM7VmFsaWRhdGVzIHRoYXQgcGluZyB0cmFmZmljIGlzIHNlbnQgYW5kIHJlY2VpdmVkIGNvcnJlY3RseSBvdmVyIDgwMi4xcQomIzQzO2FuZCA4MDIuMWFkIFZMQU4gaW50ZXJmYWNlcywgd2l0aCBoYXJkd2FyZSBSWCBWTEFOIHN0cmlwcGluZyBlbmFibGVkIGFuZAomIzQzO2Rpc2FibGVkIG9uIHRoZSBsb2NhbCBpbnRlcmZhY2UuCiYjNDM7CiYjNDM7VGhlICYjMzQ7aHcmIzM0OyB0ZXN0IHZhcmlhbnRzIGVuYWJsZSB0aGUgUlggVkxBTiBzdHJpcHBpbmcgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5CiYjNDM7dGhlIGRldmljZSwgdGhlICYjMzQ7c3cmIzM0OyB0ZXN0IHZhcmlhbnRzIGRpc2FibGUgYWxsIG9mIHRoZW0uIEEgdGVzdCBpcyB4ZmFpbGVkCiYjNDM7aWYgdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBwb3NzaWJsZS4KJiM0MzsKJiM0MztUZXN0IGNhc2VzOgomIzQzOyAgLSA4MDIxcV9odzogIFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMXEgVkxBTiwgSFcgc3RyaXBwaW5nIG9uCiYjNDM7ICAtIDgwMjFxX3N3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmCiYjNDM7ICAtIDgwMjFhZF9odzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9uCiYjNDM7ICAtIDgwMjFhZF9zdzogVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xYWQgVkxBTiwgSFcgc3RyaXBwaW5nIG9mZgomIzQzOyAgLSBxaW5xX2h3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTiwKJiM0MzsgICAgICAgICAgICAgICBIVyBzdHJpcHBpbmcgb24KJiM0MzsgIC0gcWlucV9zdzogICBUcmFmZmljIG92ZXIgYW4gODAyLjFxIFZMQU4gc3RhY2tlZCBvbiBhbiA4MDIuMWFkIFZMQU4sCiYjNDM7ICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9mZgomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2ltcG9ydCBvcwomIzQzOwomIzQzO2Zyb20gbGliLnB5IGltcG9ydCAoCiYjNDM7ICAgIEtzZnROYW1lZFZhcmlhbnQsCiYjNDM7ICAgIEtzZnRYZmFpbEV4LAomIzQzOyAgICBOZXREcnZFcEVudiwKJiM0MzsgICAgY21kLAomIzQzOyAgICBkZWZlciwKJiM0MzsgICAgZXRodG9vbCwKJiM0MzsgICAgaXAsCiYjNDM7ICAgIGtzZnRfZXhpdCwKJiM0MzsgICAga3NmdF9ydW4sCiYjNDM7ICAgIGtzZnRfdmFyaWFudHMsCiYjNDM7ICAgIHNldF9ldGh0b29sX2ZlYXQsCiYjNDM7KQomIzQzOwomIzQzO09VVEVSX0RFViA9IGYmIzM0O3Zsb3V0e29zLmdldHBpZCgpfSYjMzQ7CiYjNDM7SU5ORVJfREVWID0gZiYjMzQ7dmxpbntvcy5nZXRwaWQoKX0mIzM0OwomIzQzOwomIzQzO09VVEVSX1ZJRCA9IDEwMAomIzQzO0lOTkVSX1ZJRCA9IDIwMAomIzQzOwomIzQzO0xPQ0FMX0lQID0gJiMzNDsxOTguNTEuMTAwLjEmIzM0OwomIzQzO1JFTU9URV9JUCA9ICYjMzQ7MTk4LjUxLjEwMC4yJiMzNDsKJiM0MzsKJiM0MzsKJiM0MztkZWYgX3ZsYW5fYWRkKGJhc2UsIG5hbWUsIHByb3RvLCB2aWQsIGhvc3Q9Tm9uZSk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0O0NyZWF0ZSBhIFZMQU4gZGV2aWNlIG9uIHRvcCBvZiBiYXNlIGFuZCBicmluZyBpdCB1cC4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgaXAoZiYjMzQ7bGluayBhZGQgbGluayB7YmFzZX0gbmFtZSB7bmFtZX0gdHlwZSB2bGFuIHByb3RvIHtwcm90b30gaWQge3ZpZH0mIzM0OywKJiM0MzsgICAgICAgaG9zdD1ob3N0KQomIzQzOyAgICBkZWZlcihpcCwgZiYjMzQ7bGluayBkZWwge25hbWV9JiMzNDssIGhvc3Q9aG9zdCkKJiM0MzsgICAgaXAoZiYjMzQ7bGluayBzZXQge25hbWV9IHVwJiMzNDssIGhvc3Q9aG9zdCkKJiM0MzsKJiM0MzsKJiM0MztkZWYgX3ZsYW5fc2V0dXAoYmFzZSwgYWRkciwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBob3N0PU5vbmUpOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtDcmVhdGUgVkxBTiBpbnRlcmZhY2VzIG9uIGJhc2UgYW5kIHNldCBhbiBJUCBvbiB0aGUgaW5uZXJtb3N0IG9uZS4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgX3ZsYW5fYWRkKGJhc2UsIE9VVEVSX0RFViwgb3V0ZXJfcHJvdG8sIE9VVEVSX1ZJRCwgaG9zdD1ob3N0KQomIzQzOyAgICBpZiBpbm5lcl9wcm90bzoKJiM0MzsgICAgICAgIF92bGFuX2FkZChPVVRFUl9ERVYsIElOTkVSX0RFViwgaW5uZXJfcHJvdG8sIElOTkVSX1ZJRCwgaG9zdD1ob3N0KQomIzQzOwomIzQzOyAgICBkZXYgPSBJTk5FUl9ERVYgaWYgaW5uZXJfcHJvdG8gZWxzZSBPVVRFUl9ERVYKJiM0MzsgICAgaXAoZiYjMzQ7YWRkciBhZGQge2FkZHJ9LzI0IGRldiB7ZGV2fSYjMzQ7LCBob3N0PWhvc3QpCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtDb25maWd1cmUgVkxBTiBzdHJpcHBpbmcgYW5kIGNyZWF0ZSB0aGUgVkxBTiBpbnRlcmZhY2VzLiYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzOyAgICBuYW1lcyA9IFsmIzM0O3J4LXZsYW4tb2ZmbG9hZCYjMzQ7XQomIzQzOyAgICBpZiBvdXRlcl9wcm90byA9PSAmIzM0OzgwMi4xYWQmIzM0OzoKJiM0MzsgICAgICAgIG5hbWVzLmFwcGVuZCgmIzM0O3J4LXZsYW4tc3RhZy1ody1wYXJzZSYjMzQ7KQomIzQzOwomIzQzOyAgICBmZWF0ID0gZXRodG9vbChmJiMzNDstayB7Y2ZnLmlmbmFtZX0mIzM0OywganNvbj1UcnVlKVswXQomIzQzOyAgICBmZWF0cyA9IHt9CiYjNDM7ICAgIGZvciBuYW1lIGluIG5hbWVzOgomIzQzOyAgICAgICAgIyBodzogc2tpcCB0aGUgZmVhdHVyZXMgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0CiYjNDM7ICAgICAgICAjIHN3OiByZXF1ZXN0IGFsbCBvZiB0aGVtIG9mZgomIzQzOyAgICAgICAgaWYgaHdfc3RyaXAgYW5kIGZlYXRbbmFtZV1bJiMzNDtmaXhlZCYjMzQ7XSBhbmQgbm90IGZlYXRbbmFtZV1bJiMzNDthY3RpdmUmIzM0O106CiYjNDM7ICAgICAgICAgICAgY29udGludWUKJiM0MzsgICAgICAgIGZlYXRzW25hbWVdID0gaHdfc3RyaXAKJiM0MzsKJiM0MzsgICAgaWYgaHdfc3RyaXAgYW5kIG5vdCBmZWF0czoKJiM0MzsgICAgICAgIHJhaXNlIEtzZnRYZmFpbEV4KCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgUlggVkxBTiBzdHJpcHBpbmcmIzM0OykKJiM0MzsKJiM0MzsgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LCBmZWF0cykKJiM0MzsKJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLmlmbmFtZSwgTE9DQUxfSVAsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bykKJiM0MzsgICAgX3ZsYW5fc2V0dXAoY2ZnLnJlbW90ZV9pZm5hbWUsIFJFTU9URV9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLAomIzQzOyAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIF92bGFuX3ZhcmlhbnRzKCk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0O0dlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgVkxBTiBwcm90b2NvbHMgYW5kIHRoZSBzdHJpcHBpbmcgbW9kZS4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFxX2h3JiMzNDssICYjMzQ7ODAyLjFxJiMzNDssIE5vbmUsIFRydWUpCiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoJiMzNDs4MDIxcV9zdyYjMzQ7LCAmIzM0OzgwMi4xcSYjMzQ7LCBOb25lLCBGYWxzZSkKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFhZF9odyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgTm9uZSwgVHJ1ZSkKJiM0MzsgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudCgmIzM0OzgwMjFhZF9zdyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgTm9uZSwgRmFsc2UpCiYjNDM7ICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoJiMzNDtxaW5xX2h3JiMzNDssICYjMzQ7ODAyLjFhZCYjMzQ7LCAmIzM0OzgwMi4xcSYjMzQ7LCBUcnVlKQomIzQzOyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KCYjMzQ7cWlucV9zdyYjMzQ7LCAmIzM0OzgwMi4xYWQmIzM0OywgJiMzNDs4MDIuMXEmIzM0OywgRmFsc2UpCiYjNDM7CiYjNDM7CiYjNDM7QGtzZnRfdmFyaWFudHMoX3ZsYW5fdmFyaWFudHMoKSkKJiM0MztkZWYgdGVzdChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDtSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0JiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICAgIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApCiYjNDM7CiYjNDM7ICAgIGNtZChmJiMzNDtwaW5nIC1jIDEgLVcgNSB7UkVNT1RFX0lQfSYjMzQ7KQomIzQzOwomIzQzOwomIzQzO2RlZiBtYWluKCkgLSZndDsgTm9uZToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7IEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICAgIHdpdGggTmV0RHJ2RXBFbnYoX19maWxlX18pIGFzIGNmZzoKJiM0MzsgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKQomIzQzOyAgICBrc2Z0X2V4aXQoKQomIzQzOwomIzQzOwomIzQzO2lmIF9fbmFtZV9fID09ICYjMzQ7X19tYWluX18mIzM0OzoKJiM0MzsgICAgbWFpbigpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvX19pbml0X18ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvX19pbml0X18ucHkKaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weQpAQCAtNDgsMTEgJiM0Mzs0OCwxMiBAQCB0cnk6CiAgICAgICAgICAgICAgICAmIzM0O2tzZnRfbm90X25vbmUmIzM0OywgJiMzNDtrc2Z0X25vdF9ub25lJiMzNDtdCiAKICAgICBmcm9tIC5lbnYgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnYKJiM0MzsgICAgZnJvbSAuZmVhdCBpbXBvcnQgc2V0X2V0aHRvb2xfZmVhdAogICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyCiAgICAgZnJvbSAucmVtb3RlIGltcG9ydCBSZW1vdGUKIAogICAgIF9fYWxsX18gJiM0Mzs9IFsmIzM0O05ldERydkVudiYjMzQ7LCAmIzM0O05ldERydkVwRW52JiMzNDssICYjMzQ7TmV0RHJ2Q29udEVudiYjMzQ7LCAmIzM0O0dlbmVyYXRlVHJhZmZpYyYjMzQ7LAotICAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDtdCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7UmVtb3RlJiMzNDssICYjMzQ7SXBlcmYzUnVubmVyJiMzNDssICYjMzQ7c2V0X2V0aHRvb2xfZmVhdCYjMzQ7XQogZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZToKICAgICBwcmludCgmIzM0O0ZhaWxlZCBpbXBvcnRpbmcgYG5ldGAgbGlicmFyeSBmcm9tIGtlcm5lbCBzb3VyY2VzJiMzNDspCiAgICAgcHJpbnQoc3RyKGUpKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5iOTRhMjQyMTRlNTk3Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHkKQEAgLTAsMCAmIzQzOzEsMzUgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7JiMzNDsmIzM0OyYjMzQ7CiYjNDM7TmV0ZGV2IGZlYXR1cmUgaGVscGVyIHV0aWxpdGllcyBmb3Iga2VybmVsIHNlbGZ0ZXN0cy4KJiM0MzsKJiM0MztQcm92aWRlcyBjb21tb24gb3BlcmF0aW9ucyBmb3IgY2hhbmdpbmcgZGV2aWNlIGZlYXR1cmVzIHZpYSBldGh0b29sLgomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2Zyb20gLiBpbXBvcnQgS3NmdFhmYWlsRXgsIGRlZmVyLCBldGh0b29sLCBrc2Z0X3ByCiYjNDM7CiYjNDM7CiYjNDM7ZGVmIHNldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKToKJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7U2V0IGV0aHRvb2wgZmVhdHVyZXMgd2l0aCBkZWZlciB0byByZXN0b3JlIG9yaWdpbmFsIHN0YXRlLiYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBzMm4gPSB7VHJ1ZTogJiMzNDtvbiYjMzQ7LCBGYWxzZTogJiMzNDtvZmYmIzM0O30KJiM0MzsKJiM0MzsgICAgbmV3ID0gWyYjMzQ7LUsmIzM0OywgZGV2XQomIzQzOyAgICBvbGQgPSBbJiMzNDstSyYjMzQ7LCBkZXZdCiYjNDM7ICAgIG5vX2NoYW5nZSA9IFRydWUKJiM0MzsgICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6CiYjNDM7ICAgICAgICBuZXcgJiM0Mzs9IFtuYW1lLCBzMm5bc3RhdGVdXQomIzQzOyAgICAgICAgb2xkICYjNDM7PSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bJiMzNDthY3RpdmUmIzM0O11dXQomIzQzOwomIzQzOyAgICAgICAgaWYgY3VycmVudFtuYW1lXVsmIzM0O2FjdGl2ZSYjMzQ7XSAhPSBzdGF0ZToKJiM0MzsgICAgICAgICAgICBub19jaGFuZ2UgPSBGYWxzZQomIzQzOyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bJiMzNDtmaXhlZCYjMzQ7XToKJiM0MzsgICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZiYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9JiMzNDspCiYjNDM7ICAgIGlmIG5vX2NoYW5nZToKJiM0MzsgICAgICAgIHJldHVybgomIzQzOwomIzQzOyAgICBldGhfY21kID0gZXRodG9vbCgmIzM0OyAmIzM0Oy5qb2luKG5ldyksIGhvc3Q9aG9zdCkKJiM0MzsgICAgZGVmZXIoZXRodG9vbCwgJiMzNDsgJiMzNDsuam9pbihvbGQpLCBob3N0PWhvc3QpCiYjNDM7CiYjNDM7ICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXMKJiM0MzsgICAgaWYgZXRoX2NtZC5zdGRvdXQ6CiYjNDM7ICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDE1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODcKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA4OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyB0byBQeXRob24gc2NyaXB0cyAoYGdyb19saWIucHlgLCBgdmxhbi5weWAsIHZhcmlvdXMgYF9faW5pdF9fLnB5YCBmaWxlcyBhbmQgYGZlYXQucHlgKSwgYSBgTWFrZWZpbGVgLCBhbmQgYSBgY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZywgc28gSSBpbW1lZGlhdGVseSBoZWFkIHRvIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBvdXRsaW5lZCBpbiB0aGUgaW5zdHJ1Y3Rpb25zLgoKQWNjb3JkaW5nIHRvIFNlY3Rpb24gMiwgYSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHJlc3VsdCBpcyBqdXN0aWZpZWQgaWYgKmFsbCogdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBvbmUgb3IgbW9yZSBvZiBzZXZlcmFsIGNhdGVnb3JpZXMsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiBvdXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgaXMgY3JpdGljYWwgdG8gZ2V0dGluZyB0aGlzIHJpZ2h0LiBUaGUgaW5zdHJ1Y3Rpb25zIGxpc3QgbW9kaWZpY2F0aW9ucyB0aGF0IGRvICpub3QqIHJlcXVpcmUgZnV6emluZzogZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHVzZXItc3BhY2UgdG9vbHMgYW5kIHNjcmlwdHMgdGhhdCBkb24mIzM5O3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBhbmQgYnVpbGQgc3lzdGVtL0tjb25maWcgY2hhbmdlcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgoKTG9va2luZyBjbG9zZWx5IGF0IHRoZSBmaWxlIHBhdGhzLCBJIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGFsbCBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2AgcGF0aC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgKnVzZXItc3BhY2UqIHNlbGYtdGVzdHMsIHNjcmlwdHMsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLCBkZWZpbml0ZWx5IG5vdCBrZXJuZWwgY29kZS4gVGhleSBsaXZlIGluIGEgY29tcGxldGVseSBpc29sYXRlZCBlbnZpcm9ubWVudCwgc28gdGhlcmUgaXMgbm8gcmlzayBvZiB0aGVtIGFmZmVjdGluZyB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBvZiB0aGUga2VybmVsIG1vZHVsZXMuIFRoZXNlIGFyZSBQeXRob24gc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGEgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIHRoZSBzZWxmdGVzdHMuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHBhdGNoIHN0cmljdGx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgYXJlIG1ldC4gSSBjb25maXJtIHRoaXMgYnkgYXNzaWduaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB3aXRoIG5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYC4gVGhlIHJlYXNvbmluZyBtdXN0IGJlIGNsZWFyIGFuZCBjb25jaXNlLiBCYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgdXNlci1zcGFjZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4gQWZ0ZXIgYSBxdWljayBkb3VibGUtY2hlY2sgb2YgdGhlIGluc3RydWN0aW9ucyBhbmQgdGhlICYjMzQ7c2V0LXJlc3VsdHMmIzM0OyBndWlkZWxpbmVzLCBJJiMzOTttIHN1cmUgdGhhdCB0aGlzIGFzc2Vzc21lbnQgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXItc3BhY2UgdGVzdCBzY3JpcHRzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0Lywgd2hpY2ggZG9lcyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3Iga2VybmVsIG1vZHVsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAxNTowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuMzM1MTk3OTg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyOTE5ODkwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuMzM1MjA2NjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwNDI4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZGE0YzU0MmMzM2I4MmJhZmVmM2FkN2NlYzg0MmQ4ZmVmZjUwYjI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDE1OjA2OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XFxuaW5kZXggYjdhYzA2NjBhZGMwMS4uZTlkMzczY2YzNDgzYyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weVxcbkBAIC00OCw3ICs0OCw3IEBAIGltcG9ydCByZVxcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wclxcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0RHJ2RXBFbnYsIEtzZnRGYWlsRXgsIEtzZnRYZmFpbEV4XFxuIGZyb20gbGliLnB5IGltcG9ydCBOZXRkZXZGYW1pbHksIEV0aHRvb2xGYW1pbHlcXG4tZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwXFxuK2Zyb20gbGliLnB5IGltcG9ydCBia2csIGNtZCwgY3RsX2ZpbGVfd3JpdGUsIGRlZmVyLCBldGh0b29sLCBpcCwgc2V0X2V0aHRvb2xfZmVhdFxcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxcbiBcXG4gXFxuQEAgLTkxLDMxICs5MSw2IEBAIGRlZiBfc2V0X210dV9yZXN0b3JlKGRldiwgbXR1LCBob3N0KTpcXG4gICAgICAgICBkZWZlcihpcCwgZlxcXCJsaW5rIHNldCBkZXYge2RldlsnaWZuYW1lJ119IG10dSB7ZGV2WydtdHUnXX1cXFwiLCBob3N0PWhvc3QpXFxuIFxcbiBcXG4tZGVmIF9zZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XFxuLSAgICBzMm4gPSB7VHJ1ZTogXFxcIm9uXFxcIiwgRmFsc2U6IFxcXCJvZmZcXFwifVxcbi1cXG4tICAgIG5ldyA9IFtcXFwiLUtcXFwiLCBkZXZdXFxuLSAgICBvbGQgPSBbXFxcIi1LXFxcIiwgZGV2XVxcbi0gICAgbm9fY2hhbmdlID0gVHJ1ZVxcbi0gICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XFxuLSAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxcbi0gICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXFxcImFjdGl2ZVxcXCJdXV1cXG4tXFxuLSAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcXFwiYWN0aXZlXFxcIl0gIT0gc3RhdGU6XFxuLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXFxuLSAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXFxcImZpeGVkXFxcIl06XFxuLSAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVxcXCIpXFxuLSAgICBpZiBub19jaGFuZ2U6XFxuLSAgICAgICAgcmV0dXJuXFxuLVxcbi0gICAgZXRoX2NtZCA9IGV0aHRvb2woXFxcIiBcXFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxcbi0gICAgZGVmZXIoZXRodG9vbCwgXFxcIiBcXFwiLmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxcbi1cXG4tICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcXG4tICAgIGlmIGV0aF9jbWQuc3Rkb3V0Olxcbi0gICAgICAgIGtzZnRfcHIoZXRoX2NtZClcXG4tXFxuLVxcbiBkZWYgX2dldF9xdWV1ZV9zdGF0cyhjZmcsIHF1ZXVlX2lkKTpcXG4gICAgIFxcXCJcXFwiXFxcIkdldCBzdGF0cyBmb3IgYSBzcGVjaWZpYyBSeCBxdWV1ZS5cXFwiXFxcIlxcXCJcXG4gICAgIGNmZy53YWl0X2h3X3N0YXRzX3NldHRsZSgpXFxuQEAgLTI0MiwxNSArMjE3LDE1IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGZsdXNoX3BhdGgsIFxcXCIyMDAwMDBcXFwiKVxcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCBcXFwiMTBcXFwiKVxcbiBcXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZSxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IEZhbHNlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbisgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogRmFsc2UsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxhcmdlLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlfSlcXG4gICAgIGVsaWYgbW9kZSA9PSBcXFwiaHdcXFwiOlxcbi0gICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZSxcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IFRydWUsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZX0pXFxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBGYWxzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogVHJ1ZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbiBcXG4gICAgICAgICAjIFNvbWUgTklDcyB0cmVhdCBIVyBHUk8gYXMgYSBHUk8gc3ViLWZlYXR1cmUgc28gZGlzYWJsaW5nIEdST1xcbiAgICAgICAgICMgd2lsbCBhbHNvIGNsZWFyIEhXIEdSTy4gVXNlIGEgaGFjayBvZiBpbnN0YWxsaW5nIFhEUCBnZW5lcmljXFxuQEAgLTI2NSwyNyArMjQwLDI3IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxcbiAgICAgICAgICAgICAjIEF0dGFjaGluZyBYRFAgbWF5IGNoYW5nZSBmZWF0dXJlcywgZmV0Y2ggdGhlIGxhdGVzdCBzdGF0ZVxcbiAgICAgICAgICAgICBmZWF0ID0gZXRodG9vbChmXFxcIi1rIHtjZmcuaWZuYW1lfVxcXCIsIGpzb249VHJ1ZSlbMF1cXG4gXFxuLSAgICAgICAgICAgIF9zZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcXFwiOiBUcnVlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJ4LWdyby1od1xcXCI6IFRydWUsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbisgICAgICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IFRydWUsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyeC1ncm8taHdcXFwiOiBUcnVlLFxcbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogRmFsc2V9KVxcbiAgICAgZWxpZiBtb2RlID09IFxcXCJscm9cXFwiOlxcbiAgICAgICAgICMgbmV0ZGV2c2ltIGFkdmVydGlzZXMgTFJPIGZvciBmZWF0dXJlIGluaGVyaXRhbmNlIHRlc3Rpbmcgd2l0aFxcbiAgICAgICAgICMgYm9uZGluZy90ZWFtIHRlc3RzIGJ1dCBpdCBkb2Vzbid0IGFjdHVhbGx5IHBlcmZvcm0gdGhlIG9mZmxvYWRcXG4gICAgICAgICBjZmcucmVxdWlyZV9uc2ltKG5zaW1fdGVzdD1GYWxzZSlcXG4gXFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlLFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicngtZ3JvLWh3XFxcIjogRmFsc2UsXFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcXFwiOiBUcnVlfSlcXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGNmZy5mZWF0LFxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1xcXCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFxcXCI6IEZhbHNlLFxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyeC1ncm8taHdcXFwiOiBGYWxzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXFxcIjogVHJ1ZX0pXFxuIFxcbiAgICAgdHJ5OlxcbiAgICAgICAgICMgRGlzYWJsZSBUU08gZm9yIGxvY2FsIHRlc3RzXFxuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxcbiBcXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcucmVtb3RlX2lmbmFtZSwgY2ZnLnJlbW90ZV9mZWF0LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcXFwidGNwLXNlZ21lbnRhdGlvbi1vZmZsb2FkXFxcIjogRmFsc2V9LFxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICB7XFxcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFxcXCI6IEZhbHNlfSxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcXG4gICAgIGV4Y2VwdCBLc2Z0WGZhaWxFeDpcXG4gICAgICAgICBwYXNzXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXFxuaW5kZXggYmQzYjhkMmZhNDdlMC4uNTU4MmI2NDQwNzhlZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlXFxuQEAgLTU0LDYgKzU0LDcgQEAgVEVTVF9QUk9HUyA9IFxcXFxcXG4gXFx0dHNvLnB5IFxcXFxcXG4gXFx0dXNlcm5zX2Rldm1lbS5weSBcXFxcXFxuIFxcdHVzby5weSBcXFxcXFxuK1xcdHZsYW4ucHkgXFxcXFxcbiBcXHR4ZHBfbWV0YWRhdGEucHkgXFxcXFxcbiBcXHR4c2tfcmVjb25maWcucHkgXFxcXFxcbiBcXHQjXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZ1xcbmluZGV4IGQ4OWE5YmExNzY1NTguLmM2YzJiNjRiYjcxMjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXFxuQEAgLTI0LDUgKzI0LDYgQEAgQ09ORklHX05FVF9TQ0hfSU5HUkVTUz15XFxuIENPTkZJR19TWU5DX0ZJTEU9eVxcbiBDT05GSUdfVURNQUJVRj15XFxuIENPTkZJR19VU0VSX05TPXlcXG4rQ09ORklHX1ZMQU5fODAyMVE9bVxcbiBDT05GSUdfVlhMQU49eVxcbiBDT05GSUdfWEZSTV9VU0VSPXlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XFxuaW5kZXggODFlMWQxODY1Y2Q1MC4uNDA3N2Y1ZjFhMWJlMyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcXG5AQCAtMzEsNiArMzEsNyBAQCB0cnk6XFxuICAgICAgICAga3NmdF9zZXR1cCwga3NmdF92YXJpYW50cywgS3NmdE5hbWVkVmFyaWFudFxcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcXG4rICAgIGZyb20gZHJpdmVycy5uZXQubGliLnB5IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XFxuICAgICBmcm9tIGRyaXZlcnMubmV0LmxpYi5weSBpbXBvcnQgR2VuZXJhdGVUcmFmZmljLCBSZW1vdGUsIElwZXJmM1J1bm5lclxcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnZcXG4gXFxuQEAgLTQ5LDcgKzUwLDcgQEAgdHJ5OlxcbiAgICAgICAgICAgICAgICBcXFwia3NmdF9uZVxcXCIsIFxcXCJrc2Z0X25vdF9pblxcXCIsIFxcXCJrc2Z0X3JhaXNlc1xcXCIsIFxcXCJrc2Z0X3RydWVcXFwiLCBcXFwia3NmdF9ndFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJrc2Z0X25vdF9ub25lXFxcIiwgXFxcImtzZnRfbm90X25vbmVcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiTmV0RHJ2RW52XFxcIiwgXFxcIk5ldERydkVwRW52XFxcIiwgXFxcIk5ldERydkNvbnRFbnZcXFwiLCBcXFwiR2VuZXJhdGVUcmFmZmljXFxcIixcXG4tICAgICAgICAgICAgICAgXFxcIlJlbW90ZVxcXCIsIFxcXCJJcGVyZjNSdW5uZXJcXFwiXVxcbisgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCIsIFxcXCJzZXRfZXRodG9vbF9mZWF0XFxcIl1cXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcXG4gICAgIHByaW50KFxcXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1xcXCIpXFxuICAgICBwcmludChzdHIoZSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHlcXG5AQCAtMCwwICsxLDEyNyBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbitWTEFOIHRlc3RzLlxcbitcXG4rVmFsaWRhdGVzIHRoYXQgcGluZyB0cmFmZmljIGlzIHNlbnQgYW5kIHJlY2VpdmVkIGNvcnJlY3RseSBvdmVyIDgwMi4xcVxcbithbmQgODAyLjFhZCBWTEFOIGludGVyZmFjZXMsIHdpdGggaGFyZHdhcmUgUlggVkxBTiBzdHJpcHBpbmcgZW5hYmxlZCBhbmRcXG4rZGlzYWJsZWQgb24gdGhlIGxvY2FsIGludGVyZmFjZS5cXG4rXFxuK1RoZSBcXFwiaHdcXFwiIHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcXG4rdGhlIGRldmljZSwgdGhlIFxcXCJzd1xcXCIgdGVzdCB2YXJpYW50cyBkaXNhYmxlIGFsbCBvZiB0aGVtLiBBIHRlc3QgaXMgeGZhaWxlZFxcbitpZiB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHBvc3NpYmxlLlxcbitcXG4rVGVzdCBjYXNlczpcXG4rICAtIDgwMjFxX2h3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb25cXG4rICAtIDgwMjFxX3N3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXFxuKyAgLSA4MDIxYWRfaHc6IFRyYWZmaWMgb3ZlciBhIHNpbmdsZSA4MDIuMWFkIFZMQU4sIEhXIHN0cmlwcGluZyBvblxcbisgIC0gODAyMWFkX3N3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXFxuKyAgLSBxaW5xX2h3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcXG4rICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9uXFxuKyAgLSBxaW5xX3N3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcXG4rICAgICAgICAgICAgICAgSFcgc3RyaXBwaW5nIG9mZlxcbitcXFwiXFxcIlxcXCJcXG4rXFxuK2ltcG9ydCBvc1xcbitcXG4rZnJvbSBsaWIucHkgaW1wb3J0IChcXG4rICAgIEtzZnROYW1lZFZhcmlhbnQsXFxuKyAgICBLc2Z0WGZhaWxFeCxcXG4rICAgIE5ldERydkVwRW52LFxcbisgICAgY21kLFxcbisgICAgZGVmZXIsXFxuKyAgICBldGh0b29sLFxcbisgICAgaXAsXFxuKyAgICBrc2Z0X2V4aXQsXFxuKyAgICBrc2Z0X3J1bixcXG4rICAgIGtzZnRfdmFyaWFudHMsXFxuKyAgICBzZXRfZXRodG9vbF9mZWF0LFxcbispXFxuK1xcbitPVVRFUl9ERVYgPSBmXFxcInZsb3V0e29zLmdldHBpZCgpfVxcXCJcXG4rSU5ORVJfREVWID0gZlxcXCJ2bGlue29zLmdldHBpZCgpfVxcXCJcXG4rXFxuK09VVEVSX1ZJRCA9IDEwMFxcbitJTk5FUl9WSUQgPSAyMDBcXG4rXFxuK0xPQ0FMX0lQID0gXFxcIjE5OC41MS4xMDAuMVxcXCJcXG4rUkVNT1RFX0lQID0gXFxcIjE5OC41MS4xMDAuMlxcXCJcXG4rXFxuK1xcbitkZWYgX3ZsYW5fYWRkKGJhc2UsIG5hbWUsIHByb3RvLCB2aWQsIGhvc3Q9Tm9uZSk6XFxuKyAgICBcXFwiXFxcIlxcXCJDcmVhdGUgYSBWTEFOIGRldmljZSBvbiB0b3Agb2YgYmFzZSBhbmQgYnJpbmcgaXQgdXAuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgaXAoZlxcXCJsaW5rIGFkZCBsaW5rIHtiYXNlfSBuYW1lIHtuYW1lfSB0eXBlIHZsYW4gcHJvdG8ge3Byb3RvfSBpZCB7dmlkfVxcXCIsXFxuKyAgICAgICBob3N0PWhvc3QpXFxuKyAgICBkZWZlcihpcCwgZlxcXCJsaW5rIGRlbCB7bmFtZX1cXFwiLCBob3N0PWhvc3QpXFxuKyAgICBpcChmXFxcImxpbmsgc2V0IHtuYW1lfSB1cFxcXCIsIGhvc3Q9aG9zdClcXG4rXFxuK1xcbitkZWYgX3ZsYW5fc2V0dXAoYmFzZSwgYWRkciwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBob3N0PU5vbmUpOlxcbisgICAgXFxcIlxcXCJcXFwiQ3JlYXRlIFZMQU4gaW50ZXJmYWNlcyBvbiBiYXNlIGFuZCBzZXQgYW4gSVAgb24gdGhlIGlubmVybW9zdCBvbmUuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgX3ZsYW5fYWRkKGJhc2UsIE9VVEVSX0RFViwgb3V0ZXJfcHJvdG8sIE9VVEVSX1ZJRCwgaG9zdD1ob3N0KVxcbisgICAgaWYgaW5uZXJfcHJvdG86XFxuKyAgICAgICAgX3ZsYW5fYWRkKE9VVEVSX0RFViwgSU5ORVJfREVWLCBpbm5lcl9wcm90bywgSU5ORVJfVklELCBob3N0PWhvc3QpXFxuK1xcbisgICAgZGV2ID0gSU5ORVJfREVWIGlmIGlubmVyX3Byb3RvIGVsc2UgT1VURVJfREVWXFxuKyAgICBpcChmXFxcImFkZHIgYWRkIHthZGRyfS8yNCBkZXYge2Rldn1cXFwiLCBob3N0PWhvc3QpXFxuK1xcbitcXG4rZGVmIF9zZXR1cChjZmcsIG91dGVyX3Byb3RvLCBpbm5lcl9wcm90bywgaHdfc3RyaXApOlxcbisgICAgXFxcIlxcXCJcXFwiQ29uZmlndXJlIFZMQU4gc3RyaXBwaW5nIGFuZCBjcmVhdGUgdGhlIFZMQU4gaW50ZXJmYWNlcy5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgICBuYW1lcyA9IFtcXFwicngtdmxhbi1vZmZsb2FkXFxcIl1cXG4rICAgIGlmIG91dGVyX3Byb3RvID09IFxcXCI4MDIuMWFkXFxcIjpcXG4rICAgICAgICBuYW1lcy5hcHBlbmQoXFxcInJ4LXZsYW4tc3RhZy1ody1wYXJzZVxcXCIpXFxuK1xcbisgICAgZmVhdCA9IGV0aHRvb2woZlxcXCItayB7Y2ZnLmlmbmFtZX1cXFwiLCBqc29uPVRydWUpWzBdXFxuKyAgICBmZWF0cyA9IHt9XFxuKyAgICBmb3IgbmFtZSBpbiBuYW1lczpcXG4rICAgICAgICAjIGh3OiBza2lwIHRoZSBmZWF0dXJlcyB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnRcXG4rICAgICAgICAjIHN3OiByZXF1ZXN0IGFsbCBvZiB0aGVtIG9mZlxcbisgICAgICAgIGlmIGh3X3N0cmlwIGFuZCBmZWF0W25hbWVdW1xcXCJmaXhlZFxcXCJdIGFuZCBub3QgZmVhdFtuYW1lXVtcXFwiYWN0aXZlXFxcIl06XFxuKyAgICAgICAgICAgIGNvbnRpbnVlXFxuKyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxcbitcXG4rICAgIGlmIGh3X3N0cmlwIGFuZCBub3QgZmVhdHM6XFxuKyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IFJYIFZMQU4gc3RyaXBwaW5nXFxcIilcXG4rXFxuKyAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsIGZlYXRzKVxcbitcXG4rICAgIF92bGFuX3NldHVwKGNmZy5pZm5hbWUsIExPQ0FMX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8pXFxuKyAgICBfdmxhbl9zZXR1cChjZmcucmVtb3RlX2lmbmFtZSwgUkVNT1RFX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sXFxuKyAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXFxuK1xcbitcXG4rZGVmIF92bGFuX3ZhcmlhbnRzKCk6XFxuKyAgICBcXFwiXFxcIlxcXCJHZW5lcmF0b3IgdGhhdCB5aWVsZHMgdGhlIFZMQU4gcHJvdG9jb2xzIGFuZCB0aGUgc3RyaXBwaW5nIG1vZGUuXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMXFfaHdcXFwiLCBcXFwiODAyLjFxXFxcIiwgTm9uZSwgVHJ1ZSlcXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXFxcIjgwMjFxX3N3XFxcIiwgXFxcIjgwMi4xcVxcXCIsIE5vbmUsIEZhbHNlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMWFkX2h3XFxcIiwgXFxcIjgwMi4xYWRcXFwiLCBOb25lLCBUcnVlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwiODAyMWFkX3N3XFxcIiwgXFxcIjgwMi4xYWRcXFwiLCBOb25lLCBGYWxzZSlcXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXFxcInFpbnFfaHdcXFwiLCBcXFwiODAyLjFhZFxcXCIsIFxcXCI4MDIuMXFcXFwiLCBUcnVlKVxcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcXFwicWlucV9zd1xcXCIsIFxcXCI4MDIuMWFkXFxcIiwgXFxcIjgwMi4xcVxcXCIsIEZhbHNlKVxcbitcXG4rXFxuK0Brc2Z0X3ZhcmlhbnRzKF92bGFuX3ZhcmlhbnRzKCkpXFxuK2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XFxuKyAgICBcXFwiXFxcIlxcXCJSdW4gYSBzaW5nbGUgVkxBTiB0ZXN0XFxcIlxcXCJcXFwiXFxuK1xcbisgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcXG4rXFxuKyAgICBjbWQoZlxcXCJwaW5nIC1jIDEgLVcgNSB7UkVNT1RFX0lQfVxcXCIpXFxuK1xcbitcXG4rZGVmIG1haW4oKSAtXFx1MDAzZSBOb25lOlxcbisgICAgXFxcIlxcXCJcXFwiIEtzZnQgYm9pbGVyIHBsYXRlIG1haW4gXFxcIlxcXCJcXFwiXFxuK1xcbisgICAgd2l0aCBOZXREcnZFcEVudihfX2ZpbGVfXykgYXMgY2ZnOlxcbisgICAgICAgIGtzZnRfcnVuKGNhc2VzPVt0ZXN0XSwgYXJncz0oY2ZnLCApKVxcbisgICAga3NmdF9leGl0KClcXG4rXFxuK1xcbitpZiBfX25hbWVfXyA9PSBcXFwiX19tYWluX19cXFwiOlxcbisgICAgbWFpbigpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxcbmluZGV4IDU5MWIxZTZjN2VlYWEuLjQwY2NkY2YwYzM3ODYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XFxuQEAgLTQ4LDExICs0OCwxMiBAQCB0cnk6XFxuICAgICAgICAgICAgICAgIFxcXCJrc2Z0X25vdF9ub25lXFxcIiwgXFxcImtzZnRfbm90X25vbmVcXFwiXVxcbiBcXG4gICAgIGZyb20gLmVudiBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudlxcbisgICAgZnJvbSAuZmVhdCBpbXBvcnQgc2V0X2V0aHRvb2xfZmVhdFxcbiAgICAgZnJvbSAubG9hZCBpbXBvcnQgR2VuZXJhdGVUcmFmZmljLCBJcGVyZjNSdW5uZXJcXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXFxuIFxcbiAgICAgX19hbGxfXyArPSBbXFxcIk5ldERydkVudlxcXCIsIFxcXCJOZXREcnZFcEVudlxcXCIsIFxcXCJOZXREcnZDb250RW52XFxcIiwgXFxcIkdlbmVyYXRlVHJhZmZpY1xcXCIsXFxuLSAgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCJdXFxuKyAgICAgICAgICAgICAgICBcXFwiUmVtb3RlXFxcIiwgXFxcIklwZXJmM1J1bm5lclxcXCIsIFxcXCJzZXRfZXRodG9vbF9mZWF0XFxcIl1cXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcXG4gICAgIHByaW50KFxcXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1xcXCIpXFxuICAgICBwcmludChzdHIoZSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmI5NGEyNDIxNGU1OTdcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcXG5AQCAtMCwwICsxLDM1IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbitOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxcbitcXG4rUHJvdmlkZXMgY29tbW9uIG9wZXJhdGlvbnMgZm9yIGNoYW5naW5nIGRldmljZSBmZWF0dXJlcyB2aWEgZXRodG9vbC5cXG4rXFxcIlxcXCJcXFwiXFxuK1xcbitmcm9tIC4gaW1wb3J0IEtzZnRYZmFpbEV4LCBkZWZlciwgZXRodG9vbCwga3NmdF9wclxcbitcXG4rXFxuK2RlZiBzZXRfZXRodG9vbF9mZWF0KGRldiwgY3VycmVudCwgZmVhdHMsIGhvc3Q9Tm9uZSk6XFxuKyAgICBcXFwiXFxcIlxcXCJTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXFxcIlxcXCJcXFwiXFxuKyAgICBzMm4gPSB7VHJ1ZTogXFxcIm9uXFxcIiwgRmFsc2U6IFxcXCJvZmZcXFwifVxcbitcXG4rICAgIG5ldyA9IFtcXFwiLUtcXFwiLCBkZXZdXFxuKyAgICBvbGQgPSBbXFxcIi1LXFxcIiwgZGV2XVxcbisgICAgbm9fY2hhbmdlID0gVHJ1ZVxcbisgICAgZm9yIG5hbWUsIHN0YXRlIGluIGZlYXRzLml0ZW1zKCk6XFxuKyAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxcbisgICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXFxcImFjdGl2ZVxcXCJdXV1cXG4rXFxuKyAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcXFwiYWN0aXZlXFxcIl0gIT0gc3RhdGU6XFxuKyAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXFxuKyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXFxcImZpeGVkXFxcIl06XFxuKyAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXFxcIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHtuYW1lfVxcXCIpXFxuKyAgICBpZiBub19jaGFuZ2U6XFxuKyAgICAgICAgcmV0dXJuXFxuK1xcbisgICAgZXRoX2NtZCA9IGV0aHRvb2woXFxcIiBcXFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxcbisgICAgZGVmZXIoZXRodG9vbCwgXFxcIiBcXFwiLmpvaW4ob2xkKSwgaG9zdD1ob3N0KVxcbitcXG4rICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcXG4rICAgIGlmIGV0aF9jbWQuc3Rkb3V0OlxcbisgICAgICAgIGtzZnRfcHIoZXRoX2NtZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDY6MDcuODA4ODU5NjMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjgxODMxNDg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGRhNGM1NDJjMzNiODJiYWZlZjNhZDdjZWM4NDJkOGZlZmY1MGIyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDE1OjA2OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZ3JvX2xpYi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2dyb19saWIucHlcbmluZGV4IGI3YWMwNjYwYWRjMDEuLmU5ZDM3M2NmMzQ4M2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ncm9fbGliLnB5XG5AQCAtNDgsNyArNDgsNyBAQCBpbXBvcnQgcmVcbiBmcm9tIGxpYi5weSBpbXBvcnQga3NmdF9ydW4sIGtzZnRfZXhpdCwga3NmdF9wclxuIGZyb20gbGliLnB5IGltcG9ydCBOZXREcnZFcEVudiwgS3NmdEZhaWxFeCwgS3NmdFhmYWlsRXhcbiBmcm9tIGxpYi5weSBpbXBvcnQgTmV0ZGV2RmFtaWx5LCBFdGh0b29sRmFtaWx5XG4tZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwXG4rZnJvbSBsaWIucHkgaW1wb3J0IGJrZywgY21kLCBjdGxfZmlsZV93cml0ZSwgZGVmZXIsIGV0aHRvb2wsIGlwLCBzZXRfZXRodG9vbF9mZWF0XG4gZnJvbSBsaWIucHkgaW1wb3J0IGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiBcbiBcbkBAIC05MSwzMSArOTEsNiBAQCBkZWYgX3NldF9tdHVfcmVzdG9yZShkZXYsIG10dSwgaG9zdCk6XG4gICAgICAgICBkZWZlcihpcCwgZlwibGluayBzZXQgZGV2IHtkZXZbJ2lmbmFtZSddfSBtdHUge2RldlsnbXR1J119XCIsIGhvc3Q9aG9zdClcbiBcbiBcbi1kZWYgX3NldF9ldGh0b29sX2ZlYXQoZGV2LCBjdXJyZW50LCBmZWF0cywgaG9zdD1Ob25lKTpcbi0gICAgczJuID0ge1RydWU6IFwib25cIiwgRmFsc2U6IFwib2ZmXCJ9XG4tXG4tICAgIG5ldyA9IFtcIi1LXCIsIGRldl1cbi0gICAgb2xkID0gW1wiLUtcIiwgZGV2XVxuLSAgICBub19jaGFuZ2UgPSBUcnVlXG4tICAgIGZvciBuYW1lLCBzdGF0ZSBpbiBmZWF0cy5pdGVtcygpOlxuLSAgICAgICAgbmV3ICs9IFtuYW1lLCBzMm5bc3RhdGVdXVxuLSAgICAgICAgb2xkICs9IFtuYW1lLCBzMm5bY3VycmVudFtuYW1lXVtcImFjdGl2ZVwiXV1dXG4tXG4tICAgICAgICBpZiBjdXJyZW50W25hbWVdW1wiYWN0aXZlXCJdICE9IHN0YXRlOlxuLSAgICAgICAgICAgIG5vX2NoYW5nZSA9IEZhbHNlXG4tICAgICAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcImZpeGVkXCJdOlxuLSAgICAgICAgICAgICAgICByYWlzZSBLc2Z0WGZhaWxFeChmXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB7bmFtZX1cIilcbi0gICAgaWYgbm9fY2hhbmdlOlxuLSAgICAgICAgcmV0dXJuXG4tXG4tICAgIGV0aF9jbWQgPSBldGh0b29sKFwiIFwiLmpvaW4obmV3KSwgaG9zdD1ob3N0KVxuLSAgICBkZWZlcihldGh0b29sLCBcIiBcIi5qb2luKG9sZCksIGhvc3Q9aG9zdClcbi1cbi0gICAgIyBJZiBldGh0b29sIHByaW50ZWQgc29tZXRoaW5nIGtlcm5lbCBtdXN0IGhhdmUgbW9kaWZpZWQgc29tZSBmZWF0dXJlc1xuLSAgICBpZiBldGhfY21kLnN0ZG91dDpcbi0gICAgICAgIGtzZnRfcHIoZXRoX2NtZClcbi1cbi1cbiBkZWYgX2dldF9xdWV1ZV9zdGF0cyhjZmcsIHF1ZXVlX2lkKTpcbiAgICAgXCJcIlwiR2V0IHN0YXRzIGZvciBhIHNwZWNpZmljIFJ4IHF1ZXVlLlwiXCJcIlxuICAgICBjZmcud2FpdF9od19zdGF0c19zZXR0bGUoKVxuQEAgLTI0MiwxNSArMjE3LDE1IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxuICAgICAgICAgY3RsX2ZpbGVfd3JpdGUoZmx1c2hfcGF0aCwgXCIyMDAwMDBcIilcbiAgICAgICAgIGN0bF9maWxlX3dyaXRlKGlycV9wYXRoLCBcIjEwXCIpXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyeC1ncm8taHdcIjogRmFsc2UsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1wiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcIjogVHJ1ZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IEZhbHNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuICAgICBlbGlmIG1vZGUgPT0gXCJod1wiOlxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwiOiBGYWxzZSxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcInJ4LWdyby1od1wiOiBUcnVlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbisgICAgICAgIHNldF9ldGh0b29sX2ZlYXQoY2ZnLmlmbmFtZSwgY2ZnLmZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyeC1ncm8taHdcIjogVHJ1ZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbiBcbiAgICAgICAgICMgU29tZSBOSUNzIHRyZWF0IEhXIEdSTyBhcyBhIEdSTyBzdWItZmVhdHVyZSBzbyBkaXNhYmxpbmcgR1JPXG4gICAgICAgICAjIHdpbGwgYWxzbyBjbGVhciBIVyBHUk8uIFVzZSBhIGhhY2sgb2YgaW5zdGFsbGluZyBYRFAgZ2VuZXJpY1xuQEAgLTI2NSwyNyArMjQwLDI3IEBAIGRlZiBfc2V0dXAoY2ZnLCBtb2RlLCB0ZXN0X25hbWUpOlxuICAgICAgICAgICAgICMgQXR0YWNoaW5nIFhEUCBtYXkgY2hhbmdlIGZlYXR1cmVzLCBmZXRjaCB0aGUgbGF0ZXN0IHN0YXRlXG4gICAgICAgICAgICAgZmVhdCA9IGV0aHRvb2woZlwiLWsge2NmZy5pZm5hbWV9XCIsIGpzb249VHJ1ZSlbMF1cbiBcbi0gICAgICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBmZWF0LFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IFRydWUsXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlfSlcbisgICAgICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJnZW5lcmljLXJlY2VpdmUtb2ZmbG9hZFwiOiBUcnVlLFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IFRydWUsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXJnZS1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2V9KVxuICAgICBlbGlmIG1vZGUgPT0gXCJscm9cIjpcbiAgICAgICAgICMgbmV0ZGV2c2ltIGFkdmVydGlzZXMgTFJPIGZvciBmZWF0dXJlIGluaGVyaXRhbmNlIHRlc3Rpbmcgd2l0aFxuICAgICAgICAgIyBib25kaW5nL3RlYW0gdGVzdHMgYnV0IGl0IGRvZXNuJ3QgYWN0dWFsbHkgcGVyZm9ybSB0aGUgb2ZmbG9hZFxuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbShuc2ltX3Rlc3Q9RmFsc2UpXG4gXG4tICAgICAgICBfc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcImdlbmVyaWMtcmVjZWl2ZS1vZmZsb2FkXCI6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicngtZ3JvLWh3XCI6IEZhbHNlLFxuLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWV9KVxuKyAgICAgICAgc2V0X2V0aHRvb2xfZmVhdChjZmcuaWZuYW1lLCBjZmcuZmVhdCxcbisgICAgICAgICAgICAgICAgICAgICAgICAge1wiZ2VuZXJpYy1yZWNlaXZlLW9mZmxvYWRcIjogRmFsc2UsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBcInJ4LWdyby1od1wiOiBGYWxzZSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGFyZ2UtcmVjZWl2ZS1vZmZsb2FkXCI6IFRydWV9KVxuIFxuICAgICB0cnk6XG4gICAgICAgICAjIERpc2FibGUgVFNPIGZvciBsb2NhbCB0ZXN0c1xuICAgICAgICAgY2ZnLnJlcXVpcmVfbnNpbSgpICAjIHdpbGwgcmFpc2UgS3NmdFhmYWlsRXggaWYgbm90IHJ1bm5pbmcgb24gbnNpbVxuIFxuLSAgICAgICAgX3NldF9ldGh0b29sX2ZlYXQoY2ZnLnJlbW90ZV9pZm5hbWUsIGNmZy5yZW1vdGVfZmVhdCxcbi0gICAgICAgICAgICAgICAgICAgICAgICAgIHtcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFwiOiBGYWxzZX0sXG4tICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWNmZy5yZW1vdGUpXG4rICAgICAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5yZW1vdGVfaWZuYW1lLCBjZmcucmVtb3RlX2ZlYXQsXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHtcInRjcC1zZWdtZW50YXRpb24tb2ZmbG9hZFwiOiBGYWxzZX0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbiAgICAgZXhjZXB0IEtzZnRYZmFpbEV4OlxuICAgICAgICAgcGFzc1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbmluZGV4IGJkM2I4ZDJmYTQ3ZTAuLjU1ODJiNjQ0MDc4ZWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvTWFrZWZpbGVcbkBAIC01NCw2ICs1NCw3IEBAIFRFU1RfUFJPR1MgPSBcXFxuIFx0dHNvLnB5IFxcXG4gXHR1c2VybnNfZGV2bWVtLnB5IFxcXG4gXHR1c28ucHkgXFxcbitcdHZsYW4ucHkgXFxcbiBcdHhkcF9tZXRhZGF0YS5weSBcXFxuIFx0eHNrX3JlY29uZmlnLnB5IFxcXG4gXHQjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG5pbmRleCBkODlhOWJhMTc2NTU4Li5jNmMyYjY0YmI3MTI0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWdcbkBAIC0yNCw1ICsyNCw2IEBAIENPTkZJR19ORVRfU0NIX0lOR1JFU1M9eVxuIENPTkZJR19TWU5DX0ZJTEU9eVxuIENPTkZJR19VRE1BQlVGPXlcbiBDT05GSUdfVVNFUl9OUz15XG4rQ09ORklHX1ZMQU5fODAyMVE9bVxuIENPTkZJR19WWExBTj15XG4gQ09ORklHX1hGUk1fVVNFUj15XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XG5pbmRleCA4MWUxZDE4NjVjZDUwLi40MDc3ZjVmMWExYmUzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvbGliL3B5L19faW5pdF9fLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9saWIvcHkvX19pbml0X18ucHlcbkBAIC0zMSw2ICszMSw3IEBAIHRyeTpcbiAgICAgICAgIGtzZnRfc2V0dXAsIGtzZnRfdmFyaWFudHMsIEtzZnROYW1lZFZhcmlhbnRcbiAgICAgZnJvbSBuZXQubGliLnB5IGltcG9ydCBrc2Z0X2VxLCBrc2Z0X2dlLCBrc2Z0X2luLCBrc2Z0X2lzLCBrc2Z0X2x0LCBcXFxuICAgICAgICAga3NmdF9uZSwga3NmdF9ub3RfaW4sIGtzZnRfcmFpc2VzLCBrc2Z0X3RydWUsIGtzZnRfZ3QsIGtzZnRfbm90X25vbmVcbisgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IHNldF9ldGh0b29sX2ZlYXRcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgUmVtb3RlLCBJcGVyZjNSdW5uZXJcbiAgICAgZnJvbSBkcml2ZXJzLm5ldC5saWIucHkgaW1wb3J0IE5ldERydkVudiwgTmV0RHJ2RXBFbnYsIE5ldERydkNvbnRFbnZcbiBcbkBAIC00OSw3ICs1MCw3IEBAIHRyeTpcbiAgICAgICAgICAgICAgICBcImtzZnRfbmVcIiwgXCJrc2Z0X25vdF9pblwiLCBcImtzZnRfcmFpc2VzXCIsIFwia3NmdF90cnVlXCIsIFwia3NmdF9ndFwiLFxuICAgICAgICAgICAgICAgIFwia3NmdF9ub3Rfbm9uZVwiLCBcImtzZnRfbm90X25vbmVcIixcbiAgICAgICAgICAgICAgICBcIk5ldERydkVudlwiLCBcIk5ldERydkVwRW52XCIsIFwiTmV0RHJ2Q29udEVudlwiLCBcIkdlbmVyYXRlVHJhZmZpY1wiLFxuLSAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCJdXG4rICAgICAgICAgICAgICAgXCJSZW1vdGVcIiwgXCJJcGVyZjNSdW5uZXJcIiwgXCJzZXRfZXRodG9vbF9mZWF0XCJdXG4gZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZTpcbiAgICAgcHJpbnQoXCJGYWlsZWQgaW1wb3J0aW5nIGBuZXRgIGxpYnJhcnkgZnJvbSBrZXJuZWwgc291cmNlc1wiKVxuICAgICBwcmludChzdHIoZSkpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvdmxhbi5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L3ZsYW4ucHlcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNTE0YWQzZTVkZmQ4XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody92bGFuLnB5XG5AQCAtMCwwICsxLDEyNyBAQFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rXCJcIlwiXG4rVkxBTiB0ZXN0cy5cbitcbitWYWxpZGF0ZXMgdGhhdCBwaW5nIHRyYWZmaWMgaXMgc2VudCBhbmQgcmVjZWl2ZWQgY29ycmVjdGx5IG92ZXIgODAyLjFxXG4rYW5kIDgwMi4xYWQgVkxBTiBpbnRlcmZhY2VzLCB3aXRoIGhhcmR3YXJlIFJYIFZMQU4gc3RyaXBwaW5nIGVuYWJsZWQgYW5kXG4rZGlzYWJsZWQgb24gdGhlIGxvY2FsIGludGVyZmFjZS5cbitcbitUaGUgXCJod1wiIHRlc3QgdmFyaWFudHMgZW5hYmxlIHRoZSBSWCBWTEFOIHN0cmlwcGluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnlcbit0aGUgZGV2aWNlLCB0aGUgXCJzd1wiIHRlc3QgdmFyaWFudHMgZGlzYWJsZSBhbGwgb2YgdGhlbS4gQSB0ZXN0IGlzIHhmYWlsZWRcbitpZiB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHBvc3NpYmxlLlxuK1xuK1Rlc3QgY2FzZXM6XG4rICAtIDgwMjFxX2h3OiAgVHJhZmZpYyBvdmVyIGEgc2luZ2xlIDgwMi4xcSBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbisgIC0gODAyMXFfc3c6ICBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFxIFZMQU4sIEhXIHN0cmlwcGluZyBvZmZcbisgIC0gODAyMWFkX2h3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb25cbisgIC0gODAyMWFkX3N3OiBUcmFmZmljIG92ZXIgYSBzaW5nbGUgODAyLjFhZCBWTEFOLCBIVyBzdHJpcHBpbmcgb2ZmXG4rICAtIHFpbnFfaHc6ICAgVHJhZmZpYyBvdmVyIGFuIDgwMi4xcSBWTEFOIHN0YWNrZWQgb24gYW4gODAyLjFhZCBWTEFOLFxuKyAgICAgICAgICAgICAgIEhXIHN0cmlwcGluZyBvblxuKyAgLSBxaW5xX3N3OiAgIFRyYWZmaWMgb3ZlciBhbiA4MDIuMXEgVkxBTiBzdGFja2VkIG9uIGFuIDgwMi4xYWQgVkxBTixcbisgICAgICAgICAgICAgICBIVyBzdHJpcHBpbmcgb2ZmXG4rXCJcIlwiXG4rXG4raW1wb3J0IG9zXG4rXG4rZnJvbSBsaWIucHkgaW1wb3J0IChcbisgICAgS3NmdE5hbWVkVmFyaWFudCxcbisgICAgS3NmdFhmYWlsRXgsXG4rICAgIE5ldERydkVwRW52LFxuKyAgICBjbWQsXG4rICAgIGRlZmVyLFxuKyAgICBldGh0b29sLFxuKyAgICBpcCxcbisgICAga3NmdF9leGl0LFxuKyAgICBrc2Z0X3J1bixcbisgICAga3NmdF92YXJpYW50cyxcbisgICAgc2V0X2V0aHRvb2xfZmVhdCxcbispXG4rXG4rT1VURVJfREVWID0gZlwidmxvdXR7b3MuZ2V0cGlkKCl9XCJcbitJTk5FUl9ERVYgPSBmXCJ2bGlue29zLmdldHBpZCgpfVwiXG4rXG4rT1VURVJfVklEID0gMTAwXG4rSU5ORVJfVklEID0gMjAwXG4rXG4rTE9DQUxfSVAgPSBcIjE5OC41MS4xMDAuMVwiXG4rUkVNT1RFX0lQID0gXCIxOTguNTEuMTAwLjJcIlxuK1xuK1xuK2RlZiBfdmxhbl9hZGQoYmFzZSwgbmFtZSwgcHJvdG8sIHZpZCwgaG9zdD1Ob25lKTpcbisgICAgXCJcIlwiQ3JlYXRlIGEgVkxBTiBkZXZpY2Ugb24gdG9wIG9mIGJhc2UgYW5kIGJyaW5nIGl0IHVwLlwiXCJcIlxuK1xuKyAgICBpcChmXCJsaW5rIGFkZCBsaW5rIHtiYXNlfSBuYW1lIHtuYW1lfSB0eXBlIHZsYW4gcHJvdG8ge3Byb3RvfSBpZCB7dmlkfVwiLFxuKyAgICAgICBob3N0PWhvc3QpXG4rICAgIGRlZmVyKGlwLCBmXCJsaW5rIGRlbCB7bmFtZX1cIiwgaG9zdD1ob3N0KVxuKyAgICBpcChmXCJsaW5rIHNldCB7bmFtZX0gdXBcIiwgaG9zdD1ob3N0KVxuK1xuK1xuK2RlZiBfdmxhbl9zZXR1cChiYXNlLCBhZGRyLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sIGhvc3Q9Tm9uZSk6XG4rICAgIFwiXCJcIkNyZWF0ZSBWTEFOIGludGVyZmFjZXMgb24gYmFzZSBhbmQgc2V0IGFuIElQIG9uIHRoZSBpbm5lcm1vc3Qgb25lLlwiXCJcIlxuK1xuKyAgICBfdmxhbl9hZGQoYmFzZSwgT1VURVJfREVWLCBvdXRlcl9wcm90bywgT1VURVJfVklELCBob3N0PWhvc3QpXG4rICAgIGlmIGlubmVyX3Byb3RvOlxuKyAgICAgICAgX3ZsYW5fYWRkKE9VVEVSX0RFViwgSU5ORVJfREVWLCBpbm5lcl9wcm90bywgSU5ORVJfVklELCBob3N0PWhvc3QpXG4rXG4rICAgIGRldiA9IElOTkVSX0RFViBpZiBpbm5lcl9wcm90byBlbHNlIE9VVEVSX0RFVlxuKyAgICBpcChmXCJhZGRyIGFkZCB7YWRkcn0vMjQgZGV2IHtkZXZ9XCIsIGhvc3Q9aG9zdClcbitcbitcbitkZWYgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4rICAgIFwiXCJcIkNvbmZpZ3VyZSBWTEFOIHN0cmlwcGluZyBhbmQgY3JlYXRlIHRoZSBWTEFOIGludGVyZmFjZXMuXCJcIlwiXG4rXG4rICAgIG5hbWVzID0gW1wicngtdmxhbi1vZmZsb2FkXCJdXG4rICAgIGlmIG91dGVyX3Byb3RvID09IFwiODAyLjFhZFwiOlxuKyAgICAgICAgbmFtZXMuYXBwZW5kKFwicngtdmxhbi1zdGFnLWh3LXBhcnNlXCIpXG4rXG4rICAgIGZlYXQgPSBldGh0b29sKGZcIi1rIHtjZmcuaWZuYW1lfVwiLCBqc29uPVRydWUpWzBdXG4rICAgIGZlYXRzID0ge31cbisgICAgZm9yIG5hbWUgaW4gbmFtZXM6XG4rICAgICAgICAjIGh3OiBza2lwIHRoZSBmZWF0dXJlcyB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnRcbisgICAgICAgICMgc3c6IHJlcXVlc3QgYWxsIG9mIHRoZW0gb2ZmXG4rICAgICAgICBpZiBod19zdHJpcCBhbmQgZmVhdFtuYW1lXVtcImZpeGVkXCJdIGFuZCBub3QgZmVhdFtuYW1lXVtcImFjdGl2ZVwiXTpcbisgICAgICAgICAgICBjb250aW51ZVxuKyAgICAgICAgZmVhdHNbbmFtZV0gPSBod19zdHJpcFxuK1xuKyAgICBpZiBod19zdHJpcCBhbmQgbm90IGZlYXRzOlxuKyAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBSWCBWTEFOIHN0cmlwcGluZ1wiKVxuK1xuKyAgICBzZXRfZXRodG9vbF9mZWF0KGNmZy5pZm5hbWUsIGZlYXQsIGZlYXRzKVxuK1xuKyAgICBfdmxhbl9zZXR1cChjZmcuaWZuYW1lLCBMT0NBTF9JUCwgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvKVxuKyAgICBfdmxhbl9zZXR1cChjZmcucmVtb3RlX2lmbmFtZSwgUkVNT1RFX0lQLCBvdXRlcl9wcm90bywgaW5uZXJfcHJvdG8sXG4rICAgICAgICAgICAgICAgIGhvc3Q9Y2ZnLnJlbW90ZSlcbitcbitcbitkZWYgX3ZsYW5fdmFyaWFudHMoKTpcbisgICAgXCJcIlwiR2VuZXJhdG9yIHRoYXQgeWllbGRzIHRoZSBWTEFOIHByb3RvY29scyBhbmQgdGhlIHN0cmlwcGluZyBtb2RlLlwiXCJcIlxuK1xuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMXFfaHdcIiwgXCI4MDIuMXFcIiwgTm9uZSwgVHJ1ZSlcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcIjgwMjFxX3N3XCIsIFwiODAyLjFxXCIsIE5vbmUsIEZhbHNlKVxuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMWFkX2h3XCIsIFwiODAyLjFhZFwiLCBOb25lLCBUcnVlKVxuKyAgICB5aWVsZCBLc2Z0TmFtZWRWYXJpYW50KFwiODAyMWFkX3N3XCIsIFwiODAyLjFhZFwiLCBOb25lLCBGYWxzZSlcbisgICAgeWllbGQgS3NmdE5hbWVkVmFyaWFudChcInFpbnFfaHdcIiwgXCI4MDIuMWFkXCIsIFwiODAyLjFxXCIsIFRydWUpXG4rICAgIHlpZWxkIEtzZnROYW1lZFZhcmlhbnQoXCJxaW5xX3N3XCIsIFwiODAyLjFhZFwiLCBcIjgwMi4xcVwiLCBGYWxzZSlcbitcbitcbitAa3NmdF92YXJpYW50cyhfdmxhbl92YXJpYW50cygpKVxuK2RlZiB0ZXN0KGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcCk6XG4rICAgIFwiXCJcIlJ1biBhIHNpbmdsZSBWTEFOIHRlc3RcIlwiXCJcbitcbisgICAgX3NldHVwKGNmZywgb3V0ZXJfcHJvdG8sIGlubmVyX3Byb3RvLCBod19zdHJpcClcbitcbisgICAgY21kKGZcInBpbmcgLWMgMSAtVyA1IHtSRU1PVEVfSVB9XCIpXG4rXG4rXG4rZGVmIG1haW4oKSAtXHUwMDNlIE5vbmU6XG4rICAgIFwiXCJcIiBLc2Z0IGJvaWxlciBwbGF0ZSBtYWluIFwiXCJcIlxuK1xuKyAgICB3aXRoIE5ldERydkVwRW52KF9fZmlsZV9fKSBhcyBjZmc6XG4rICAgICAgICBrc2Z0X3J1bihjYXNlcz1bdGVzdF0sIGFyZ3M9KGNmZywgKSlcbisgICAga3NmdF9leGl0KClcbitcbitcbitpZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4rICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuaW5kZXggNTkxYjFlNmM3ZWVhYS4uNDBjY2RjZjBjMzc4NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9fX2luaXRfXy5weVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L19faW5pdF9fLnB5XG5AQCAtNDgsMTEgKzQ4LDEyIEBAIHRyeTpcbiAgICAgICAgICAgICAgICBcImtzZnRfbm90X25vbmVcIiwgXCJrc2Z0X25vdF9ub25lXCJdXG4gXG4gICAgIGZyb20gLmVudiBpbXBvcnQgTmV0RHJ2RW52LCBOZXREcnZFcEVudiwgTmV0RHJ2Q29udEVudlxuKyAgICBmcm9tIC5mZWF0IGltcG9ydCBzZXRfZXRodG9vbF9mZWF0XG4gICAgIGZyb20gLmxvYWQgaW1wb3J0IEdlbmVyYXRlVHJhZmZpYywgSXBlcmYzUnVubmVyXG4gICAgIGZyb20gLnJlbW90ZSBpbXBvcnQgUmVtb3RlXG4gXG4gICAgIF9fYWxsX18gKz0gW1wiTmV0RHJ2RW52XCIsIFwiTmV0RHJ2RXBFbnZcIiwgXCJOZXREcnZDb250RW52XCIsIFwiR2VuZXJhdGVUcmFmZmljXCIsXG4tICAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCJdXG4rICAgICAgICAgICAgICAgIFwiUmVtb3RlXCIsIFwiSXBlcmYzUnVubmVyXCIsIFwic2V0X2V0aHRvb2xfZmVhdFwiXVxuIGV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9yIGFzIGU6XG4gICAgIHByaW50KFwiRmFpbGVkIGltcG9ydGluZyBgbmV0YCBsaWJyYXJ5IGZyb20ga2VybmVsIHNvdXJjZXNcIilcbiAgICAgcHJpbnQoc3RyKGUpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9weS9mZWF0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbGliL3B5L2ZlYXQucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iOTRhMjQyMTRlNTk3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9saWIvcHkvZmVhdC5weVxuQEAgLTAsMCArMSwzNSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbitcIlwiXCJcbitOZXRkZXYgZmVhdHVyZSBoZWxwZXIgdXRpbGl0aWVzIGZvciBrZXJuZWwgc2VsZnRlc3RzLlxuK1xuK1Byb3ZpZGVzIGNvbW1vbiBvcGVyYXRpb25zIGZvciBjaGFuZ2luZyBkZXZpY2UgZmVhdHVyZXMgdmlhIGV0aHRvb2wuXG4rXCJcIlwiXG4rXG4rZnJvbSAuIGltcG9ydCBLc2Z0WGZhaWxFeCwgZGVmZXIsIGV0aHRvb2wsIGtzZnRfcHJcbitcbitcbitkZWYgc2V0X2V0aHRvb2xfZmVhdChkZXYsIGN1cnJlbnQsIGZlYXRzLCBob3N0PU5vbmUpOlxuKyAgICBcIlwiXCJTZXQgZXRodG9vbCBmZWF0dXJlcyB3aXRoIGRlZmVyIHRvIHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUuXCJcIlwiXG4rICAgIHMybiA9IHtUcnVlOiBcIm9uXCIsIEZhbHNlOiBcIm9mZlwifVxuK1xuKyAgICBuZXcgPSBbXCItS1wiLCBkZXZdXG4rICAgIG9sZCA9IFtcIi1LXCIsIGRldl1cbisgICAgbm9fY2hhbmdlID0gVHJ1ZVxuKyAgICBmb3IgbmFtZSwgc3RhdGUgaW4gZmVhdHMuaXRlbXMoKTpcbisgICAgICAgIG5ldyArPSBbbmFtZSwgczJuW3N0YXRlXV1cbisgICAgICAgIG9sZCArPSBbbmFtZSwgczJuW2N1cnJlbnRbbmFtZV1bXCJhY3RpdmVcIl1dXVxuK1xuKyAgICAgICAgaWYgY3VycmVudFtuYW1lXVtcImFjdGl2ZVwiXSAhPSBzdGF0ZTpcbisgICAgICAgICAgICBub19jaGFuZ2UgPSBGYWxzZVxuKyAgICAgICAgICAgIGlmIGN1cnJlbnRbbmFtZV1bXCJmaXhlZFwiXTpcbisgICAgICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZlwiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQge25hbWV9XCIpXG4rICAgIGlmIG5vX2NoYW5nZTpcbisgICAgICAgIHJldHVyblxuK1xuKyAgICBldGhfY21kID0gZXRodG9vbChcIiBcIi5qb2luKG5ldyksIGhvc3Q9aG9zdClcbisgICAgZGVmZXIoZXRodG9vbCwgXCIgXCIuam9pbihvbGQpLCBob3N0PWhvc3QpXG4rXG4rICAgICMgSWYgZXRodG9vbCBwcmludGVkIHNvbWV0aGluZyBrZXJuZWwgbXVzdCBoYXZlIG1vZGlmaWVkIHNvbWUgZmVhdHVyZXNcbisgICAgaWYgZXRoX2NtZC5zdGRvdXQ6XG4rICAgICAgICBrc2Z0X3ByKGV0aF9jbWQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QxNTowNjowNy44MDg4NjMyNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NjgxODI4NjQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHNlZWluZyBjaGFuZ2VzIHRvIFB5dGhvbiBzY3JpcHRzIChgZ3JvX2xpYi5weWAsIGB2bGFuLnB5YCwgdmFyaW91cyBgX19pbml0X18ucHlgIGZpbGVzIGFuZCBgZmVhdC5weWApLCBhIGBNYWtlZmlsZWAsIGFuZCBhIGBjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyByZXF1aXJlcyBmdXp6aW5nLCBzbyBJIGltbWVkaWF0ZWx5IGhlYWQgdG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkFjY29yZGluZyB0byBTZWN0aW9uIDIsIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiByZXN1bHQgaXMganVzdGlmaWVkIGlmICphbGwqIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gb25lIG9yIG1vcmUgb2Ygc2V2ZXJhbCBjYXRlZ29yaWVzLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIGlzIGNyaXRpY2FsIHRvIGdldHRpbmcgdGhpcyByaWdodC4gVGhlIGluc3RydWN0aW9ucyBsaXN0IG1vZGlmaWNhdGlvbnMgdGhhdCBkbyAqbm90KiByZXF1aXJlIGZ1enppbmc6IGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCB1c2VyLXNwYWNlIHRvb2xzIGFuZCBzY3JpcHRzIHRoYXQgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBhbmQgYnVpbGQgc3lzdGVtL0tjb25maWcgY2hhbmdlcyB0aGF0IGRvbid0IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG5cbkxvb2tpbmcgY2xvc2VseSBhdCB0aGUgZmlsZSBwYXRocywgSSBpbW1lZGlhdGVseSBzZWUgdGhhdCBhbGwgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9gIHBhdGguIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlc2UgYXJlICp1c2VyLXNwYWNlKiBzZWxmLXRlc3RzLCBzY3JpcHRzLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgZGVmaW5pdGVseSBub3Qga2VybmVsIGNvZGUuIFRoZXkgbGl2ZSBpbiBhIGNvbXBsZXRlbHkgaXNvbGF0ZWQgZW52aXJvbm1lbnQsIHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgdGhlbSBhZmZlY3RpbmcgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBUaGVzZSBhcmUgUHl0aG9uIHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhIE1ha2VmaWxlIGZvciBidWlsZGluZyB0aGUgc2VsZnRlc3RzLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHBhdGNoIHN0cmljdGx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgYXJlIG1ldC4gSSBjb25maXJtIHRoaXMgYnkgYXNzaWduaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB3aXRoIG5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYC4gVGhlIHJlYXNvbmluZyBtdXN0IGJlIGNsZWFyIGFuZCBjb25jaXNlLiBCYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgdXNlci1zcGFjZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4gQWZ0ZXIgYSBxdWljayBkb3VibGUtY2hlY2sgb2YgdGhlIGluc3RydWN0aW9ucyBhbmQgdGhlIFwic2V0LXJlc3VsdHNcIiBndWlkZWxpbmVzLCBJJ20gc3VyZSB0aGF0IHRoaXMgYXNzZXNzbWVudCBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mzg3LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMTU6MDc6MDQuNjI3MTUxNzg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB1c2VyLXNwYWNlIHRlc3Qgc2NyaXB0cyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC8sIHdoaWNoIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlci1zcGFjZSB0ZXN0IHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvLCB3aGljaCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDE1OjA3OjA0LjYyNzE3NjY1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwp86k[1] Phase: Running StartedAt: 2026-09-13 15:07:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwp86k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-13 15:07:16 +0000 UTC FinishedAt: 2026-09-13 15:07:20 +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,}