Name: series-workflowslskq Phase: Failed StartedAt: 2026-09-08 23:48:41 +0000 UTC FinishedAt: 2026-09-08 23:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowslskq[0] Phase: Succeeded StartedAt: 2026-09-08 23:48:41 +0000 UTC FinishedAt: 2026-09-08 23:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowslskq[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 23:48:41 +0000 UTC FinishedAt: 2026-09-08 23:51:27 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2NGUxMmVhY2RhYzdlODQ5ODViMGFjNTVjNjk1YTlhNGFiODE0ZDM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMzo1MTowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5pbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5AQCAtMTc2LDIwICYjNDM7MTc2LDIzIEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgICBzdHJ1Y3Q6XG4gICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBOYW1lIG9mIHRoZSBuZXN0ZWQgc3RydWN0IHR5cGUuXG4gICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZ1xuLSAgICAgICAgICAgIGlmOlxuLSAgICAgICAgICAgICAgcHJvcGVydGllczpcbi0gICAgICAgICAgICAgICAgdHlwZTpcbi0gICAgICAgICAgICAgICAgICBjb25zdDogcGFkXG4tICAgICAgICAgICAgdGhlbjpcbi0gICAgICAgICAgICAgIHJlcXVpcmVkOiBbIGxlbiBdXG4tICAgICAgICAgICAgaWY6XG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgICAgICAgICB0eXBlOlxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBiaW5hcnlcbi0gICAgICAgICAgICB0aGVuOlxuLSAgICAgICAgICAgICAgb25lT2Y6XG4tICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgbGVuIF1cbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXVxuJiM0MzsgICAgICAgICAgICBhbGxPZjpcbiYjNDM7ICAgICAgICAgICAgICAtXG4mIzQzOyAgICAgICAgICAgICAgICBpZjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0eXBlOlxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHBhZFxuJiM0MzsgICAgICAgICAgICAgICAgdGhlbjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbiYjNDM7ICAgICAgICAgICAgICAtXG4mIzQzOyAgICAgICAgICAgICAgICBpZjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0eXBlOlxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxuJiM0MzsgICAgICAgICAgICAgICAgdGhlbjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgb25lT2Y6XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cbiAgICAgICAgICMgRW5kIGdlbmV0bGluay1sZWdhY3lcbiBcbiAgIGF0dHJpYnV0ZS1zZXRzOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5XG5AQCAtMzE3LDYgJiM0MzszMTcsMTAgQEAgY2xhc3MgTmxBdHRyczpcbiBcbiAgICAgICAgIHdoaWxlIG9mZnNldCBcdTAwM2MgbGVuKG1zZyk6XG4gICAgICAgICAgICAgYXR0ciA9IE5sQXR0cihtc2csIG9mZnNldClcbiYjNDM7ICAgICAgICAgICAgaWYgYXR0ci5mdWxsX2xlbiBcdTAwM2MgNDpcbiYjNDM7ICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBmJiMzOTtNYWxmb3JtZWQgYXR0cmlidXRlIGF0IG9mZnNldCB7b2Zmc2V0fTogJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBmJiMzOTtsZW5ndGgge2F0dHIucGF5bG9hZF9sZW59IGlzIHNob3J0ZXIgdGhhbiB0aGUgaGVhZGVyJiMzOTspXG4gICAgICAgICAgICAgb2Zmc2V0ICYjNDM7PSBhdHRyLmZ1bGxfbGVuXG4gICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBlbmQoYXR0cilcbiBcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5pbmRleCAyYjM0ODNkYjFiNjBjLi42NmE2ZGJlMDcxMjUzIDEwMDc1NVxuLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5AQCAtMzI0NywxNSAmIzQzOzMyNDcsMTcgQEAgZGVmIHJlbmRlcl91YXBpKGZhbWlseSwgY3cpOlxuICAgICAgICAgICAgICAgICBjb250aW51ZVxuIFxuICAgICAgICAgICAgIGlmIGVudW0uaGFzX2RvYygpOlxuLSAgICAgICAgICAgICAgICBpZiBlbnVtLmhhc19lbnRyeV9kb2MoKTpcbiYjNDM7ICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJiMzOTsvKiomIzM5OylcbiAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7JiMzOTtcbiAgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5OyAtICYjMzk7ICYjNDM7IGVudW1bJiMzOTtkb2MmIzM5O11cbiAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW0uZW51bV9uYW1lICYjNDM7IGRvYylcbiAgICAgICAgICAgICAgICAgZWxzZTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIFJlbmRlciBhIHBsYWluIGNvbW1lbnQsIG5vIGtkb2MgaWRlbnRpZmllciBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJiMzOTsvKiYjMzk7KVxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKVxuICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxuICAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkuaGFzX2RvYygpOlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7QCYjMzk7ICYjNDM7IGVudHJ5LmNfbmFtZSAmIzQzOyAmIzM5OzogJiMzOTsgJiM0MzsgZW50cnlbJiMzOTtkb2MmIzM5O11cbkBAIC0zNDQ5LDcgJiM0MzszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XG4gICAgIHN1Yl9wYXRoID0gJiMzOTsmIzM5O1xuICAgICB3aGlsZSBUcnVlOlxuICAgICAgICAgc3ViX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpLCBzdWJfcGF0aClcbi0gICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpXG4mIzQzOyAgICAgICAgcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcbiYjNDM7ICAgICAgICBpZiBwYXJlbnQgPT0gZnVsbF9wYXRoOlxuJiM0MzsgICAgICAgICAgICAjIFJlYWNoZWQgdGhlIGZpbGVzeXN0ZW0gcm9vdCB3aXRob3V0IGZpbmRpbmcgYSBrZXJuZWwgdHJlZSwgZmFsbFxuJiM0MzsgICAgICAgICAgICAjIGJhY2sgdG8gdGhlIHBhdGggZ2l2ZW4uXG4mIzQzOyAgICAgICAgICAgIHJldHVybiBOb25lLCBzdWJfcGF0aFs6LTFdXG4mIzQzOyAgICAgICAgZnVsbF9wYXRoID0gcGFyZW50XG4gICAgICAgICBtYWludGFpbmVycyA9IG9zLnBhdGguam9pbihmdWxsX3BhdGgsIFwmIzM0O01BSU5UQUlORVJTXCYjMzQ7KVxuICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFpbnRhaW5lcnMpOlxuICAgICAgICAgICAgIHJldHVybiBmdWxsX3BhdGgsIHN1Yl9wYXRoWzotMV1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY0ZTEyZWFjZGFjN2U4NDk4NWIwYWM1NWM2OTVhOWE0YWI4MTRkMzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDIzOjUxOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbAppbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbApAQCAtMTc2LDIwICYjNDM7MTc2LDIzIEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgIHN0cnVjdDoKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogTmFtZSBvZiB0aGUgbmVzdGVkIHN0cnVjdCB0eXBlLgogICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwotICAgICAgICAgICAgaWY6Ci0gICAgICAgICAgICAgIHByb3BlcnRpZXM6Ci0gICAgICAgICAgICAgICAgdHlwZToKLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWQKLSAgICAgICAgICAgIHRoZW46Ci0gICAgICAgICAgICAgIHJlcXVpcmVkOiBbIGxlbiBdCi0gICAgICAgICAgICBpZjoKLSAgICAgICAgICAgICAgcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICB0eXBlOgotICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeQotICAgICAgICAgICAgdGhlbjoKLSAgICAgICAgICAgICAgb25lT2Y6Ci0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXQotICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF0KJiM0MzsgICAgICAgICAgICBhbGxPZjoKJiM0MzsgICAgICAgICAgICAgIC0KJiM0MzsgICAgICAgICAgICAgICAgaWY6CiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICAgICAgICAgIHR5cGU6CiYjNDM7ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWQKJiM0MzsgICAgICAgICAgICAgICAgdGhlbjoKJiM0MzsgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyBsZW4gXQomIzQzOyAgICAgICAgICAgICAgLQomIzQzOyAgICAgICAgICAgICAgICBpZjoKJiM0MzsgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgICAgICAgICAgICAgICAgdHlwZToKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeQomIzQzOyAgICAgICAgICAgICAgICB0aGVuOgomIzQzOyAgICAgICAgICAgICAgICAgIG9uZU9mOgomIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXQomIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXQogICAgICAgICAjIEVuZCBnZW5ldGxpbmstbGVnYWN5CiAKICAgYXR0cmlidXRlLXNldHM6CmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkgYi90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkKaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weQpAQCAtMzE3LDYgJiM0MzszMTcsMTAgQEAgY2xhc3MgTmxBdHRyczoKIAogICAgICAgICB3aGlsZSBvZmZzZXQgJmx0OyBsZW4obXNnKToKICAgICAgICAgICAgIGF0dHIgPSBObEF0dHIobXNnLCBvZmZzZXQpCiYjNDM7ICAgICAgICAgICAgaWYgYXR0ci5mdWxsX2xlbiAmbHQ7IDQ6CiYjNDM7ICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbigKJiM0MzsgICAgICAgICAgICAgICAgICAgIGYmIzM5O01hbGZvcm1lZCBhdHRyaWJ1dGUgYXQgb2Zmc2V0IHtvZmZzZXR9OiAmIzM5OwomIzQzOyAgICAgICAgICAgICAgICAgICAgZiYjMzk7bGVuZ3RoIHthdHRyLnBheWxvYWRfbGVufSBpcyBzaG9ydGVyIHRoYW4gdGhlIGhlYWRlciYjMzk7KQogICAgICAgICAgICAgb2Zmc2V0ICYjNDM7PSBhdHRyLmZ1bGxfbGVuCiAgICAgICAgICAgICBzZWxmLmF0dHJzLmFwcGVuZChhdHRyKQogCmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CmluZGV4IDJiMzQ4M2RiMWI2MGMuLjY2YTZkYmUwNzEyNTMgMTAwNzU1Ci0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CkBAIC0zMjQ3LDE1ICYjNDM7MzI0NywxNyBAQCBkZWYgcmVuZGVyX3VhcGkoZmFtaWx5LCBjdyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgZW51bS5oYXNfZG9jKCk6Ci0gICAgICAgICAgICAgICAgaWYgZW51bS5oYXNfZW50cnlfZG9jKCk6CiYjNDM7ICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZToKICAgICAgICAgICAgICAgICAgICAgY3cucCgmIzM5Oy8qKiYjMzk7KQogICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5OyYjMzk7CiAgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bToKICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7IC0gJiMzOTsgJiM0MzsgZW51bVsmIzM5O2RvYyYjMzk7XQogICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtLmVudW1fbmFtZSAmIzQzOyBkb2MpCiAgICAgICAgICAgICAgICAgZWxzZToKJiM0MzsgICAgICAgICAgICAgICAgICAgICMgUmVuZGVyIGEgcGxhaW4gY29tbWVudCwgbm8ga2RvYyBpZGVudGlmaWVyIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7LyomIzM5OykKLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKQomIzQzOyAgICAgICAgICAgICAgICAgICAgaWYgJiMzOTtkb2MmIzM5OyBpbiBlbnVtOgomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW1bJiMzOTtkb2MmIzM5O10sIGluZGVudD1GYWxzZSkKICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5oYXNfZG9jKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5O0AmIzM5OyAmIzQzOyBlbnRyeS5jX25hbWUgJiM0MzsgJiMzOTs6ICYjMzk7ICYjNDM7IGVudHJ5WyYjMzk7ZG9jJiMzOTtdCkBAIC0zNDQ5LDcgJiM0MzszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6CiAgICAgc3ViX3BhdGggPSAmIzM5OyYjMzk7CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgc3ViX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpLCBzdWJfcGF0aCkKLSAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKJiM0MzsgICAgICAgIHBhcmVudCA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCiYjNDM7ICAgICAgICBpZiBwYXJlbnQgPT0gZnVsbF9wYXRoOgomIzQzOyAgICAgICAgICAgICMgUmVhY2hlZCB0aGUgZmlsZXN5c3RlbSByb290IHdpdGhvdXQgZmluZGluZyBhIGtlcm5lbCB0cmVlLCBmYWxsCiYjNDM7ICAgICAgICAgICAgIyBiYWNrIHRvIHRoZSBwYXRoIGdpdmVuLgomIzQzOyAgICAgICAgICAgIHJldHVybiBOb25lLCBzdWJfcGF0aFs6LTFdCiYjNDM7ICAgICAgICBmdWxsX3BhdGggPSBwYXJlbnQKICAgICAgICAgbWFpbnRhaW5lcnMgPSBvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCAmIzM0O01BSU5UQUlORVJTJiMzNDspCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1haW50YWluZXJzKToKICAgICAgICAgICAgIHJldHVybiBmdWxsX3BhdGgsIHN1Yl9wYXRoWzotMV0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NAoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgRGlmZioqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBkaWZmLiBJIHNlZSBjaGFuZ2VzIGluIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbGAsIGB0b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHlgLCBhbmQgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGFwcGx5IHRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEuIExldCYjMzk7cyBzZWUuLi4gdGhlIGd1aWRlbGluZXMgaW4gU2VjdGlvbiAyIGxheSBvdXQgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEmIzM0OyAtIHdoZW4gd2UgKmRvbiYjMzk7dCogbmVlZCB0byBib3RoZXIgd2l0aCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMgdGhhdCBpbmNsdWRlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBzcGVsbGluZyBmaXhlcywgb3IgdXNlci1zcGFjZSBzY3JpcHRzIHRoYXQgZG9uJiMzOTt0IGltcGFjdCBgdm1saW51eGAgb3Iga2VybmVsIG1vZHVsZXMuCgpMb29raW5nIGF0IHRoZXNlIGZpbGVzLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBEb2N1bWVudGF0aW9uL2AgaXMgZG9jdW1lbnRhdGlvbiwgc28gdGhhdCYjMzk7cyBhIGNoZWNrLiBUaGUgYHRvb2xzL25ldC95bmwvYCBkaXJlY3RvcnkgY29udGFpbnMsIGFzIHRoZSBwYXRoIGltcGxpZXMsIHRvb2xzIGFuZCBzY3JpcHRzLiBUaGVzZSBhcmUgYWxsIHVzZXItc3BhY2UsIGFuZCB0aGV5IGRvbiYjMzk7dCBzZWVtIGxpa2UgdGhleSYjMzk7cmUgZ29pbmcgdG8gYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgYW55IG1vZHVsZXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcnVuIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHVzaW5nIGBncmVwcGVyYCBvciBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNoYW5nZWQgZmlsZXMgdGhhdCBJIGhhdmVuJiMzOTt0IHNlZW4geWV0IGluIHRoZSBjb21taXQgc3VtbWFyeS4KCkFzc3VtaW5nIHRoYXQgeWllbGRzIG5vdGhpbmcgc2lnbmlmaWNhbnQsIEkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGBFbmFibGVDb25maWdzYCB0byBlbXB0eSBhcyB3ZWxsLCBhbmQgcHJvdmlkZSBhIHJlYXNvbmluZyB0aGF0IGV4cGxhaW5zIHRoaXMgYXNzZXNzbWVudC4gVGhlIHJlYXNvbmluZyB3aWxsIGV4cGxhaW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgaW4gZG9jdW1lbnRhdGlvbiBhbmQgdXNlci1zcGFjZSBzY3JpcHRzIHdpdGhpbiB0aGUgYHRvb2xzYCBkaXJlY3RvcnksIGFuZCBuZWl0aGVyIG9mIHRoZXNlIGFmZmVjdCB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjA5LjA3MjI5MDg0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjM2NjI3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjM6NTE6MDkuMDcyMjk2NjE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDY0NTQ2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2NGUxMmVhY2RhYzdlODQ5ODViMGFjNTVjNjk1YTlhNGFiODE0ZDM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMjM6NTE6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbFxcbmluZGV4IDRjNDM2YjU5YTM0YmUuLjE4Y2NmZTA1MDQ4YWUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbFxcbkBAIC0xNzYsMjAgKzE3NiwyMyBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgICAgIHN0cnVjdDpcXG4gICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBOYW1lIG9mIHRoZSBuZXN0ZWQgc3RydWN0IHR5cGUuXFxuICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmdcXG4tICAgICAgICAgICAgaWY6XFxuLSAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4tICAgICAgICAgICAgICAgIHR5cGU6XFxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWRcXG4tICAgICAgICAgICAgdGhlbjpcXG4tICAgICAgICAgICAgICByZXF1aXJlZDogWyBsZW4gXVxcbi0gICAgICAgICAgICBpZjpcXG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxcbi0gICAgICAgICAgICAgICAgdHlwZTpcXG4tICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxcbi0gICAgICAgICAgICB0aGVuOlxcbi0gICAgICAgICAgICAgIG9uZU9mOlxcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXVxcbisgICAgICAgICAgICBhbGxPZjpcXG4rICAgICAgICAgICAgICAtXFxuKyAgICAgICAgICAgICAgICBpZjpcXG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxcbisgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHBhZFxcbisgICAgICAgICAgICAgICAgdGhlbjpcXG4rICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cXG4rICAgICAgICAgICAgICAtXFxuKyAgICAgICAgICAgICAgICBpZjpcXG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxcbisgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxcbisgICAgICAgICAgICAgICAgdGhlbjpcXG4rICAgICAgICAgICAgICAgICAgb25lT2Y6XFxuKyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxcbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cXG4gICAgICAgICAjIEVuZCBnZW5ldGxpbmstbGVnYWN5XFxuIFxcbiAgIGF0dHJpYnV0ZS1zZXRzOlxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkgYi90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHlcXG5pbmRleCA4NjgyYmY1ODhlMWZhLi4zNzVhMTVkODNhMzQyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxcbkBAIC0zMTcsNiArMzE3LDEwIEBAIGNsYXNzIE5sQXR0cnM6XFxuIFxcbiAgICAgICAgIHdoaWxlIG9mZnNldCBcXHUwMDNjIGxlbihtc2cpOlxcbiAgICAgICAgICAgICBhdHRyID0gTmxBdHRyKG1zZywgb2Zmc2V0KVxcbisgICAgICAgICAgICBpZiBhdHRyLmZ1bGxfbGVuIFxcdTAwM2MgNDpcXG4rICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcXG4rICAgICAgICAgICAgICAgICAgICBmJ01hbGZvcm1lZCBhdHRyaWJ1dGUgYXQgb2Zmc2V0IHtvZmZzZXR9OiAnXFxuKyAgICAgICAgICAgICAgICAgICAgZidsZW5ndGgge2F0dHIucGF5bG9hZF9sZW59IGlzIHNob3J0ZXIgdGhhbiB0aGUgaGVhZGVyJylcXG4gICAgICAgICAgICAgb2Zmc2V0ICs9IGF0dHIuZnVsbF9sZW5cXG4gICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBlbmQoYXR0cilcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcXG5pbmRleCAyYjM0ODNkYjFiNjBjLi42NmE2ZGJlMDcxMjUzIDEwMDc1NVxcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcXG5AQCAtMzI0NywxNSArMzI0NywxNyBAQCBkZWYgcmVuZGVyX3VhcGkoZmFtaWx5LCBjdyk6XFxuICAgICAgICAgICAgICAgICBjb250aW51ZVxcbiBcXG4gICAgICAgICAgICAgaWYgZW51bS5oYXNfZG9jKCk6XFxuLSAgICAgICAgICAgICAgICBpZiBlbnVtLmhhc19lbnRyeV9kb2MoKTpcXG4rICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcXG4gICAgICAgICAgICAgICAgICAgICBjdy5wKCcvKionKVxcbiAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICcnXFxuICAgICAgICAgICAgICAgICAgICAgaWYgJ2RvYycgaW4gZW51bTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgZG9jID0gJyAtICcgKyBlbnVtWydkb2MnXVxcbiAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW0uZW51bV9uYW1lICsgZG9jKVxcbiAgICAgICAgICAgICAgICAgZWxzZTpcXG4rICAgICAgICAgICAgICAgICAgICAjIFJlbmRlciBhIHBsYWluIGNvbW1lbnQsIG5vIGtkb2MgaWRlbnRpZmllciBhdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgICAgICBjdy5wKCcvKicpXFxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcXG4rICAgICAgICAgICAgICAgICAgICBpZiAnZG9jJyBpbiBlbnVtOlxcbisgICAgICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtWydkb2MnXSwgaW5kZW50PUZhbHNlKVxcbiAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudW0uZW50cmllcy52YWx1ZXMoKTpcXG4gICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5oYXNfZG9jKCk6XFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICdAJyArIGVudHJ5LmNfbmFtZSArICc6ICcgKyBlbnRyeVsnZG9jJ11cXG5AQCAtMzQ0OSw3ICszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XFxuICAgICBzdWJfcGF0aCA9ICcnXFxuICAgICB3aGlsZSBUcnVlOlxcbiAgICAgICAgIHN1Yl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSwgc3ViX3BhdGgpXFxuLSAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcXG4rICAgICAgICBwYXJlbnQgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKVxcbisgICAgICAgIGlmIHBhcmVudCA9PSBmdWxsX3BhdGg6XFxuKyAgICAgICAgICAgICMgUmVhY2hlZCB0aGUgZmlsZXN5c3RlbSByb290IHdpdGhvdXQgZmluZGluZyBhIGtlcm5lbCB0cmVlLCBmYWxsXFxuKyAgICAgICAgICAgICMgYmFjayB0byB0aGUgcGF0aCBnaXZlbi5cXG4rICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN1Yl9wYXRoWzotMV1cXG4rICAgICAgICBmdWxsX3BhdGggPSBwYXJlbnRcXG4gICAgICAgICBtYWludGFpbmVycyA9IG9zLnBhdGguam9pbihmdWxsX3BhdGgsIFxcXCJNQUlOVEFJTkVSU1xcXCIpXFxuICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFpbnRhaW5lcnMpOlxcbiAgICAgICAgICAgICByZXR1cm4gZnVsbF9wYXRoLCBzdWJfcGF0aFs6LTFdXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjA5LjcxOTcwNzQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzExNjIzNTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjRlMTJlYWNkYWM3ZTg0OTg1YjBhYzU1YzY5NWE5YTRhYjgxNGQzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjM6NTE6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5pbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5AQCAtMTc2LDIwICsxNzYsMjMgQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgICAgIHN0cnVjdDpcbiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IE5hbWUgb2YgdGhlIG5lc3RlZCBzdHJ1Y3QgdHlwZS5cbiAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nXG4tICAgICAgICAgICAgaWY6XG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgICAgICAgICB0eXBlOlxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWRcbi0gICAgICAgICAgICB0aGVuOlxuLSAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbi0gICAgICAgICAgICBpZjpcbi0gICAgICAgICAgICAgIHByb3BlcnRpZXM6XG4tICAgICAgICAgICAgICAgIHR5cGU6XG4tICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxuLSAgICAgICAgICAgIHRoZW46XG4tICAgICAgICAgICAgICBvbmVPZjpcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxuLSAgICAgICAgICAgICAgICAtIHJlcXVpcmVkOiBbIHN0cnVjdCBdXG4rICAgICAgICAgICAgYWxsT2Y6XG4rICAgICAgICAgICAgICAtXG4rICAgICAgICAgICAgICAgIGlmOlxuKyAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxuKyAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcGFkXG4rICAgICAgICAgICAgICAgIHRoZW46XG4rICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbisgICAgICAgICAgICAgIC1cbisgICAgICAgICAgICAgICAgaWY6XG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbisgICAgICAgICAgICAgICAgICAgIHR5cGU6XG4rICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBiaW5hcnlcbisgICAgICAgICAgICAgICAgdGhlbjpcbisgICAgICAgICAgICAgICAgICBvbmVPZjpcbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgbGVuIF1cbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cbiAgICAgICAgICMgRW5kIGdlbmV0bGluay1sZWdhY3lcbiBcbiAgIGF0dHJpYnV0ZS1zZXRzOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5XG5AQCAtMzE3LDYgKzMxNywxMCBAQCBjbGFzcyBObEF0dHJzOlxuIFxuICAgICAgICAgd2hpbGUgb2Zmc2V0IFx1MDAzYyBsZW4obXNnKTpcbiAgICAgICAgICAgICBhdHRyID0gTmxBdHRyKG1zZywgb2Zmc2V0KVxuKyAgICAgICAgICAgIGlmIGF0dHIuZnVsbF9sZW4gXHUwMDNjIDQ6XG4rICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcbisgICAgICAgICAgICAgICAgICAgIGYnTWFsZm9ybWVkIGF0dHJpYnV0ZSBhdCBvZmZzZXQge29mZnNldH06ICdcbisgICAgICAgICAgICAgICAgICAgIGYnbGVuZ3RoIHthdHRyLnBheWxvYWRfbGVufSBpcyBzaG9ydGVyIHRoYW4gdGhlIGhlYWRlcicpXG4gICAgICAgICAgICAgb2Zmc2V0ICs9IGF0dHIuZnVsbF9sZW5cbiAgICAgICAgICAgICBzZWxmLmF0dHJzLmFwcGVuZChhdHRyKVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjY2YTZkYmUwNzEyNTMgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0zMjQ3LDE1ICszMjQ3LDE3IEBAIGRlZiByZW5kZXJfdWFwaShmYW1pbHksIGN3KTpcbiAgICAgICAgICAgICAgICAgY29udGludWVcbiBcbiAgICAgICAgICAgICBpZiBlbnVtLmhhc19kb2MoKTpcbi0gICAgICAgICAgICAgICAgaWYgZW51bS5oYXNfZW50cnlfZG9jKCk6XG4rICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJy8qKicpXG4gICAgICAgICAgICAgICAgICAgICBkb2MgPSAnJ1xuICAgICAgICAgICAgICAgICAgICAgaWYgJ2RvYycgaW4gZW51bTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAnIC0gJyArIGVudW1bJ2RvYyddXG4gICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtLmVudW1fbmFtZSArIGRvYylcbiAgICAgICAgICAgICAgICAgZWxzZTpcbisgICAgICAgICAgICAgICAgICAgICMgUmVuZGVyIGEgcGxhaW4gY29tbWVudCwgbm8ga2RvYyBpZGVudGlmaWVyIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgY3cucCgnLyonKVxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcbisgICAgICAgICAgICAgICAgICAgIGlmICdkb2MnIGluIGVudW06XG4rICAgICAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcbiAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudW0uZW50cmllcy52YWx1ZXMoKTpcbiAgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5Lmhhc19kb2MoKTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAnQCcgKyBlbnRyeS5jX25hbWUgKyAnOiAnICsgZW50cnlbJ2RvYyddXG5AQCAtMzQ0OSw3ICszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XG4gICAgIHN1Yl9wYXRoID0gJydcbiAgICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgIHN1Yl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSwgc3ViX3BhdGgpXG4tICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKVxuKyAgICAgICAgcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcbisgICAgICAgIGlmIHBhcmVudCA9PSBmdWxsX3BhdGg6XG4rICAgICAgICAgICAgIyBSZWFjaGVkIHRoZSBmaWxlc3lzdGVtIHJvb3Qgd2l0aG91dCBmaW5kaW5nIGEga2VybmVsIHRyZWUsIGZhbGxcbisgICAgICAgICAgICAjIGJhY2sgdG8gdGhlIHBhdGggZ2l2ZW4uXG4rICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN1Yl9wYXRoWzotMV1cbisgICAgICAgIGZ1bGxfcGF0aCA9IHBhcmVudFxuICAgICAgICAgbWFpbnRhaW5lcnMgPSBvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCBcIk1BSU5UQUlORVJTXCIpXG4gICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYWludGFpbmVycyk6XG4gICAgICAgICAgICAgcmV0dXJuIGZ1bGxfcGF0aCwgc3ViX3BhdGhbOi0xXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjM6NTE6MDkuNzE5NzA5OTM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzExNjIxMzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgRGlmZioqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgZGlmZi4gSSBzZWUgY2hhbmdlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxgLCBgdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5YCwgYW5kIGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBMZXQncyBzZWUuLi4gdGhlIGd1aWRlbGluZXMgaW4gU2VjdGlvbiAyIGxheSBvdXQgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWFcIiAtIHdoZW4gd2UgKmRvbid0KiBuZWVkIHRvIGJvdGhlciB3aXRoIGZ1enppbmcuIFNwZWNpZmljYWxseSwgbm9uLWtlcm5lbCwgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcyB0aGF0IGluY2x1ZGUgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBvciB1c2VyLXNwYWNlIHNjcmlwdHMgdGhhdCBkb24ndCBpbXBhY3QgYHZtbGludXhgIG9yIGtlcm5lbCBtb2R1bGVzLlxuXG5Mb29raW5nIGF0IHRoZXNlIGZpbGVzLCBpdCdzIHByZXR0eSBjbGVhcjogYERvY3VtZW50YXRpb24vYCBpcyBkb2N1bWVudGF0aW9uLCBzbyB0aGF0J3MgYSBjaGVjay4gVGhlIGB0b29scy9uZXQveW5sL2AgZGlyZWN0b3J5IGNvbnRhaW5zLCBhcyB0aGUgcGF0aCBpbXBsaWVzLCB0b29scyBhbmQgc2NyaXB0cy4gVGhlc2UgYXJlIGFsbCB1c2VyLXNwYWNlLCBhbmQgdGhleSBkb24ndCBzZWVtIGxpa2UgdGhleSdyZSBnb2luZyB0byBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBhbnkgbW9kdWxlcy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcnVuIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHVzaW5nIGBncmVwcGVyYCBvciBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNoYW5nZWQgZmlsZXMgdGhhdCBJIGhhdmVuJ3Qgc2VlbiB5ZXQgaW4gdGhlIGNvbW1pdCBzdW1tYXJ5LlxuXG5Bc3N1bWluZyB0aGF0IHlpZWxkcyBub3RoaW5nIHNpZ25pZmljYW50LCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBlbXB0eSwgYEVuYWJsZUNvbmZpZ3NgIHRvIGVtcHR5IGFzIHdlbGwsIGFuZCBwcm92aWRlIGEgcmVhc29uaW5nIHRoYXQgZXhwbGFpbnMgdGhpcyBhc3Nlc3NtZW50LiBUaGUgcmVhc29uaW5nIHdpbGwgZXhwbGFpbiB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpbiBkb2N1bWVudGF0aW9uIGFuZCB1c2VyLXNwYWNlIHNjcmlwdHMgd2l0aGluIHRoZSBgdG9vbHNgIGRpcmVjdG9yeSwgYW5kIG5laXRoZXIgb2YgdGhlc2UgYWZmZWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NCwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjE2LjgzNTkyNTY0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgZG9jdW1lbnRhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwpIGFuZCB1c2Vyc3BhY2UgdG9vbGluZy9zY3JpcHRzICh0b29scy9uZXQveW5sL3B5eW5sLykuIE5vIGtlcm5lbCBzb3VyY2UgY29kZSBvciBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgvbW9kdWxlcykgaXMgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMzo1MToxNi44MzU5NDUxNzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowslskq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 23:48:41 +0000 UTC FinishedAt: 2026-09-08 23:51:17 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2NGUxMmVhY2RhYzdlODQ5ODViMGFjNTVjNjk1YTlhNGFiODE0ZDM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMzo1MTowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5pbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5AQCAtMTc2LDIwICYjNDM7MTc2LDIzIEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgICBzdHJ1Y3Q6XG4gICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBOYW1lIG9mIHRoZSBuZXN0ZWQgc3RydWN0IHR5cGUuXG4gICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZ1xuLSAgICAgICAgICAgIGlmOlxuLSAgICAgICAgICAgICAgcHJvcGVydGllczpcbi0gICAgICAgICAgICAgICAgdHlwZTpcbi0gICAgICAgICAgICAgICAgICBjb25zdDogcGFkXG4tICAgICAgICAgICAgdGhlbjpcbi0gICAgICAgICAgICAgIHJlcXVpcmVkOiBbIGxlbiBdXG4tICAgICAgICAgICAgaWY6XG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgICAgICAgICB0eXBlOlxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBiaW5hcnlcbi0gICAgICAgICAgICB0aGVuOlxuLSAgICAgICAgICAgICAgb25lT2Y6XG4tICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgbGVuIF1cbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXVxuJiM0MzsgICAgICAgICAgICBhbGxPZjpcbiYjNDM7ICAgICAgICAgICAgICAtXG4mIzQzOyAgICAgICAgICAgICAgICBpZjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0eXBlOlxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHBhZFxuJiM0MzsgICAgICAgICAgICAgICAgdGhlbjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbiYjNDM7ICAgICAgICAgICAgICAtXG4mIzQzOyAgICAgICAgICAgICAgICBpZjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0eXBlOlxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxuJiM0MzsgICAgICAgICAgICAgICAgdGhlbjpcbiYjNDM7ICAgICAgICAgICAgICAgICAgb25lT2Y6XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cbiAgICAgICAgICMgRW5kIGdlbmV0bGluay1sZWdhY3lcbiBcbiAgIGF0dHJpYnV0ZS1zZXRzOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5XG5AQCAtMzE3LDYgJiM0MzszMTcsMTAgQEAgY2xhc3MgTmxBdHRyczpcbiBcbiAgICAgICAgIHdoaWxlIG9mZnNldCBcdTAwM2MgbGVuKG1zZyk6XG4gICAgICAgICAgICAgYXR0ciA9IE5sQXR0cihtc2csIG9mZnNldClcbiYjNDM7ICAgICAgICAgICAgaWYgYXR0ci5mdWxsX2xlbiBcdTAwM2MgNDpcbiYjNDM7ICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBmJiMzOTtNYWxmb3JtZWQgYXR0cmlidXRlIGF0IG9mZnNldCB7b2Zmc2V0fTogJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBmJiMzOTtsZW5ndGgge2F0dHIucGF5bG9hZF9sZW59IGlzIHNob3J0ZXIgdGhhbiB0aGUgaGVhZGVyJiMzOTspXG4gICAgICAgICAgICAgb2Zmc2V0ICYjNDM7PSBhdHRyLmZ1bGxfbGVuXG4gICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBlbmQoYXR0cilcbiBcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5pbmRleCAyYjM0ODNkYjFiNjBjLi42NmE2ZGJlMDcxMjUzIDEwMDc1NVxuLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5AQCAtMzI0NywxNSAmIzQzOzMyNDcsMTcgQEAgZGVmIHJlbmRlcl91YXBpKGZhbWlseSwgY3cpOlxuICAgICAgICAgICAgICAgICBjb250aW51ZVxuIFxuICAgICAgICAgICAgIGlmIGVudW0uaGFzX2RvYygpOlxuLSAgICAgICAgICAgICAgICBpZiBlbnVtLmhhc19lbnRyeV9kb2MoKTpcbiYjNDM7ICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJiMzOTsvKiomIzM5OylcbiAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7JiMzOTtcbiAgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5OyAtICYjMzk7ICYjNDM7IGVudW1bJiMzOTtkb2MmIzM5O11cbiAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW0uZW51bV9uYW1lICYjNDM7IGRvYylcbiAgICAgICAgICAgICAgICAgZWxzZTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIFJlbmRlciBhIHBsYWluIGNvbW1lbnQsIG5vIGtkb2MgaWRlbnRpZmllciBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJiMzOTsvKiYjMzk7KVxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKVxuICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxuICAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkuaGFzX2RvYygpOlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7QCYjMzk7ICYjNDM7IGVudHJ5LmNfbmFtZSAmIzQzOyAmIzM5OzogJiMzOTsgJiM0MzsgZW50cnlbJiMzOTtkb2MmIzM5O11cbkBAIC0zNDQ5LDcgJiM0MzszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XG4gICAgIHN1Yl9wYXRoID0gJiMzOTsmIzM5O1xuICAgICB3aGlsZSBUcnVlOlxuICAgICAgICAgc3ViX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpLCBzdWJfcGF0aClcbi0gICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpXG4mIzQzOyAgICAgICAgcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcbiYjNDM7ICAgICAgICBpZiBwYXJlbnQgPT0gZnVsbF9wYXRoOlxuJiM0MzsgICAgICAgICAgICAjIFJlYWNoZWQgdGhlIGZpbGVzeXN0ZW0gcm9vdCB3aXRob3V0IGZpbmRpbmcgYSBrZXJuZWwgdHJlZSwgZmFsbFxuJiM0MzsgICAgICAgICAgICAjIGJhY2sgdG8gdGhlIHBhdGggZ2l2ZW4uXG4mIzQzOyAgICAgICAgICAgIHJldHVybiBOb25lLCBzdWJfcGF0aFs6LTFdXG4mIzQzOyAgICAgICAgZnVsbF9wYXRoID0gcGFyZW50XG4gICAgICAgICBtYWludGFpbmVycyA9IG9zLnBhdGguam9pbihmdWxsX3BhdGgsIFwmIzM0O01BSU5UQUlORVJTXCYjMzQ7KVxuICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFpbnRhaW5lcnMpOlxuICAgICAgICAgICAgIHJldHVybiBmdWxsX3BhdGgsIHN1Yl9wYXRoWzotMV1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY0ZTEyZWFjZGFjN2U4NDk4NWIwYWM1NWM2OTVhOWE0YWI4MTRkMzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDIzOjUxOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbAppbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbApAQCAtMTc2LDIwICYjNDM7MTc2LDIzIEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgIHN0cnVjdDoKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogTmFtZSBvZiB0aGUgbmVzdGVkIHN0cnVjdCB0eXBlLgogICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwotICAgICAgICAgICAgaWY6Ci0gICAgICAgICAgICAgIHByb3BlcnRpZXM6Ci0gICAgICAgICAgICAgICAgdHlwZToKLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWQKLSAgICAgICAgICAgIHRoZW46Ci0gICAgICAgICAgICAgIHJlcXVpcmVkOiBbIGxlbiBdCi0gICAgICAgICAgICBpZjoKLSAgICAgICAgICAgICAgcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICB0eXBlOgotICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeQotICAgICAgICAgICAgdGhlbjoKLSAgICAgICAgICAgICAgb25lT2Y6Ci0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXQotICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF0KJiM0MzsgICAgICAgICAgICBhbGxPZjoKJiM0MzsgICAgICAgICAgICAgIC0KJiM0MzsgICAgICAgICAgICAgICAgaWY6CiYjNDM7ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgICAgICAgICAgICAgIHR5cGU6CiYjNDM7ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWQKJiM0MzsgICAgICAgICAgICAgICAgdGhlbjoKJiM0MzsgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyBsZW4gXQomIzQzOyAgICAgICAgICAgICAgLQomIzQzOyAgICAgICAgICAgICAgICBpZjoKJiM0MzsgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgICAgICAgICAgICAgICAgdHlwZToKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeQomIzQzOyAgICAgICAgICAgICAgICB0aGVuOgomIzQzOyAgICAgICAgICAgICAgICAgIG9uZU9mOgomIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXQomIzQzOyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXQogICAgICAgICAjIEVuZCBnZW5ldGxpbmstbGVnYWN5CiAKICAgYXR0cmlidXRlLXNldHM6CmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkgYi90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkKaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weQpAQCAtMzE3LDYgJiM0MzszMTcsMTAgQEAgY2xhc3MgTmxBdHRyczoKIAogICAgICAgICB3aGlsZSBvZmZzZXQgJmx0OyBsZW4obXNnKToKICAgICAgICAgICAgIGF0dHIgPSBObEF0dHIobXNnLCBvZmZzZXQpCiYjNDM7ICAgICAgICAgICAgaWYgYXR0ci5mdWxsX2xlbiAmbHQ7IDQ6CiYjNDM7ICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbigKJiM0MzsgICAgICAgICAgICAgICAgICAgIGYmIzM5O01hbGZvcm1lZCBhdHRyaWJ1dGUgYXQgb2Zmc2V0IHtvZmZzZXR9OiAmIzM5OwomIzQzOyAgICAgICAgICAgICAgICAgICAgZiYjMzk7bGVuZ3RoIHthdHRyLnBheWxvYWRfbGVufSBpcyBzaG9ydGVyIHRoYW4gdGhlIGhlYWRlciYjMzk7KQogICAgICAgICAgICAgb2Zmc2V0ICYjNDM7PSBhdHRyLmZ1bGxfbGVuCiAgICAgICAgICAgICBzZWxmLmF0dHJzLmFwcGVuZChhdHRyKQogCmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CmluZGV4IDJiMzQ4M2RiMWI2MGMuLjY2YTZkYmUwNzEyNTMgMTAwNzU1Ci0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5CkBAIC0zMjQ3LDE1ICYjNDM7MzI0NywxNyBAQCBkZWYgcmVuZGVyX3VhcGkoZmFtaWx5LCBjdyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgZW51bS5oYXNfZG9jKCk6Ci0gICAgICAgICAgICAgICAgaWYgZW51bS5oYXNfZW50cnlfZG9jKCk6CiYjNDM7ICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZToKICAgICAgICAgICAgICAgICAgICAgY3cucCgmIzM5Oy8qKiYjMzk7KQogICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5OyYjMzk7CiAgICAgICAgICAgICAgICAgICAgIGlmICYjMzk7ZG9jJiMzOTsgaW4gZW51bToKICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICYjMzk7IC0gJiMzOTsgJiM0MzsgZW51bVsmIzM5O2RvYyYjMzk7XQogICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtLmVudW1fbmFtZSAmIzQzOyBkb2MpCiAgICAgICAgICAgICAgICAgZWxzZToKJiM0MzsgICAgICAgICAgICAgICAgICAgICMgUmVuZGVyIGEgcGxhaW4gY29tbWVudCwgbm8ga2RvYyBpZGVudGlmaWVyIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7LyomIzM5OykKLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsmIzM5O2RvYyYjMzk7XSwgaW5kZW50PUZhbHNlKQomIzQzOyAgICAgICAgICAgICAgICAgICAgaWYgJiMzOTtkb2MmIzM5OyBpbiBlbnVtOgomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW1bJiMzOTtkb2MmIzM5O10sIGluZGVudD1GYWxzZSkKICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5oYXNfZG9jKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAmIzM5O0AmIzM5OyAmIzQzOyBlbnRyeS5jX25hbWUgJiM0MzsgJiMzOTs6ICYjMzk7ICYjNDM7IGVudHJ5WyYjMzk7ZG9jJiMzOTtdCkBAIC0zNDQ5LDcgJiM0MzszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6CiAgICAgc3ViX3BhdGggPSAmIzM5OyYjMzk7CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgc3ViX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpLCBzdWJfcGF0aCkKLSAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKJiM0MzsgICAgICAgIHBhcmVudCA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCiYjNDM7ICAgICAgICBpZiBwYXJlbnQgPT0gZnVsbF9wYXRoOgomIzQzOyAgICAgICAgICAgICMgUmVhY2hlZCB0aGUgZmlsZXN5c3RlbSByb290IHdpdGhvdXQgZmluZGluZyBhIGtlcm5lbCB0cmVlLCBmYWxsCiYjNDM7ICAgICAgICAgICAgIyBiYWNrIHRvIHRoZSBwYXRoIGdpdmVuLgomIzQzOyAgICAgICAgICAgIHJldHVybiBOb25lLCBzdWJfcGF0aFs6LTFdCiYjNDM7ICAgICAgICBmdWxsX3BhdGggPSBwYXJlbnQKICAgICAgICAgbWFpbnRhaW5lcnMgPSBvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCAmIzM0O01BSU5UQUlORVJTJiMzNDspCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1haW50YWluZXJzKToKICAgICAgICAgICAgIHJldHVybiBmdWxsX3BhdGgsIHN1Yl9wYXRoWzotMV0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NAoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgRGlmZioqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBkaWZmLiBJIHNlZSBjaGFuZ2VzIGluIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbGAsIGB0b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHlgLCBhbmQgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGFwcGx5IHRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEuIExldCYjMzk7cyBzZWUuLi4gdGhlIGd1aWRlbGluZXMgaW4gU2VjdGlvbiAyIGxheSBvdXQgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEmIzM0OyAtIHdoZW4gd2UgKmRvbiYjMzk7dCogbmVlZCB0byBib3RoZXIgd2l0aCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMgdGhhdCBpbmNsdWRlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBzcGVsbGluZyBmaXhlcywgb3IgdXNlci1zcGFjZSBzY3JpcHRzIHRoYXQgZG9uJiMzOTt0IGltcGFjdCBgdm1saW51eGAgb3Iga2VybmVsIG1vZHVsZXMuCgpMb29raW5nIGF0IHRoZXNlIGZpbGVzLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBEb2N1bWVudGF0aW9uL2AgaXMgZG9jdW1lbnRhdGlvbiwgc28gdGhhdCYjMzk7cyBhIGNoZWNrLiBUaGUgYHRvb2xzL25ldC95bmwvYCBkaXJlY3RvcnkgY29udGFpbnMsIGFzIHRoZSBwYXRoIGltcGxpZXMsIHRvb2xzIGFuZCBzY3JpcHRzLiBUaGVzZSBhcmUgYWxsIHVzZXItc3BhY2UsIGFuZCB0aGV5IGRvbiYjMzk7dCBzZWVtIGxpa2UgdGhleSYjMzk7cmUgZ29pbmcgdG8gYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgYW55IG1vZHVsZXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcnVuIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHVzaW5nIGBncmVwcGVyYCBvciBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNoYW5nZWQgZmlsZXMgdGhhdCBJIGhhdmVuJiMzOTt0IHNlZW4geWV0IGluIHRoZSBjb21taXQgc3VtbWFyeS4KCkFzc3VtaW5nIHRoYXQgeWllbGRzIG5vdGhpbmcgc2lnbmlmaWNhbnQsIEkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGBFbmFibGVDb25maWdzYCB0byBlbXB0eSBhcyB3ZWxsLCBhbmQgcHJvdmlkZSBhIHJlYXNvbmluZyB0aGF0IGV4cGxhaW5zIHRoaXMgYXNzZXNzbWVudC4gVGhlIHJlYXNvbmluZyB3aWxsIGV4cGxhaW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgaW4gZG9jdW1lbnRhdGlvbiBhbmQgdXNlci1zcGFjZSBzY3JpcHRzIHdpdGhpbiB0aGUgYHRvb2xzYCBkaXJlY3RvcnksIGFuZCBuZWl0aGVyIG9mIHRoZXNlIGFmZmVjdCB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjM6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjA5LjA3MjI5MDg0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjM2NjI3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IGRvY3VtZW50YXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sKSBhbmQgdXNlcnNwYWNlIHRvb2xpbmcvc2NyaXB0cyAodG9vbHMvbmV0L3lubC9weXlubC8pLiBObyBrZXJuZWwgc291cmNlIGNvZGUgb3IgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4L21vZHVsZXMpIGlzIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjM6NTE6MDkuMDcyMjk2NjE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDY0NTQ2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2NGUxMmVhY2RhYzdlODQ5ODViMGFjNTVjNjk1YTlhNGFiODE0ZDM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMjM6NTE6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbFxcbmluZGV4IDRjNDM2YjU5YTM0YmUuLjE4Y2NmZTA1MDQ4YWUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbFxcbkBAIC0xNzYsMjAgKzE3NiwyMyBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgICAgIHN0cnVjdDpcXG4gICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBOYW1lIG9mIHRoZSBuZXN0ZWQgc3RydWN0IHR5cGUuXFxuICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmdcXG4tICAgICAgICAgICAgaWY6XFxuLSAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4tICAgICAgICAgICAgICAgIHR5cGU6XFxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWRcXG4tICAgICAgICAgICAgdGhlbjpcXG4tICAgICAgICAgICAgICByZXF1aXJlZDogWyBsZW4gXVxcbi0gICAgICAgICAgICBpZjpcXG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxcbi0gICAgICAgICAgICAgICAgdHlwZTpcXG4tICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxcbi0gICAgICAgICAgICB0aGVuOlxcbi0gICAgICAgICAgICAgIG9uZU9mOlxcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBzdHJ1Y3QgXVxcbisgICAgICAgICAgICBhbGxPZjpcXG4rICAgICAgICAgICAgICAtXFxuKyAgICAgICAgICAgICAgICBpZjpcXG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxcbisgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHBhZFxcbisgICAgICAgICAgICAgICAgdGhlbjpcXG4rICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cXG4rICAgICAgICAgICAgICAtXFxuKyAgICAgICAgICAgICAgICBpZjpcXG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxcbisgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxcbisgICAgICAgICAgICAgICAgdGhlbjpcXG4rICAgICAgICAgICAgICAgICAgb25lT2Y6XFxuKyAgICAgICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxcbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cXG4gICAgICAgICAjIEVuZCBnZW5ldGxpbmstbGVnYWN5XFxuIFxcbiAgIGF0dHJpYnV0ZS1zZXRzOlxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHkgYi90b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHlcXG5pbmRleCA4NjgyYmY1ODhlMWZhLi4zNzVhMTVkODNhMzQyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxcbkBAIC0zMTcsNiArMzE3LDEwIEBAIGNsYXNzIE5sQXR0cnM6XFxuIFxcbiAgICAgICAgIHdoaWxlIG9mZnNldCBcXHUwMDNjIGxlbihtc2cpOlxcbiAgICAgICAgICAgICBhdHRyID0gTmxBdHRyKG1zZywgb2Zmc2V0KVxcbisgICAgICAgICAgICBpZiBhdHRyLmZ1bGxfbGVuIFxcdTAwM2MgNDpcXG4rICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcXG4rICAgICAgICAgICAgICAgICAgICBmJ01hbGZvcm1lZCBhdHRyaWJ1dGUgYXQgb2Zmc2V0IHtvZmZzZXR9OiAnXFxuKyAgICAgICAgICAgICAgICAgICAgZidsZW5ndGgge2F0dHIucGF5bG9hZF9sZW59IGlzIHNob3J0ZXIgdGhhbiB0aGUgaGVhZGVyJylcXG4gICAgICAgICAgICAgb2Zmc2V0ICs9IGF0dHIuZnVsbF9sZW5cXG4gICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBlbmQoYXR0cilcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcXG5pbmRleCAyYjM0ODNkYjFiNjBjLi42NmE2ZGJlMDcxMjUzIDEwMDc1NVxcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcXG5AQCAtMzI0NywxNSArMzI0NywxNyBAQCBkZWYgcmVuZGVyX3VhcGkoZmFtaWx5LCBjdyk6XFxuICAgICAgICAgICAgICAgICBjb250aW51ZVxcbiBcXG4gICAgICAgICAgICAgaWYgZW51bS5oYXNfZG9jKCk6XFxuLSAgICAgICAgICAgICAgICBpZiBlbnVtLmhhc19lbnRyeV9kb2MoKTpcXG4rICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcXG4gICAgICAgICAgICAgICAgICAgICBjdy5wKCcvKionKVxcbiAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICcnXFxuICAgICAgICAgICAgICAgICAgICAgaWYgJ2RvYycgaW4gZW51bTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgZG9jID0gJyAtICcgKyBlbnVtWydkb2MnXVxcbiAgICAgICAgICAgICAgICAgICAgIGN3LndyaXRlX2RvY19saW5lKGVudW0uZW51bV9uYW1lICsgZG9jKVxcbiAgICAgICAgICAgICAgICAgZWxzZTpcXG4rICAgICAgICAgICAgICAgICAgICAjIFJlbmRlciBhIHBsYWluIGNvbW1lbnQsIG5vIGtkb2MgaWRlbnRpZmllciBhdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgICAgICBjdy5wKCcvKicpXFxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcXG4rICAgICAgICAgICAgICAgICAgICBpZiAnZG9jJyBpbiBlbnVtOlxcbisgICAgICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtWydkb2MnXSwgaW5kZW50PUZhbHNlKVxcbiAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudW0uZW50cmllcy52YWx1ZXMoKTpcXG4gICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5oYXNfZG9jKCk6XFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICdAJyArIGVudHJ5LmNfbmFtZSArICc6ICcgKyBlbnRyeVsnZG9jJ11cXG5AQCAtMzQ0OSw3ICszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XFxuICAgICBzdWJfcGF0aCA9ICcnXFxuICAgICB3aGlsZSBUcnVlOlxcbiAgICAgICAgIHN1Yl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSwgc3ViX3BhdGgpXFxuLSAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcXG4rICAgICAgICBwYXJlbnQgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKVxcbisgICAgICAgIGlmIHBhcmVudCA9PSBmdWxsX3BhdGg6XFxuKyAgICAgICAgICAgICMgUmVhY2hlZCB0aGUgZmlsZXN5c3RlbSByb290IHdpdGhvdXQgZmluZGluZyBhIGtlcm5lbCB0cmVlLCBmYWxsXFxuKyAgICAgICAgICAgICMgYmFjayB0byB0aGUgcGF0aCBnaXZlbi5cXG4rICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN1Yl9wYXRoWzotMV1cXG4rICAgICAgICBmdWxsX3BhdGggPSBwYXJlbnRcXG4gICAgICAgICBtYWludGFpbmVycyA9IG9zLnBhdGguam9pbihmdWxsX3BhdGgsIFxcXCJNQUlOVEFJTkVSU1xcXCIpXFxuICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFpbnRhaW5lcnMpOlxcbiAgICAgICAgICAgICByZXR1cm4gZnVsbF9wYXRoLCBzdWJfcGF0aFs6LTFdXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjA5LjcxOTcwNzQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzExNjIzNTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjRlMTJlYWNkYWM3ZTg0OTg1YjBhYzU1YzY5NWE5YTRhYjgxNGQzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjM6NTE6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5pbmRleCA0YzQzNmI1OWEzNGJlLi4xOGNjZmUwNTA0OGFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9uZXRsaW5rLXJhdy55YW1sXG5AQCAtMTc2LDIwICsxNzYsMjMgQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgICAgIHN0cnVjdDpcbiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IE5hbWUgb2YgdGhlIG5lc3RlZCBzdHJ1Y3QgdHlwZS5cbiAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nXG4tICAgICAgICAgICAgaWY6XG4tICAgICAgICAgICAgICBwcm9wZXJ0aWVzOlxuLSAgICAgICAgICAgICAgICB0eXBlOlxuLSAgICAgICAgICAgICAgICAgIGNvbnN0OiBwYWRcbi0gICAgICAgICAgICB0aGVuOlxuLSAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbi0gICAgICAgICAgICBpZjpcbi0gICAgICAgICAgICAgIHByb3BlcnRpZXM6XG4tICAgICAgICAgICAgICAgIHR5cGU6XG4tICAgICAgICAgICAgICAgICAgY29uc3Q6IGJpbmFyeVxuLSAgICAgICAgICAgIHRoZW46XG4tICAgICAgICAgICAgICBvbmVPZjpcbi0gICAgICAgICAgICAgICAgLSByZXF1aXJlZDogWyBsZW4gXVxuLSAgICAgICAgICAgICAgICAtIHJlcXVpcmVkOiBbIHN0cnVjdCBdXG4rICAgICAgICAgICAgYWxsT2Y6XG4rICAgICAgICAgICAgICAtXG4rICAgICAgICAgICAgICAgIGlmOlxuKyAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICAgICAgICAgICAgICB0eXBlOlxuKyAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcGFkXG4rICAgICAgICAgICAgICAgIHRoZW46XG4rICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgbGVuIF1cbisgICAgICAgICAgICAgIC1cbisgICAgICAgICAgICAgICAgaWY6XG4rICAgICAgICAgICAgICAgICAgcHJvcGVydGllczpcbisgICAgICAgICAgICAgICAgICAgIHR5cGU6XG4rICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBiaW5hcnlcbisgICAgICAgICAgICAgICAgdGhlbjpcbisgICAgICAgICAgICAgICAgICBvbmVPZjpcbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgbGVuIF1cbisgICAgICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQ6IFsgc3RydWN0IF1cbiAgICAgICAgICMgRW5kIGdlbmV0bGluay1sZWdhY3lcbiBcbiAgIGF0dHJpYnV0ZS1zZXRzOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuaW5kZXggODY4MmJmNTg4ZTFmYS4uMzc1YTE1ZDgzYTM0MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5XG5AQCAtMzE3LDYgKzMxNywxMCBAQCBjbGFzcyBObEF0dHJzOlxuIFxuICAgICAgICAgd2hpbGUgb2Zmc2V0IFx1MDAzYyBsZW4obXNnKTpcbiAgICAgICAgICAgICBhdHRyID0gTmxBdHRyKG1zZywgb2Zmc2V0KVxuKyAgICAgICAgICAgIGlmIGF0dHIuZnVsbF9sZW4gXHUwMDNjIDQ6XG4rICAgICAgICAgICAgICAgIHJhaXNlIFlubEV4Y2VwdGlvbihcbisgICAgICAgICAgICAgICAgICAgIGYnTWFsZm9ybWVkIGF0dHJpYnV0ZSBhdCBvZmZzZXQge29mZnNldH06ICdcbisgICAgICAgICAgICAgICAgICAgIGYnbGVuZ3RoIHthdHRyLnBheWxvYWRfbGVufSBpcyBzaG9ydGVyIHRoYW4gdGhlIGhlYWRlcicpXG4gICAgICAgICAgICAgb2Zmc2V0ICs9IGF0dHIuZnVsbF9sZW5cbiAgICAgICAgICAgICBzZWxmLmF0dHJzLmFwcGVuZChhdHRyKVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjY2YTZkYmUwNzEyNTMgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0zMjQ3LDE1ICszMjQ3LDE3IEBAIGRlZiByZW5kZXJfdWFwaShmYW1pbHksIGN3KTpcbiAgICAgICAgICAgICAgICAgY29udGludWVcbiBcbiAgICAgICAgICAgICBpZiBlbnVtLmhhc19kb2MoKTpcbi0gICAgICAgICAgICAgICAgaWYgZW51bS5oYXNfZW50cnlfZG9jKCk6XG4rICAgICAgICAgICAgICAgIGlmIGVudW0uaGFzX2VudHJ5X2RvYygpIGFuZCBlbnVtLmVudW1fbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgIGN3LnAoJy8qKicpXG4gICAgICAgICAgICAgICAgICAgICBkb2MgPSAnJ1xuICAgICAgICAgICAgICAgICAgICAgaWYgJ2RvYycgaW4gZW51bTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAnIC0gJyArIGVudW1bJ2RvYyddXG4gICAgICAgICAgICAgICAgICAgICBjdy53cml0ZV9kb2NfbGluZShlbnVtLmVudW1fbmFtZSArIGRvYylcbiAgICAgICAgICAgICAgICAgZWxzZTpcbisgICAgICAgICAgICAgICAgICAgICMgUmVuZGVyIGEgcGxhaW4gY29tbWVudCwgbm8ga2RvYyBpZGVudGlmaWVyIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgY3cucCgnLyonKVxuLSAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcbisgICAgICAgICAgICAgICAgICAgIGlmICdkb2MnIGluIGVudW06XG4rICAgICAgICAgICAgICAgICAgICAgICAgY3cud3JpdGVfZG9jX2xpbmUoZW51bVsnZG9jJ10sIGluZGVudD1GYWxzZSlcbiAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudW0uZW50cmllcy52YWx1ZXMoKTpcbiAgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5Lmhhc19kb2MoKTpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAnQCcgKyBlbnRyeS5jX25hbWUgKyAnOiAnICsgZW50cnlbJ2RvYyddXG5AQCAtMzQ0OSw3ICszNDUxLDEyIEBAIGRlZiBmaW5kX2tlcm5lbF9yb290KGZ1bGxfcGF0aCk6XG4gICAgIHN1Yl9wYXRoID0gJydcbiAgICAgd2hpbGUgVHJ1ZTpcbiAgICAgICAgIHN1Yl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSwgc3ViX3BhdGgpXG4tICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKVxuKyAgICAgICAgcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aClcbisgICAgICAgIGlmIHBhcmVudCA9PSBmdWxsX3BhdGg6XG4rICAgICAgICAgICAgIyBSZWFjaGVkIHRoZSBmaWxlc3lzdGVtIHJvb3Qgd2l0aG91dCBmaW5kaW5nIGEga2VybmVsIHRyZWUsIGZhbGxcbisgICAgICAgICAgICAjIGJhY2sgdG8gdGhlIHBhdGggZ2l2ZW4uXG4rICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN1Yl9wYXRoWzotMV1cbisgICAgICAgIGZ1bGxfcGF0aCA9IHBhcmVudFxuICAgICAgICAgbWFpbnRhaW5lcnMgPSBvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCBcIk1BSU5UQUlORVJTXCIpXG4gICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYWludGFpbmVycyk6XG4gICAgICAgICAgICAgcmV0dXJuIGZ1bGxfcGF0aCwgc3ViX3BhdGhbOi0xXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjM6NTE6MDkuNzE5NzA5OTM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzExNjIxMzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgRGlmZioqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgZGlmZi4gSSBzZWUgY2hhbmdlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWxgLCBgdG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5YCwgYW5kIGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBMZXQncyBzZWUuLi4gdGhlIGd1aWRlbGluZXMgaW4gU2VjdGlvbiAyIGxheSBvdXQgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWFcIiAtIHdoZW4gd2UgKmRvbid0KiBuZWVkIHRvIGJvdGhlciB3aXRoIGZ1enppbmcuIFNwZWNpZmljYWxseSwgbm9uLWtlcm5lbCwgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcyB0aGF0IGluY2x1ZGUgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBvciB1c2VyLXNwYWNlIHNjcmlwdHMgdGhhdCBkb24ndCBpbXBhY3QgYHZtbGludXhgIG9yIGtlcm5lbCBtb2R1bGVzLlxuXG5Mb29raW5nIGF0IHRoZXNlIGZpbGVzLCBpdCdzIHByZXR0eSBjbGVhcjogYERvY3VtZW50YXRpb24vYCBpcyBkb2N1bWVudGF0aW9uLCBzbyB0aGF0J3MgYSBjaGVjay4gVGhlIGB0b29scy9uZXQveW5sL2AgZGlyZWN0b3J5IGNvbnRhaW5zLCBhcyB0aGUgcGF0aCBpbXBsaWVzLCB0b29scyBhbmQgc2NyaXB0cy4gVGhlc2UgYXJlIGFsbCB1c2VyLXNwYWNlLCBhbmQgdGhleSBkb24ndCBzZWVtIGxpa2UgdGhleSdyZSBnb2luZyB0byBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBhbnkgbW9kdWxlcy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcnVuIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHVzaW5nIGBncmVwcGVyYCBvciBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNoYW5nZWQgZmlsZXMgdGhhdCBJIGhhdmVuJ3Qgc2VlbiB5ZXQgaW4gdGhlIGNvbW1pdCBzdW1tYXJ5LlxuXG5Bc3N1bWluZyB0aGF0IHlpZWxkcyBub3RoaW5nIHNpZ25pZmljYW50LCBJJ20gY29uZmlkZW50IGluIGNhbGxpbmcgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBlbXB0eSwgYEVuYWJsZUNvbmZpZ3NgIHRvIGVtcHR5IGFzIHdlbGwsIGFuZCBwcm92aWRlIGEgcmVhc29uaW5nIHRoYXQgZXhwbGFpbnMgdGhpcyBhc3Nlc3NtZW50LiBUaGUgcmVhc29uaW5nIHdpbGwgZXhwbGFpbiB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpbiBkb2N1bWVudGF0aW9uIGFuZCB1c2VyLXNwYWNlIHNjcmlwdHMgd2l0aGluIHRoZSBgdG9vbHNgIGRpcmVjdG9yeSwgYW5kIG5laXRoZXIgb2YgdGhlc2UgYWZmZWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NCwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIzOjUxOjE2LjgzNTkyNTY0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSBkb2N1bWVudGF0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvbmV0bGluay1yYXcueWFtbCkgYW5kIHVzZXJzcGFjZSB0b29saW5nL3NjcmlwdHMgKHRvb2xzL25ldC95bmwvcHl5bmwvKS4gTm8ga2VybmVsIHNvdXJjZSBjb2RlIG9yIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eC9tb2R1bGVzKSBpcyBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgZG9jdW1lbnRhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL25ldGxpbmstcmF3LnlhbWwpIGFuZCB1c2Vyc3BhY2UgdG9vbGluZy9zY3JpcHRzICh0b29scy9uZXQveW5sL3B5eW5sLykuIE5vIGtlcm5lbCBzb3VyY2UgY29kZSBvciBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgvbW9kdWxlcykgaXMgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMzo1MToxNi44MzU5NDUxNzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowslskq[1] Phase: Running StartedAt: 2026-09-08 23:51:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowslskq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 23:51:27 +0000 UTC FinishedAt: 2026-09-08 23:51:32 +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,}