Name: series-workflow4czwh Phase: Failed StartedAt: 2026-09-06 20:48:41 +0000 UTC FinishedAt: 2026-09-06 21:36:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4czwh[0] Phase: Succeeded StartedAt: 2026-09-06 20:48:41 +0000 UTC FinishedAt: 2026-09-06 21:36:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4czwh[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 20:48:41 +0000 UTC FinishedAt: 2026-09-06 21:36:34 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzY2YTE4NWUzMjk1MTY3NzRmYTk3NmU0ZTc1Yjc0Nzk4MzBiYjcxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MzU6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZG1hLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kbWEucnNcbkBAIC0yNSwxMCAmIzQzOzI1LDYgQEBcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4tICAgIHRyYW5zbXV0ZTo6e1xuLSAgICAgICAgQXNCeXRlcyxcbi0gICAgICAgIEZyb21CeXRlcywgLy9cbi0gICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLCAvL1xuIH07XG4gdXNlIGNvcmU6OntcbkBAIC00MTcsNyAmIzQzOzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXHUwMDNlIFNlbGYge1xuIC8vLyBgYGBcbiBwdWIgc3RydWN0IENvaGVyZW50Qm94XHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXG5AQCAtNDU0LDcgJiM0Mzs0NTAsNyBAQCBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuIFxuICAgICAgICAgLy8gU0FGRVRZOlxuICAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXG4tICAgICAgICAvLyAtIGBUOiBBc0J5dGVzICYjNDM7IEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cbiYjNDM7ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxuICAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cbiAgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxuICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuQEAgLTUyMyw3ICYjNDM7NTE5LDcgQEAgcHViIGZuIGZyb21fc2xpY2UoXG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cbiAgICAgI1tpbmxpbmVdXG4gICAgIHB1YiBmbiB6ZXJvZWRfd2l0aF9hdHRycyhcbkBAIC01NTQsNyAmIzQzOzU1MCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGRlcmVmX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgU2VsZjo6VGFyZ2V0IHtcbiAgICAgICAgIC8vIFNBRkVUWTpcbkBAIC01NjUsNyAmIzQzOzU2MSw3IEBAIGZuIGRlcmVmX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgU2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBGcm9tXHUwMDNjQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xuJiM0MztpbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIEZyb21cdTAwM2NDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICB2YWx1ZS4wXG5AQCAtNjYzLDcgJiM0Mzs2NTksNyBAQCBwdWIgdW5zYWZlIGZuIGFzX211dChcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBUIHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbiAgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBgVGAgb2YgY29oZXJlbnQgbWVtb3J5LlxuICAgICBmbiBhbGxvY193aXRoX2F0dHJzKFxuICAgICAgICAgZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLFxuQEAgLTc1Myw3ICYjNDM7NzQ5LDcgQEAgcHViIGZuIGluaXRfd2l0aF9hdHRyc1x1MDAzY0VcdTAwM2UoXG4gICAgICAgICAvLyBTQUZFVFk6XG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS5cbiAgICAgICAgIC8vIC0gSWYgYHJhd190cnlfaW5pdGAgZmFpbHMsIGBzZWxmYCBpcyBkcm9wcGVkLCB3aGljaCBzYWZlbHkgZnJlZXMgdGhlIHVuZGVybHlpbmdcbi0gICAgICAgIC8vICAgYENvaGVyZW50YCYjMzk7cyBETUEgbWVtb3J5LiBgVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG4mIzQzOyAgICAgICAgLy8gICBgQ29oZXJlbnRgJiMzOTtzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYFxuICAgICAgICAgLy8gICByZXF1aXJlbWVudHMgd2UgYXJlIGJ5cGFzc2luZy5cbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcbiBcbkBAIC05NDgsOSAmIzQzOzk0NCw5IEBAIHVuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkXHUwMDNlIFNlbmQgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuIC8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIGJ1ZmZlciBjb250ZW50cyAoYGZpZWxkX3JlYWRgLCBgZmllbGRfd3JpdGVgLCBgYXNfc2xpY2VgLFxuIC8vIGBhc19zbGljZV9tdXRgKSBhcmUgYHVuc2FmZWAsIGFuZCBjYWxsZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgbm8gZGF0YSByYWNlcyBvY2N1ci5cbiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgP1NpemVkICYjNDM7IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4gXG4taW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyBBc0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgSW50b0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuICAgICAgICAgXHUwMDI2c2VsZixcbiAgICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5pbmRleCAyMmVmM2RkZTM2ZmExLi5jM2I1MGRkNTBhNGNlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5AQCAtMTIsNyAmIzQzOzEyLDYgQEBcbiAgICAgYWxsb2M6OntzZWxmLCBBbGxvY0Vycm9yfSxcbiAgICAgZXJyb3I6OnRvX3Jlc3VsdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgdHJhbnNtdXRlOjpBc0J5dGVzLFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLFxuIH07XG5AQCAtODQsNyAmIzQzOzgzLDcgQEAgaW1wbCBHZW5sTXNnIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIHB1dFx1MDAzY1RcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0XG4gICAgIHdoZXJlXG4tICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgQXNCeXRlcyxcbiYjNDM7ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxuICAgICB7XG4gICAgICAgICBsZXQgc2tiID0gc2VsZi5za2Iuc2tiLmFzX3B0cigpO1xuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzIGIvcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc1xuaW5kZXggNWY2YzRkN2ExYTUxNi4uZDkzYzFhMjFmMzI0ZiAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbkBAIC0xMyw3ICYjNDM7MTMsNiBAQFxuICAgICBmczo6ZmlsZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4tICAgIHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc30sXG4gfTtcbiB1c2UgY29yZTo6bWVtOjp7c2l6ZV9vZiwgTWF5YmVVbmluaXR9O1xuIFxuQEAgLTUyNSw3ICYjNDM7NTI0LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlKFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4gICAgIC8vLyAgICAgd3JpdGVyLndyaXRlX2RtYShhbGxvYywgMCwgMjU2KVxuICAgICAvLy8gfVxuICAgICAvLy8gYGBgXG4tICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgQXNCeXRlcyAmIzQzOyA/U2l6ZWRcdTAwM2UoXG4mIzQzOyAgICBwdWIgZm4gd3JpdGVfZG1hXHUwMDNjVDogS25vd25TaXplICYjNDM7IEludG9CeXRlcyAmIzQzOyA/U2l6ZWRcdTAwM2UoXG4gICAgICAgICBcdTAwMjZtdXQgc2VsZixcbiAgICAgICAgIGFsbG9jOiBcdTAwMjZDb2hlcmVudFx1MDAzY1RcdTAwM2UsXG4gICAgICAgICBvZmZzZXQ6IHVzaXplLFxuQEAgLTU5OSw3ICYjNDM7NTk4LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0sIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVx1MDAzZSBSZVxuICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxuICAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cbiAgICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXG4tICAgIHB1YiBmbiB3cml0ZVx1MDAzY1Q6IEFzQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG4mIzQzOyAgICBwdWIgZm4gd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG4gICAgICAgICBsZXQgbGVuID0gc2l6ZV9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuICAgICAgICAgaWYgbGVuIFx1MDAzZSBzZWxmLmxlbmd0aCB7XG4gICAgICAgICAgICAgcmV0dXJuIEVycihFRkFVTFQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDIxOjM1OjE4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzCmluZGV4IDJjZTA5ZjhlOTBjNjkuLjliZDQ3ZjIwYzc4NDIgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RtYS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kbWEucnMKQEAgLTI1LDEwICYjNDM7MjUsNiBAQAogICAgIHByZWx1ZGU6OiosCiAgICAgcHRyOjpLbm93blNpemUsCiAgICAgc3luYzo6YXJlZjo6QVJlZiwKLSAgICB0cmFuc211dGU6OnsKLSAgICAgICAgQXNCeXRlcywKLSAgICAgICAgRnJvbUJ5dGVzLCAvLwotICAgIH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLCAvLwogfTsKIHVzZSBjb3JlOjp7CkBAIC00MTcsNyAmIzQzOzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtJmd0OyBTZWxmIHsKIC8vLyBgYGAKIHB1YiBzdHJ1Y3QgQ29oZXJlbnRCb3gmbHQ7VDogS25vd25TaXplICYjNDM7ID9TaXplZCZndDsoQ29oZXJlbnQmbHQ7VCZndDspOwogCi1pbXBsJmx0O1Q6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzJmd0OyBDb2hlcmVudEJveCZsdDtbVF0mZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1tUXSZndDsgewogICAgIC8vLyBbYENvaGVyZW50Qm94YF0gdmFyaWFudCBvZiBbYENvaGVyZW50Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLgogICAgICNbaW5saW5lXQogICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycygKQEAgLTQ1NCw3ICYjNDM7NDUwLDcgQEAgcHViIGZuIGluaXRfYXQmbHQ7RSZndDsoJmFtcDttdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdCZsdDtULCBFJmd0OykgLSZndDsgUmVzdWx0CiAKICAgICAgICAgLy8gU0FGRVRZOgogICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi4KLSAgICAgICAgLy8gLSBgVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uCiYjNDM7ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvbgogICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLgogICAgICAgICAvLyAtIFRoZSBETUEgYWRkcmVzcyBoYXMgbm90IGJlZW4gZXhwb3NlZCB5ZXQsIHNvIHRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgZGV2aWNlIGFjY2Vzcy4KICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9OwpAQCAtNTIzLDcgJiM0Mzs1MTksNyBAQCBwdWIgZm4gZnJvbV9zbGljZSgKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKICAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuCiAgICAgI1tpbmxpbmVdCiAgICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKApAQCAtNTU0LDcgJiM0Mzs1NTAsNyBAQCBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKICAgICAjW2lubGluZV0KICAgICBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKICAgICAgICAgLy8gU0FGRVRZOgpAQCAtNTY1LDcgJiM0Mzs1NjEsNyBAQCBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRnJvbSZsdDtDb2hlcmVudEJveCZsdDtUJmd0OyZndDsgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRnJvbSZsdDtDb2hlcmVudEJveCZsdDtUJmd0OyZndDsgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICAjW2lubGluZV0KICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiAgICAgICAgIHZhbHVlLjAKQEAgLTY2Myw3ICYjNDM7NjU5LDcgQEAgcHViIHVuc2FmZSBmbiBhc19tdXQoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO211dCBUIHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuCiAgICAgZm4gYWxsb2Nfd2l0aF9hdHRycygKICAgICAgICAgZGV2OiAmYW1wO2RldmljZTo6RGV2aWNlJmx0O0JvdW5kJmd0OywKQEAgLTc1Myw3ICYjNDM7NzQ5LDcgQEAgcHViIGZuIGluaXRfd2l0aF9hdHRycyZsdDtFJmd0OygKICAgICAgICAgLy8gU0FGRVRZOgogICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS4KICAgICAgICAgLy8gLSBJZiBgcmF3X3RyeV9pbml0YCBmYWlscywgYHNlbGZgIGlzIGRyb3BwZWQsIHdoaWNoIHNhZmVseSBmcmVlcyB0aGUgdW5kZXJseWluZwotICAgICAgICAvLyAgIGBDb2hlcmVudGAmIzM5O3MgRE1BIG1lbW9yeS4gYFQ6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYAomIzQzOyAgICAgICAgLy8gICBgQ29oZXJlbnRgJiMzOTtzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYAogICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLgogICAgICAgICB1bnNhZmUgeyBwaW5faW5pdDo6cmF3X3RyeV9pbml0KHB0ciwgaW5pdCk/IH07CiAKQEAgLTk0OCw5ICYjNDM7OTQ0LDkgQEAgdW5zYWZlIGltcGwmbHQ7VDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkJmd0OyBTZW5kIGZvciBDb2hlcmVudCZsdDtUJmd0OyB7fQogLy8gbWV0aG9kcyB0aGF0IGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnRzIChgZmllbGRfcmVhZGAsIGBmaWVsZF93cml0ZWAsIGBhc19zbGljZWAsCiAvLyBgYXNfc2xpY2VfbXV0YCkgYXJlIGB1bnNhZmVgLCBhbmQgY2FsbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG5vIGRhdGEgcmFjZXMgb2NjdXIuCiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBLbm93blNpemUgJiM0MzsgP1NpemVkICYjNDM7IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogS25vd25TaXplICYjNDM7ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHt9CiAKLWltcGwmbHQ7VDogS25vd25TaXplICYjNDM7IEFzQnl0ZXMgJiM0MzsgP1NpemVkJmd0OyBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEtub3duU2l6ZSAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgP1NpemVkJmd0OyBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICBmbiB3cml0ZV90b19zbGljZSgKICAgICAgICAgJmFtcDtzZWxmLAogICAgICAgICB3cml0ZXI6ICZhbXA7bXV0IFVzZXJTbGljZVdyaXRlciwKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzIGIvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKaW5kZXggMjJlZjNkZGUzNmZhMS4uYzNiNTBkZDUwYTRjZSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKQEAgLTEyLDcgJiM0MzsxMiw2IEBACiAgICAgYWxsb2M6OntzZWxmLCBBbGxvY0Vycm9yfSwKICAgICBlcnJvcjo6dG9fcmVzdWx0LAogICAgIHByZWx1ZGU6OiosCi0gICAgdHJhbnNtdXRlOjpBc0J5dGVzLAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwKIH07CkBAIC04NCw3ICYjNDM7ODMsNyBAQCBpbXBsIEdlbmxNc2cgewogICAgICNbaW5saW5lXQogICAgIGZuIHB1dCZsdDtUJmd0OygmYW1wO211dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiAmYW1wO1QpIC0mZ3Q7IFJlc3VsdAogICAgIHdoZXJlCi0gICAgICAgIFQ6ID9TaXplZCAmIzQzOyBBc0J5dGVzLAomIzQzOyAgICAgICAgVDogP1NpemVkICYjNDM7IEludG9CeXRlcywKICAgICB7CiAgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7CiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzIGIvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycwppbmRleCA1ZjZjNGQ3YTFhNTE2Li5kOTNjMWEyMWYzMjRmIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnMKQEAgLTEzLDcgJiM0MzsxMyw2IEBACiAgICAgZnM6OmZpbGUsCiAgICAgcHJlbHVkZTo6KiwKICAgICBwdHI6Oktub3duU2l6ZSwKLSAgICB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9LAogfTsKIHVzZSBjb3JlOjptZW06OntzaXplX29mLCBNYXliZVVuaW5pdH07CiAKQEAgLTUyNSw3ICYjNDM7NTI0LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlKCZhbXA7bXV0IHNlbGYsIGRhdGE6ICZhbXA7W3U4XSkgLSZndDsgUmVzdWx0IHsKICAgICAvLy8gICAgIHdyaXRlci53cml0ZV9kbWEoYWxsb2MsIDAsIDI1NikKICAgICAvLy8gfQogICAgIC8vLyBgYGAKLSAgICBwdWIgZm4gd3JpdGVfZG1hJmx0O1Q6IEtub3duU2l6ZSAmIzQzOyBBc0J5dGVzICYjNDM7ID9TaXplZCZndDsoCiYjNDM7ICAgIHB1YiBmbiB3cml0ZV9kbWEmbHQ7VDogS25vd25TaXplICYjNDM7IEludG9CeXRlcyAmIzQzOyA/U2l6ZWQmZ3Q7KAogICAgICAgICAmYW1wO211dCBzZWxmLAogICAgICAgICBhbGxvYzogJmFtcDtDb2hlcmVudCZsdDtUJmd0OywKICAgICAgICAgb2Zmc2V0OiB1c2l6ZSwKQEAgLTU5OSw3ICYjNDM7NTk4LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoJmFtcDttdXQgc2VsZiwgZGF0YTogJmFtcDtbdThdLCBvZmZzZXQ6ICZhbXA7bXV0IGZpbGU6Ok9mZnNldCkgLSZndDsgUmUKICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZgogICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlbgogICAgIC8vLyBpZiBpdCByZXR1cm5zIGFuIGVycm9yLgotICAgIHB1YiBmbiB3cml0ZSZsdDtUOiBBc0J5dGVzJmd0OygmYW1wO211dCBzZWxmLCB2YWx1ZTogJmFtcDtUKSAtJmd0OyBSZXN1bHQgewomIzQzOyAgICBwdWIgZm4gd3JpdGUmbHQ7VDogSW50b0J5dGVzJmd0OygmYW1wO211dCBzZWxmLCB2YWx1ZTogJmFtcDtUKSAtJmd0OyBSZXN1bHQgewogICAgICAgICBsZXQgbGVuID0gc2l6ZV9vZjo6Jmx0O1QmZ3Q7KCk7CiAgICAgICAgIGlmIGxlbiAmZ3Q7IHNlbGYubGVuZ3RoIHsKICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwNQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2luZy4KCioqQW5hbHl6aW5nIHRoZSBSdXN0IEtlcm5lbCBQYXRjaCoqCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gVGhlIGtleSB0aGluZyBJJiMzOTttIHBpY2tpbmcgdXAgaXMgdGhlIHNoaWZ0IGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGluIHR5cGUgY29uc3RyYWludHMgYW5kIHRyYWl0cy4gUmlnaHQgYXdheSwgdGhpcyBzY3JlYW1zICp6ZXJvY29weSogb3IgdHJhbnNtdXRlLXJlbGF0ZWQgY2hhbmdlcyB0byBtZSDigJMgcG90ZW50aWFsbHkgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gaGFuZGxlIGJ5dGUgcmVwcmVzZW50YXRpb25zLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgZmFtaWxpYXIgd2l0aCBgSW50b0J5dGVzYC4gSSB3aWxsIHByb2JhYmx5IGdvIGFuZCBleGFtaW5lIGBydXN0L2tlcm5lbC9wcmVsdWRlLnJzYCBhbmQgYHJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc2AsIHRvIGRldGVybWluZSB3aGF0IGRlZmluaXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJlIGludHJvZHVjZWQgYW5kIGNoYW5nZWQuIEkgY2FuIGFsc28gZmlyZSB1cCBgZ3JlcHBlcmAgb3IgY2hlY2sgdGhlIGdpdCBsb2cgYW5kIG90aGVyIFJ1c3QgZmlsZXMgdG8gc2VlIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIG5lZWQgdG8gYmUgc3VyZSBvbiB0aGlzIHBvaW50LCBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBUaGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtsbCBkaXZlIGluLCBiZWNhdXNlIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0eXBlIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ludG9CeXRlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg3NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycz03NT0gICAgcHViKGNyYXRlKSBmbiBkZXYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjYmIzM5O2dwdSBkZXZpY2U6OkRldmljZVx1MDAzY2RldmljZTo6Qm91bmRcdTAwM2Uge1xuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtODUtI1tyZXByKEMpXVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5yczo4NjojW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTg3LXN0cnVjdCBQdGVBcnJheVx1MDAzY2NvbnN0IE5VTV9FTlRSSUVTOiB1c2l6ZVx1MDAzZShbdTY0OyBOVU1fRU5UUklFU10pO1xuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTcwPSAgICBmbiB3cml0ZV90b19zbGljZShcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy03Ni1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjc3Oi8vIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFueSBgVDogSW1tdXRhYmxlICYjNDM7IEludG9CeXRlc2AuXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3ODppbXBsXHUwMDNjVDogSW1tdXRhYmxlICYjNDM7IEludG9CeXRlc1x1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFQge1xucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzktICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTE0Nj1pbXBsXHUwMDNjVCwgQVx1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFZlY1x1MDAzY1QsIEFcdTAwM2VcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE0Ny13aGVyZVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTQ4OiAgICBUOiBJbW11dGFibGUgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ5LSAgICBBOiBBbGxvY2F0b3IsXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjE3PSAgICBmbiByZWFkX2Zyb21fc2xpY2VfbXV0KFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTIyMy1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjIyNDovLyBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBhbnkgYFQ6IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXNgLlxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjI1OmltcGxcdTAwM2NUOiBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVCB7XG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yMjYtICAgIGZuIHJlYWRfZnJvbV9zbGljZV9tdXQoXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjQ3PWltcGxcdTAwM2NULCBBXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVmVjXHUwMDNjVCwgQVx1MDAzZVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjQ4LXdoZXJlXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyNDk6ICAgIFQ6IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXMsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNTAtICAgIEE6IEFsbG9jYXRvcixcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9MzU2PSAgICBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVx1MDAzZSBTZWxmIHtcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE1LVxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNjppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNDE3LSAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00NTItICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cbnJ1c3Qva2VybmVsL2RtYS5yczo0NTM6ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1NC0gICAgICAgIC8vICAgZXJyb3IgY2Fubm90IGxlYXZlIHRoZSBlbGVtZW50IGluIGFuIGludmFsaWQgc3RhdGUuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzPTUxMD0gICAgcHViIGZuIGZyb21fc2xpY2UoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTUyMS1cbnJ1c3Qva2VybmVsL2RtYS5yczo1MjI6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjMtICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NTQ0PSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTU1Mi1cbnJ1c3Qva2VybmVsL2RtYS5yczo1NTM6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTQtICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvZG1hLnJzPTU1NT0gICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01NjMtXG5ydXN0L2tlcm5lbC9kbWEucnM6NTY0OmltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IEtub3duU2l6ZSAmIzQzOyA/U2l6ZWRcdTAwM2UgRnJvbVx1MDAzY0NvaGVyZW50Qm94XHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01NjUtICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz02NTY9ICAgIHB1YiB1bnNhZmUgZm4gYXNfbXV0KFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFQge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy02NjEtXG5ydXN0L2tlcm5lbC9kbWEucnM6NjYyOmltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNjYzLSAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzPTczNz0gICAgcHViIGZuIGluaXRfd2l0aF9hdHRyc1x1MDAzY0VcdTAwM2UoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTc1MS0gICAgICAgIC8vIC0gSWYgYHJhd190cnlfaW5pdGAgZmFpbHMsIGBzZWxmYCBpcyBkcm9wcGVkLCB3aGljaCBzYWZlbHkgZnJlZXMgdGhlIHVuZGVybHlpbmdcbnJ1c3Qva2VybmVsL2RtYS5yczo3NTI6ICAgICAgICAvLyAgIGBDb2hlcmVudGAmIzM5O3MgRE1BIG1lbW9yeS4gYFQ6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG5ydXN0L2tlcm5lbC9kbWEucnMtNzUzLSAgICAgICAgLy8gICByZXF1aXJlbWVudHMgd2UgYXJlIGJ5cGFzc2luZy5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9OTQxPXVuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkXHUwMDNlIFNlbmQgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy05NDYtLy8gVGhlIHNhZmUgbWV0aG9kcyBvbmx5IHJldHVybiBtZXRhZGF0YSBvciByYXcgcG9pbnRlcnMgd2hvc2UgdXNlIHJlcXVpcmVzIGB1bnNhZmVgLlxucnVzdC9rZXJuZWwvZG1hLnJzOjk0Nzp1bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBTeW5jXHUwMDNlIFN5bmMgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxucnVzdC9rZXJuZWwvZG1hLnJzLTk0OC1cbnJ1c3Qva2VybmVsL2RtYS5yczo5NDk6aW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgP1NpemVkXHUwMDNlIGRlYnVnZnM6OkJpbmFyeVdyaXRlciBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy05NTAtICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz0xMjE1PSAgICBmbiBjb3B5X3JlYWRcdTAwM2NUOiB6ZXJvY29weTo6RnJvbUJ5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UpIC1cdTAwM2UgVCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTEyMTktICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvZG1hLnJzOjEyMjA6ICAgIGZuIGNvcHlfd3JpdGVcdTAwM2NUOiB6ZXJvY29weTo6SW50b0J5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UsIHZhbHVlOiBUKSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtMTIyMS0gICAgICAgIFN5c01lbUJhY2tlbmQ6OmNvcHlfd3JpdGUodmlldy5jcHVfYWRkciwgdmFsdWUpXG4tLVxucnVzdC9rZXJuZWwvaW8ucnM9OTI9ICAgIGZuIHNpemUocDogKmNvbnN0IFNlbGYpIC1cdTAwM2UgdXNpemUge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTEwMS0vL1xucnVzdC9rZXJuZWwvaW8ucnM6MTAyOi8vIFRoaXMgY2Fubm90IGJlIGRlcml2ZWQgYXMgYGRlcml2ZShJbnRvQnl0ZXMpYCBhcyB0aGUgcGFkZGluZyBmcmVlIHByb3BlcnR5IGNvbWVzIGZyb20gdHlwZVxucnVzdC9rZXJuZWwvaW8ucnMtMTAzLS8vIGludmFyaWFudCB3aGljaCB0aGUgbWFjcm8gZG9lcyBub3Qga25vdy5cbnJ1c3Qva2VybmVsL2lvLnJzOjEwNDp1bnNhZmUgaW1wbFx1MDAzY2NvbnN0IFNJWkU6IHVzaXplXHUwMDNlIEludG9CeXRlcyBmb3IgUmVnaW9uXHUwMDNjU0laRVx1MDAzZSB7XG5ydXN0L2tlcm5lbC9pby5ycy0xMDUtICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTMwMD0gICAgZm4gY29weV9yZWFkXHUwMDNjVDogRnJvbUJ5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UpIC1cdTAwM2UgVCB7XG4tLVxucnVzdC9rZXJuZWwvaW8ucnMtMzIzLSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2lvLnJzOjMyNDogICAgZm4gY29weV93cml0ZVx1MDAzY1Q6IEludG9CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlLCB2YWx1ZTogVCkge1xucnVzdC9rZXJuZWwvaW8ucnMtMzI1LSAgICAgICAgLy8gUHJvamVjdCBgc2VsZmAgdG8gYFt1OF1gLlxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTQzMz0gICAgZm4gaXNfZW1wdHlcdTAwM2NUXHUwMDNlKHNlbGYpIC1cdTAwM2UgYm9vbFxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTQ1NC0gICAgLy8vIH07XG5ydXN0L2tlcm5lbC9pby5yczo0NTU6ICAgIC8vLyAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXG5ydXN0L2tlcm5lbC9pby5ycy00NTYtICAgIC8vLyAjW3JlcHIoQyldXG4tLVxucnVzdC9rZXJuZWwvaW8ucnM9NDY1PSAgICBmbiB0cnlfY2FzdFx1MDAzY1VcdTAwM2Uoc2VsZikgLVx1MDAzZSBSZXN1bHRcdTAwM2NcdTAwM2NTZWxmOjpCYWNrZW5kIGFzIElvQmFja2VuZFx1MDAzZTo6Vmlld1x1MDAzYyYjMzk7YSwgVVx1MDAzZVx1MDAzZVxucnVzdC9rZXJuZWwvaW8ucnMtNDY2LSAgICB3aGVyZVxucnVzdC9rZXJuZWwvaW8ucnM6NDY3OiAgICAgICAgU2VsZjo6VGFyZ2V0OiBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvaW8ucnM6NDY4OiAgICAgICAgVTogRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ2OS0gICAge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTU3NT0gICAgZm4gY29weV93cml0ZShzZWxmLCB2YWx1ZTogU2VsZjo6VGFyZ2V0KVxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTU3Ny0gICAgICAgIFNlbGY6OkJhY2tlbmQ6IElvQ29weWFibGUsXG5ydXN0L2tlcm5lbC9pby5yczo1Nzg6ICAgICAgICBTZWxmOjpUYXJnZXQ6IFNpemVkICYjNDM7IEludG9CeXRlcyxcbnJ1c3Qva2VybmVsL2lvLnJzLTU3OS0gICAge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTE0MDU9ICAgIGZuIGNvcHlfcmVhZFx1MDAzY1Q6IEZyb21CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlKSAtXHUwMDNlIFQge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTE0MTUtICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvaW8ucnM6MTQxNjogICAgZm4gY29weV93cml0ZVx1MDAzY1Q6IEludG9CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlLCB2YWx1ZTogVCkge1xucnVzdC9rZXJuZWwvaW8ucnMtMTQxNy0gICAgICAgIC8vIFNBRkVUWTpcbi0tXG5ydXN0L2tlcm5lbC9pby5ycz0xNTk5PSAgICBmbiBjb3B5X3JlYWRcdTAwM2NUOiBGcm9tQnl0ZXNcdTAwM2UodmlldzogU2VsZjo6Vmlld1x1MDAzYyYjMzk7XywgVFx1MDAzZSkgLVx1MDAzZSBUIHtcbi0tXG5ydXN0L2tlcm5lbC9pby5ycy0xNjA2LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2lvLnJzOjE2MDc6ICAgIGZuIGNvcHlfd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UodmlldzogU2VsZjo6Vmlld1x1MDAzYyYjMzk7XywgVFx1MDAzZSwgdmFsdWU6IFQpIHtcbnJ1c3Qva2VybmVsL2lvLnJzLTE2MDgtICAgICAgICBtYXRjaCB2aWV3IHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycz04ND0gICAgZm4gcHV0XHUwMDNjVFx1MDAzZShcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHRcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTg1LSAgICB3aGVyZVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6ODY6ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODctICAgIHtcbi0tXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY1LSAgICBGcm9tQnl0ZXMsXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzOjY2OiAgICBJbnRvQnl0ZXMsIC8vXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY3LX07XG4tLVxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03MS0gICAgRnJvbUJ5dGVzLFxucnVzdC9rZXJuZWwvcHJlbHVkZS5yczo3MjogICAgSW50b0J5dGVzLCAvL1xucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03My19O1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NDg5PSAgICBwdWIgZm4gd3JpdGVfc2xpY2UoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUyNi0gICAgLy8vIGBgYFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1Mjc6ICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgSW50b0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZShcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTI4LSAgICAgICAgXHUwMDI2bXV0IHNlbGYsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz01Nzk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZV9maWxlKFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcdTAwMjZbdThdLCBvZmZzZXQ6IFx1MDAyNm11dCBmaWxlOjpPZmZzZXQpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdXNpemVcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNjAwLSAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NjAxOiAgICBwdWIgZm4gd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMi0gICAgICAgIGxldCBsZW4gPSBzaXplX29mOjpcdTAwM2NUXHUwMDNlKCk7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MjE9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfc3RydWN0KGN0eDogXHUwMDI2Q3R4LCBzdHJjdDogXHUwMDI2RGF0YVN0cnVjdCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NUb2tlblN0cmVhbSwgRXJyb3JcdTAwM2Uge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTMyLSAgICAgICAgLy8gICBzYW1lIGFzIGl0cyBvbmx5IG5vbi1aU1QgZmllbGQgKG1lYW5pbmcgdGhlcmUmIzM5O3Mgbm8gcGFkZGluZyBvdXRzaWRlXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5yczozMzogICAgICAgIC8vICAgb2YgdGhhdCBmaWVsZCkgYW5kIHdlIHJlcXVpcmUgdGhhdCBmaWVsZCB0byBiZSBgSW50b0J5dGVzYCAobWVhbmluZ1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzQtICAgICAgICAvLyAgIHRoZXJlJiMzOTtzIG5vIHBhZGRpbmcgaW4gdGhhdCBmaWVsZCkuXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzYtICAgICAgICAvLyAgIHRoYXQgYW55IHBhZGRpbmcgYnl0ZXMgd291bGQgbmVlZCB0byBjb21lIGZyb20gdGhlIGZpZWxkcywgYWxsIG9mXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5yczozNzogICAgICAgIC8vICAgd2hpY2ggd2UgcmVxdWlyZSB0byBiZSBgSW50b0J5dGVzYCAobWVhbmluZyB0aGV5IGRvbiYjMzk7dCBoYXZlIGFueVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzgtICAgICAgICAvLyAgIHBhZGRpbmcpLiBOb3RlIHRoYXQgdGhpcyBob2xkcyByZWdhcmRsZXNzIG9mIG90aGVyIGByZXByYFxuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk1LVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6OTY6ICAgIE9rKEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHN0cmN0LCBUcmFpdDo6SW50b0J5dGVzLCBmaWVsZF9ib3VuZHMpXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy05Ny0gICAgICAgIC5wYWRkaW5nX2NoZWNrKHBhZGRpbmdfY2hlY2spXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MTAxPWZuIGRlcml2ZV9pbnRvX2J5dGVzX2VudW0oY3R4OiBcdTAwMjZDdHgsIGVubTogXHUwMDI2RGF0YUVudW0pIC1cdTAwM2UgUmVzdWx0XHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXHUwMDNlIHtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0xMTAtICAgIGxldCB0YWdfdHlwZV9kZWZpbml0aW9uID0gZ2VuZXJhdGVfdGFnX2VudW0oY3R4LCBcdTAwMjZyZXByLCBlbm0pO1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTExOiAgICBPayhJbXBsQmxvY2tCdWlsZGVyOjpuZXcoY3R4LCBlbm0sIFRyYWl0OjpJbnRvQnl0ZXMsIEZpZWxkQm91bmRzOjpBTExfU0VMRilcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTExMi0gICAgICAgIC5wYWRkaW5nX2NoZWNrKFBhZGRpbmdDaGVjazo6RW51bSB7IHRhZ190eXBlX2RlZmluaXRpb24gfSlcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycz0xMTY9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfdW5pb24oY3R4OiBcdTAwMjZDdHgsIHVubjogXHUwMDI2RGF0YVVuaW9uKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1Rva2VuU3RyZWFtLCBFcnJvclx1MDAzZSB7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTU5LVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTYwOiAgICBsZXQgaW1wbF9ibG9jayA9IEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHVubiwgVHJhaXQ6OkludG9CeXRlcywgRmllbGRCb3VuZHM6OkFMTF9TRUxGKVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTYxLSAgICAgICAgLnBhZGRpbmdfY2hlY2soUGFkZGluZ0NoZWNrOjpVbmlvbilcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTQ0PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6aGFzaDo6SGFzaCBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTQ1LSAgICAgICAgd2hlcmVcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NDY6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgJiM0MzsgI3plcm9jb3B5X2NyYXRlOjpJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTQ3LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycz00OT0gICAgICAgICAgICBmbiBoYXNoXHUwMDNjSDogI2NvcmU6Omhhc2g6Okhhc2hlclx1MDAzZShcdTAwMjZzZWxmLCBzdGF0ZTogXHUwMDI2bXV0IEgpIHtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTA6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZikpXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTUxLSAgICAgICAgICAgIH1cbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTUzPSAgICAgICAgICAgIGZuIGhhc2hfc2xpY2VcdTAwM2NIOiAjY29yZTo6aGFzaDo6SGFzaGVyXHUwMDNlKGRhdGE6IFx1MDAyNltTZWxmXSwgc3RhdGU6IFx1MDAyNm11dCBIKSB7XG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjU0OiAgICAgICAgICAgICAgICAjY29yZTo6aGFzaDo6SGFzaGVyOjp3cml0ZShzdGF0ZSwgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKGRhdGEpKVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01NS0gICAgICAgICAgICB9XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycz03Mj0gICAgICAgIGltcGwgI2ltcGxfZ2VuZXJpY3MgI2NvcmU6OmNtcDo6UGFydGlhbEVxIGZvciAjdHlwZV9pZGVudCAjdHlfZ2VuZXJpY3NcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzMtICAgICAgICB3aGVyZVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo3NDogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyAmIzQzOyAjemVyb2NvcHlfY3JhdGU6OkltbXV0YWJsZSxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzUtICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTc3PSAgICAgICAgICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy03OC0gICAgICAgICAgICAgICAgI2NvcmU6OmNtcDo6UGFydGlhbEVxOjplcShcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6Nzk6ICAgICAgICAgICAgICAgICAgICAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZiksXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjgwOiAgICAgICAgICAgICAgICAgICAgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKG90aGVyKSxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtODEtICAgICAgICAgICAgICAgIClcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTg1PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpFcSBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTg2LSAgICAgICAgd2hlcmVcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6ODc6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgJiM0MzsgI3plcm9jb3B5X2NyYXRlOjpJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTg4LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTQyPW1hY3JvX3J1bGVzISBpZGVudCB7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTY4LS8vIEluc3RlYWQsIHdlIGhhdmUgbW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIGxpa2UgXCYjMzQ7dW5zdXBwb3J0ZWQgcmVwcmVzZW50YXRpb25cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczo2OTovLyBmb3IgZGVyaXZpbmcgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgb3IgVW5hbGlnbmVkIG9uIGFuIGVudW1cJiMzNDtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy03MC0vL1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xMTM9ICAgIGZuIGludG9fdHMoc2VsZikgLVx1MDAzZSBwcm9jX21hY3JvMjo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjUtZGVyaXZlIShGcm9tQnl0ZXMgPVx1MDAzZSBkZXJpdmVfZnJvbV9ieXRlcyA9XHUwMDNlIGNyYXRlOjpkZXJpdmU6OmZyb21fYnl0ZXM6OmRlcml2ZV9mcm9tX2J5dGVzKTtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxMjY6ZGVyaXZlIShJbnRvQnl0ZXMgPVx1MDAzZSBkZXJpdmVfaW50b19ieXRlcyA9XHUwMDNlIGNyYXRlOjpkZXJpdmU6OmludG9fYnl0ZXM6OmRlcml2ZV9pbnRvX2J5dGVzKTtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjctZGVyaXZlIShVbmFsaWduZWQgPVx1MDAzZSBkZXJpdmVfdW5hbGlnbmVkID1cdTAwM2UgY3JhdGU6OmRlcml2ZTo6dW5hbGlnbmVkOjpkZXJpdmVfdW5hbGlnbmVkKTtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM9MTM0PXB1YiBmbiBtb3N0X3RyYWl0cyh0czogcHJvY19tYWNybzo6VG9rZW5TdHJlYW0pIC1cdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xNDYtICAgICAgICAoY3JhdGU6OmRlcml2ZTo6ZnJvbV9ieXRlczo6ZGVyaXZlX2Zyb21fYnl0ZXMsIFRyYWl0OjpGcm9tQnl0ZXMpLFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjE0NzogICAgICAgIChjcmF0ZTo6ZGVyaXZlOjppbnRvX2J5dGVzOjpkZXJpdmVfaW50b19ieXRlcywgVHJhaXQ6OkludG9CeXRlcyksXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ4LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmRlcml2ZV9zcGxpdF9hdCwgVHJhaXQ6OlNwbGl0QXQpLFxuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xNzA9cHViIGZuIGRlcml2ZV9mcm9tX3plcm9lcyh0czogcHJvY19tYWNybzo6VG9rZW5TdHJlYW0pIC1cdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xNzMtXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTc0Oi8vLyBEZXByZWNhdGVkOiBwcmVmZXIgW2BJbnRvQnl0ZXNgXSBpbnN0ZWFkLlxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjE3NTojW2RlcHJlY2F0ZWQoc2luY2UgPSBcJiMzNDswLjguMFwmIzM0Oywgbm90ZSA9IFwmIzM0O2BBc0J5dGVzYCB3YXMgcmVuYW1lZCB0byBgSW50b0J5dGVzYFwmIzM0OyldXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTc2LSNbZG9jKGhpZGRlbildXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycz0zMDI9cHViKGNyYXRlKSBlbnVtIFRyYWl0IHtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTMxOS0gICAgRnJvbUJ5dGVzLFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozMjA6ICAgIEludG9CeXRlcyxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzIxLSAgICBVbmFsaWduZWQsXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycz0zMjk9ICAgIGZuIHRvX3Rva2VucyhcdTAwMjZzZWxmLCB0b2tlbnM6IFx1MDAyNm11dCBUb2tlblN0cmVhbSkge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzQ3LSAgICAgICAgICAgIFRyYWl0OjpGcm9tQnl0ZXMgPVx1MDAzZSBcJiMzNDtGcm9tQnl0ZXNcJiMzNDssXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzOjM0ODogICAgICAgICAgICBUcmFpdDo6SW50b0J5dGVzID1cdTAwM2UgXCYjMzQ7SW50b0J5dGVzXCYjMzQ7LFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNDktICAgICAgICAgICAgVHJhaXQ6OlVuYWxpZ25lZCA9XHUwMDNlIFwmIzM0O1VuYWxpZ25lZFwmIzM0Oyxcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTM2OC0gICAgICAgICAgICB8IFRyYWl0OjpGcm9tQnl0ZXNcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnM6MzY5OiAgICAgICAgICAgIHwgVHJhaXQ6OkludG9CeXRlc1xucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNzAtICAgICAgICAgICAgfCBUcmFpdDo6VW5hbGlnbmVkXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtNS0jW3JlcHIodTE2KV1cbi0tXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycy0xMS0gICAgKCRuYW1lOiBpZGVudCwgJHRyYWl0OiBpZGVudCwgJGxlYWRpbmdfZmllbGQ6IHR5KSA9XHUwMDNlIHtcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjEyOiAgICAgICAgI1tkZXJpdmUoJHRyYWl0LCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFNwbGl0QXQpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMTMtICAgICAgICAjW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM6NDojW2Rlcml2ZShUcnlGcm9tQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIEludG9CeXRlcyldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzLTUtI1tyZXByKHUxNildXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzLTExLSAgICAoJG5hbWU6IGlkZW50LCAkdHJhaXQ6IGlkZW50LCAkbGVhZGluZ19maWVsZDogdHkpID1cdTAwM2Uge1xucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5yczoxMjogICAgICAgICNbZGVyaXZlKCR0cmFpdCwgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgSW50b0J5dGVzKV1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMTMtICAgICAgICAjW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGUucnMtNi1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGUucnM6NzojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5ycy04LSNbcmVwcihDKV1cbi0tXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9zdGF0aWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9zdGF0aWNfc2l6ZS5ycy03LSNbcmVwcihDLCBhbGlnbigyKSldXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGUucnMtNi1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzOjc6I1tkZXJpdmUoSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlKV1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTgtI1tyZXByKEMpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy03LSNbcmVwcihDLCBhbGlnbigyKSldXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJ5X3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNDItLy8hXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NDM6Ly8hICNbZGVyaXZlKEZyb21CeXRlcywgSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBVbmFsaWduZWQpXVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQ0LS8vISAjW3JlcHIoQyldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUxLS8vIVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjUyOi8vISAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01My0vLyEgI1tyZXByKEMsIHBhY2tlZCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTQ3OD1tYWNyb19ydWxlcyEgZGVmaW5lX3R5cGUge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01MTMtXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTE0OmBcJiMzNDssIHN0cmluZ2lmeSEoJG5hbWUpLCBcJiMzNDtgIGltcGxlbWVudHMgW2BGcm9tQnl0ZXNgXSwgW2BJbnRvQnl0ZXNgXSwgYW5kIFtgVW5hbGlnbmVkYF0sXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTE1LW1ha2luZyBpdCB1c2VmdWwgZm9yIHBhcnNpbmcgYW5kIHNlcmlhbGl6YXRpb24uIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIGFuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUyMS1bYEZyb21CeXRlc2BdOiBjcmF0ZTo6RnJvbUJ5dGVzXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTIyOltgSW50b0J5dGVzYF06IGNyYXRlOjpJbnRvQnl0ZXNcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01MjMtW2BVbmFsaWduZWRgXTogY3JhdGU6OlVuYWxpZ25lZFwmIzM0OyksXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI0LSAgICAgICAgICAgICNbZGVyaXZlKENvcHksIENsb25lLCBFcSwgUGFydGlhbEVxLCBIYXNoKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1MjU6ICAgICAgICAgICAgI1tjZmdfYXR0cihhbnkoZmVhdHVyZSA9IFwmIzM0O2Rlcml2ZVwmIzM0OywgdGVzdCksIGRlcml2ZShLbm93bkxheW91dCwgSW1tdXRhYmxlLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKSldXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI2LSAgICAgICAgICAgICNbcmVwcih0cmFuc3BhcmVudCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzNi0gICAgICAgIC8vIGFyZSBgSW1tdXRhYmxlYCwgYFRyeUZyb21CeXRlc2AsIGBGcm9tWmVyb3NgLCBgRnJvbUJ5dGVzYCxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1Mzc6ICAgICAgICAvLyBgSW50b0J5dGVzYCwgYW5kIGBVbmFsaWduZWRgLlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzOC0gICAgICAgICNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTU0My0gICAgICAgICAgICBpbXBsX29yX3ZlcmlmeSEoTyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgJG5hbWVcdTAwM2NPXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1NDQ6ICAgICAgICAgICAgaW1wbF9vcl92ZXJpZnkhKE8gPVx1MDAzZSBJbnRvQnl0ZXMgZm9yICRuYW1lXHUwMDNjT1x1MDAzZSk7XG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTQ1LSAgICAgICAgICAgIGltcGxfb3JfdmVyaWZ5IShPID1cdTAwM2UgVW5hbGlnbmVkIGZvciAkbmFtZVx1MDAzY09cdTAwM2UpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycz0xMDQ5PSAgICAgICAgaW1wbFx1MDAzY1QsIFVcdTAwM2UgRGlzdHJpYnV0aW9uXHUwMDNjVFx1MDAzZSBmb3IgVSB7fVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMDU2LSAgICAvLyBBIG5hdGl2ZSBpbnRlZ2VyIHR5cGUgKHUxNiwgaTMyLCBldGMpLlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjEwNTc6ICAgIHRyYWl0IE5hdGl2ZTogQXJiaXRyYXJ5ICYjNDM7IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgSW1tdXRhYmxlICYjNDM7IENvcHkgJiM0MzsgUGFydGlhbEVxICYjNDM7IERlYnVnIHtcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMDU4LSAgICAgICAgY29uc3QgWkVSTzogU2VsZjtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwMT0gICAgdHJhaXQgQnl0ZUFycmF5OlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjExMDI6ICAgICAgICBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzICYjNDM7IEltbXV0YWJsZSAmIzQzOyBDb3B5ICYjNDM7IEFzUmVmXHUwMDNjW3U4XVx1MDAzZSAmIzQzOyBBc011dFx1MDAzY1t1OF1cdTAwM2UgJiM0MzsgRGVidWcgJiM0MzsgRGVmYXVsdCAmIzQzOyBFcVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTExMDMtICAgIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwOD0gICAgdHJhaXQgQnl0ZU9yZGVyVHlwZTpcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczoxMTA5OiAgICAgICAgRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyAmIzQzOyBVbmFsaWduZWQgJiM0MzsgQ29weSAmIzQzOyBFcSAmIzQzOyBEZWJ1ZyAmIzQzOyBIYXNoICYjNDM7IEZyb21cdTAwM2NTZWxmOjpOYXRpdmVcdTAwM2VcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTEwLSAgICB7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5ycz0xNTI9aW1wbFx1MDAzYyYjMzk7YSwgQiwgVFx1MDAzZSBSZWZcdTAwM2NCLCBbVF1cdTAwM2Vcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1NC0gICAgQjogJiMzOTthICYjNDM7IEludG9CeXRlU2xpY2VNdXRcdTAwM2MmIzM5O2FcdTAwM2UsXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzOjE1NTogICAgVDogRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyAmIzQzOyBJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1Ni17XG4tLVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM9ODEyPWltcGxcdTAwM2NTcmMsIERzdDogP1NpemVkICYjNDM7IFVuYWxpZ25lZFx1MDAzZSBGcm9tXHUwMDNjQ2FzdEVycm9yXHUwMDNjU3JjLCBEc3RcdTAwM2VcdTAwM2UgZm9yIFNpemVFcnJvclx1MDAzY1NyYywgRHN0XHUwMDNlIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MjgtICAgIC8vL1xucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM6ODI5OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MzAtICAgIC8vLyAjW3JlcHIoQyldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM3LSAgICAvLy9cbnJ1c3QvemVyb2NvcHkvc3JjL2Vycm9yLnJzOjgzODogICAgLy8vICNbZGVyaXZlKEZyb21CeXRlcywgSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBVbmFsaWduZWQpXVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM5LSAgICAvLy8gI1tyZXByKEMsIHBhY2tlZCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjUtLy8gICBvbmUgcG9zc2libGUgc2VxdWVuY2Ugb2YgMCBieXRlcywgYW5kIGAoKWAgaXMgaW5oYWJpdGVkLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjY6Ly8gLSBgSW50b0J5dGVzYDogU2luY2UgYCgpYCBoYXMgc2l6ZSAwLCBpdCBjb250YWlucyBubyBwYWRkaW5nIGJ5dGVzLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjctLy8gLSBgVW5hbGlnbmVkYDogYCgpYCBoYXMgYWxpZ25tZW50IDEuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMzEtY29uc3QgXzogKCkgPSB1bnNhZmUge1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MzI6ICAgIHVuc2FmZV9pbXBsISgoKTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0zMy0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoKCkpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTM5LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBudW1lcmljIHR5cGVzIFsxXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NDA6Ly8gLSBgSW50b0J5dGVzYDogbnVtZXJpYyB0eXBlcyBoYXZlIG5vIHBhZGRpbmcgYnl0ZXMgWzFdXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MS0vLyAtIGBVbmFsaWduZWRgIChgdThgIGFuZCBgaThgIG9ubHkpOiBUaGUgcmVmZXJlbmNlIFsyXSBzcGVjaWZpZXMgdGhlIHNpemUgb2Zcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02Ny1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2ODogICAgdW5zYWZlX2ltcGwhKHU4OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY5OiAgICB1bnNhZmVfaW1wbCEoaTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzAtICAgIGFzc2VydF91bmFsaWduZWQhKHU4LCBpOCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3MTogICAgdW5zYWZlX2ltcGwhKHUxNjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzI6ICAgIHVuc2FmZV9pbXBsIShpMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjczOiAgICB1bnNhZmVfaW1wbCEodTMyOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDogICAgdW5zYWZlX2ltcGwhKGkzMjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzU6ICAgIHVuc2FmZV9pbXBsISh1NjQ6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc2OiAgICB1bnNhZmVfaW1wbCEoaTY0OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NzogICAgdW5zYWZlX2ltcGwhKHUxMjg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc4OiAgICB1bnNhZmVfaW1wbCEoaTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Nzk6ICAgIHVuc2FmZV9pbXBsISh1c2l6ZTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODA6ICAgIHVuc2FmZV9pbXBsIShpc2l6ZTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODE6ICAgIHVuc2FmZV9pbXBsIShmMzI6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjgyOiAgICB1bnNhZmVfaW1wbCEoZjY0OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04My0gICAgI1tjZmcoZmVhdHVyZSA9IFwmIzM0O2Zsb2F0LW5pZ2h0bHlcJiMzNDspXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODQ6ICAgIHVuc2FmZV9pbXBsISgjW2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9IFwmIzM0O2Zsb2F0LW5pZ2h0bHlcJiMzNDspKSldIGYxNjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtODUtICAgICNbY2ZnKGZlYXR1cmUgPSBcJiMzNDtmbG9hdC1uaWdodGx5XCYjMzQ7KV1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjg2OiAgICB1bnNhZmVfaW1wbCEoI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSBcJiMzNDtmbG9hdC1uaWdodGx5XCYjMzQ7KSkpXSBmMTI4OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04Ny19O1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTkxLS8vIC0gYEZyb21aZXJvc2A6IFZhbGlkIHNpbmNlIFwmIzM0O1t0XWhlIHZhbHVlIGZhbHNlIGhhcyB0aGUgYml0IHBhdHRlcm4gMHgwMFwmIzM0OyBbMV0uXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo5MjovLyAtIGBJbnRvQnl0ZXNgOiBTaW5jZSBcJiMzNDt0aGUgYm9vbGVhbiB0eXBlIGhhcyBhIHNpemUgYW5kIGFsaWdubWVudCBvZiAxIGVhY2hcJiMzNDtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTkzLS8vICAgYW5kIFwmIzM0O1RoZSB2YWx1ZSBmYWxzZSBoYXMgdGhlIGJpdCBwYXR0ZXJuIDB4MDAgYW5kIHRoZSB2YWx1ZSB0cnVlIGhhcyB0aGVcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDAtI1thbGxvdyhjbGlwcHk6Om11bHRpcGxlX3Vuc2FmZV9vcHNfcGVyX2Jsb2NrKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjEwMTpjb25zdCBfOiAoKSA9IHVuc2FmZSB7IHVuc2FmZV9pbXBsIShib29sOiBJbW11dGFibGUsIEZyb21aZXJvcywgSW50b0J5dGVzLCBVbmFsaWduZWQpIH07XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDItYXNzZXJ0X3VuYWxpZ25lZCEoYm9vbCk7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTI0LS8vICAgY29udGFpbnMgMHgwMDAwLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI1Oi8vIC0gYEludG9CeXRlc2A6IGBjaGFyYCBpcyBwZXIgcmVmZXJlbmNlIFsxXSBcJiMzNDtyZXByZXNlbnRlZCBhcyBhIDMyLWJpdCB1bnNpZ25lZFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI2Oi8vICAgd29yZFwmIzM0OyAoYHUzMmApIHdoaWNoIGlzIGBJbnRvQnl0ZXNgLiBOb3RlIHRoYXQgdW5saWtlIGB1MzJgLCBub3QgYWxsIGJpdFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTI3LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBgY2hhcmAuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxMzE6Y29uc3QgXzogKCkgPSB1bnNhZmUgeyB1bnNhZmVfaW1wbCEoY2hhcjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcykgfTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTEzMi1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xNTAtLy8gLSBgSW1tdXRhYmxlYDogYFt1OF1gIGRvZXMgbm90IGNvbnRhaW4gYW55IGBVbnNhZmVDZWxsYHMuXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxNTE6Ly8gLSBgRnJvbVplcm9zYCwgYEludG9CeXRlc2AsIGBVbmFsaWduZWRgOiBgW3U4XWAgaXMgYEZyb21aZXJvc2AsIGBJbnRvQnl0ZXNgLFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUyLS8vICAgYW5kIGBVbmFsaWduZWRgLlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE1Ni0vL1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTU3Oi8vIEZJWE1FKCM0MjkpOiBJbXByb3ZlIHNhZmV0eSBwcm9vZiBmb3IgYEZyb21aZXJvc2AgYW5kIGBJbnRvQnl0ZXNgOyBoYXZpbmcgdGhlIHNhbWVcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE1OC0vLyBsYXlvdXQgYXMgYFt1OF1gIGlzbiYjMzk7dCBzdWZmaWNpZW50LlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE2NC0jW2FsbG93KGNsaXBweTo6bXVsdGlwbGVfdW5zYWZlX29wc19wZXJfYmxvY2spXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTY1OmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKHN0cjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcywgVW5hbGlnbmVkKSB9O1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTY2LVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTE4Mj1tYWNyb19ydWxlcyEgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8ge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5Mi1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE5MzovLyBgTm9uWmVyb1h4eGAgaXMgYEludG9CeXRlc2AsIGJ1dCBub3QgYEZyb21aZXJvc2Agb3IgYEZyb21CeXRlc2AuXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xOTQtLy9cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5NS0vLyBTQUZFVFk6XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxOTY6Ly8gLSBgSW50b0J5dGVzYDogYE5vblplcm9YeHhgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgaXRzIGFzc29jaWF0ZWQgcHJpbWl0aXZlLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk3LS8vICAgIFNpbmNlIGl0IGlzIHRoZSBzYW1lIHNpemUsIHRoaXMgZ3VhcmFudGVlcyBpdCBoYXMgbm8gcGFkZGluZyAtIGludGVnZXJzXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI2LWNvbnN0IF86ICgpID0gdW5zYWZlIHtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIyNzogICAgdW5zYWZlX2ltcGwhKE5vblplcm9VODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMjg6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTg6IEltbXV0YWJsZSwgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI5LSAgICBhc3NlcnRfdW5hbGlnbmVkIShOb25aZXJvVTgsIE5vblplcm9JOCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzA6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTE2OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzE6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTE2OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzI6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzM6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzQ6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzU6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzY6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTEyODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM3OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0kxMjg6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Vc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM5OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0lzaXplOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yNDAtICAgIHVuc2FmZV9pbXBsX3RyeV9mcm9tX2J5dGVzX2Zvcl9ub256ZXJvIShcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yNTYtLy8gU0FGRVRZOlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjU3Oi8vIC0gYFRyeUZyb21CeXRlc2AgKHdpdGggbm8gdmFsaWRhdG9yKSwgYEZyb21aZXJvc2AsIGBGcm9tQnl0ZXNgLCBgSW50b0J5dGVzYDpcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1OC0vLyAgIFRoZSBSdXN0IGNvbXBpbGVyIHJldXNlcyBgMGAgdmFsdWUgdG8gcmVwcmVzZW50IGBOb25lYCwgc29cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yODEtY29uc3QgXzogKCkgPSB1bnNhZmUge1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjgyOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1U4XHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODM6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSThcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4NC0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoT3B0aW9uXHUwMDNjTm9uWmVyb1U4XHUwMDNlLCBPcHRpb25cdTAwM2NOb25aZXJvSThcdTAwM2UpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg1OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1UxNlx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4NjogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9JMTZcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODc6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvVTMyXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg4OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb0kzMlx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4OTogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9VNjRcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTA6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSTY0XHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjkxOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1UxMjhcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTI6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSTEyOFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MzogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9Vc2l6ZVx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5NDogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9Jc2l6ZVx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI5NS19O1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTQwMj0gICAgbWFjcm9fcnVsZXMhIGltcGxfdHJhaXRzX2Zvcl9hdG9taWNzIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MDgtICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XHUwMDNlIFRyeUZyb21CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo0MDk6ICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XHUwMDNlIEludG9CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MTAtICAgICAgICAgICAgKSpcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00NTY9ICAgIG1vZCBhdG9taWNfOCB7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNDY1LSAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cdTAwM2UgVHJ5RnJvbUJ5dGVzIGZvciBBdG9taWNCb29sIFtib29sXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo0NjY6ICAgICAgICBpbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoPVx1MDAzZSBJbnRvQnl0ZXMgZm9yIEF0b21pY0Jvb2wgW2Jvb2xdKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQ2Ny1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz02MDM9ICAgIG1vZCBhdG9taWNfcHRyIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02MDktXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2MTA6ICAgICAgICAvLyBGSVhNRSgjMTcwKTogSW1wbGVtZW50IGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCBvbmNlIHdlIGltcGxlbWVudFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjExLSAgICAgICAgLy8gdGhvc2UgdHJhaXRzIGZvciBgKm11dCBUYC5cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NDctLy8gICBvbmUgcG9zc2libGUgc2VxdWVuY2Ugb2YgMCBieXRlcywgYW5kIGBQaGFudG9tRGF0YWAgaXMgaW5oYWJpdGVkLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjQ4Oi8vIC0gYEludG9CeXRlc2A6IFNpbmNlIGBQaGFudG9tRGF0YWAgaGFzIHNpemUgMCwgaXQgY29udGFpbnMgbm8gcGFkZGluZyBieXRlcy5cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY0OS0vLyAtIGBVbmFsaWduZWRgOiBQZXIgdGhlIHByZWNlZGluZyByZWZlcmVuY2UsIGBQaGFudG9tRGF0YWAgaGFzIGFsaWdubWVudCAxLlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1Ny0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIEZyb21CeXRlcyBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY1ODogICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIEludG9CeXRlcyBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1OS0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIFVuYWxpZ25lZCBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NjUtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgV3JhcHBpbmdcdTAwM2NUXHUwMDNlW1RdKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY2NjppbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogSW50b0J5dGVzID1cdTAwM2UgSW50b0J5dGVzIGZvciBXcmFwcGluZ1x1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY3LWFzc2VydF91bmFsaWduZWQhKFdyYXBwaW5nXHUwMDNjKClcdTAwM2UsIFdyYXBwaW5nXHUwMDNjdThcdTAwM2UpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTczOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICYjNDM7IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgTWFudWFsbHlEcm9wXHUwMDNjVFx1MDAzZVtUXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgPVx1MDAzZSBJbnRvQnl0ZXMgZm9yIE1hbnVhbGx5RHJvcFx1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzQxLS8vIFNBRkVUWTogYE1hbnVhbGx5RHJvcFx1MDAzY1RcdTAwM2VgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgYFRgIFsxXSwgYW5kIHRodXMgaGFzIHRoZVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTgxMz0gICAgICAgIGZuIHByb2plY3Qoc2xmOiBQdHJJbm5lclx1MDAzYyYjMzk7XywgU2VsZlx1MDAzZSkgLVx1MDAzZSAqbXV0IFQge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgyOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICYjNDM7IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgQ2VsbFx1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODMwOmltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzID1cdTAwM2UgSW50b0J5dGVzIGZvciBDZWxsXHUwMDNjVFx1MDAzZVtUXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04MzEtLy8gU0FGRVRZOiBgQ2VsbFx1MDAzY1RcdTAwM2VgIGhhcyB0aGUgc2FtZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gYXMgYFRgIFsxXSwgYW5kIHRodXNcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NDAtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCAmIzQzOyBGcm9tQnl0ZXMgPVx1MDAzZSBGcm9tQnl0ZXMgZm9yIFVuc2FmZUNlbGxcdTAwM2NUXHUwMDNlW1RdKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjA3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlcy4KCioqQW5hbHl6aW5nIGBBc0J5dGVzYCB2cy4gYEludG9CeXRlc2AgaW4gdGhlIFJ1c3QgS2VybmVsKioKCk9rYXksIHNvIEkgbmVlZCBhIHJlZnJlc2hlciBvbiB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBgQXNCeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIHdpdGhpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgIGFuZCBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoZXNlIHRyYWl0cyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBtZW1vcnkgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWxseSB1bnNhZmUgY29kZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBpbXBsZW1lbnRhdGlvbnMsIHVzYWdlIGV4YW1wbGVzLCBhbmQgYW55IGNvbW1lbnRzIHRoYXQgaWxsdW1pbmF0ZSB0aGUgZGVzaWduIGRlY2lzaW9ucy4gQXJlIHdlIGNvbmNlcm5lZCBhYm91dCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgaGVyZT8gRG9lcyBgQXNCeXRlc2Agc3VnZ2VzdCBhIG1vcmUgKmJvcnJvd2VkKiBvciB2aWV3LWxpa2UgYXBwcm9hY2gsIHdoaWxlIGBJbnRvQnl0ZXNgIGltcGxpZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIG9yIHBvdGVudGlhbGx5IGEgY29weWluZyBvcGVyYXRpb24/IEkmIzM5O20gaG9waW5nIHRvIGNsYXJpZnkgaWYgd2UgYXJlIHVzaW5nIHRoZXNlIHRvIGFjaGlldmUgbWVtb3J5IGxheW91dCBpbnRlcnByZXRhdGlvbnMgb2YgdHlwZXMsIG9yIGp1c3QgZ2VuZXJhbCBjb252ZXJzaW9ucy4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIGlkZW50aWZ5IGFueSBzcGVjaWZpYyBjb25zaWRlcmF0aW9ucyByZWdhcmRpbmcgc2FmZXR5LCBhbGlnbm1lbnQsIG9yIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiB1dGlsaXppbmcgdGhlc2UgY29udmVyc2lvbiB0cmFpdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHViIHVzZSB6ZXJvY29weTo6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02My0jW2RvYyhub19pbmxpbmUpXVxucnVzdC9rZXJuZWwvcHJlbHVkZS5yczo2NDpwdWIgdXNlIHplcm9jb3B5Ojp7XG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY1LSAgICBGcm9tQnl0ZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AgKExpbmVzIDUwLTkwKSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgYHByZWx1ZGUucnNgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgUnVzdCBjb2RlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyA1MCB0aHJvdWdoIDkwLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBjaHVuayDigJMgSSBiZXQgaXQmIzM5O3MgZGVmaW5pbmcgc29tZSBjb3JlIGFic3RyYWN0aW9ucyBvciB0eXBlIGFsaWFzZXMgdGhhdCBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIG92ZXJhbGwgcHJvamVjdCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHBlcmhhcHMgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGF0IHJhbmdlLiBJdCYjMzk7cyB0aGUgJiMzNDtwcmVsdWRlLCYjMzQ7IHNvIGl0JiMzOTtzIGxpa2VseSBzZXR0aW5nIHVwIGNvbW1vbiB0cmFpdHMgb3IgZGF0YSBzdHJ1Y3R1cmVzIHRvIGJlIGluIHNjb3BlIGV2ZXJ5d2hlcmUgZWxzZS4gSeKAmWxsIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbWFkZSwgb3IgaWYgdGhlcmUgaXMgYW55IGludGVyZXN0aW5nIHVzZSBvZiBgdW5zYWZlYCBvciBgY29uc3RgIGNvbnRleHRzIHRoYXQgd2FycmFudHMgZnVydGhlciBzY3J1dGlueS4gSSB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRlc2lnbiBjaG9pY2VzIHRoZXJlIOKAkyB0aGUgaW50ZW50IG9mIHRoZSBhdXRob3IvdGVhbSBiZWhpbmQgdGhvc2UgbGluZXMuIElzIGl0IGlkaW9tYXRpYyBSdXN0PyBBcmUgdGhleSBhZGhlcmluZyB0byBiZXN0IHByYWN0aWNlcyBmb3Iga2VybmVsIGRldmVsb3BtZW50LCBvciBtYWtpbmcgdHJhZGVvZmZzIGZvciBwZXJmb3JtYW5jZSBvciBoYXJkd2FyZSBjb25zdHJhaW50cz8gVGltZSB0byBkaXNzZWN0IGl0IGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9wcmVsdWRlLnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdCNbZG9jKG5vX2lubGluZSldXG4gIDUyOlx0cHViIHVzZSBwaW5faW5pdDo6e1xuICA1MzpcdCAgICBpbml0LFxuICA1NDpcdCAgICBwaW5fZGF0YSxcbiAgNTU6XHQgICAgcGluX2luaXQsXG4gIDU2Olx0ICAgIHBpbm5lZF9kcm9wLFxuICA1NzpcdCAgICBJblBsYWNlV3JpdGUsXG4gIDU4Olx0ICAgIEluaXQsXG4gIDU5Olx0ICAgIFBpbkluaXQsXG4gIDYwOlx0ICAgIFplcm9hYmxlLCAvL1xuICA2MTpcdH07XG4gIDYyOlx0XG4gIDYzOlx0I1tkb2Mobm9faW5saW5lKV1cbiAgNjQ6XHRwdWIgdXNlIHplcm9jb3B5Ojp7XG4gIDY1Olx0ICAgIEZyb21CeXRlcyxcbiAgNjY6XHQgICAgSW50b0J5dGVzLCAvL1xuICA2NzpcdH07XG4gIDY4Olx0XG4gIDY5Olx0I1tkb2Mobm9faW5saW5lKV1cbiAgNzA6XHRwdWIgdXNlIHplcm9jb3B5X2Rlcml2ZTo6e1xuICA3MTpcdCAgICBGcm9tQnl0ZXMsXG4gIDcyOlx0ICAgIEludG9CeXRlcywgLy9cbiAgNzM6XHR9O1xuICA3NDpcdFxuICA3NTpcdCNbZG9jKG5vX2lubGluZSldXG4gIDc2Olx0cHViIHVzZSBzdXBlcjo6e1xuICA3NzpcdCAgICBhbGxvYzo6e1xuICA3ODpcdCAgICAgICAgZmxhZ3M6OiosXG4gIDc5Olx0ICAgICAgICBCb3gsXG4gIDgwOlx0ICAgICAgICBLQm94LFxuICA4MTpcdCAgICAgICAgS1ZCb3gsXG4gIDgyOlx0ICAgICAgICBLVlZlYyxcbiAgODM6XHQgICAgICAgIEtWZWMsXG4gIDg0Olx0ICAgICAgICBWQm94LFxuICA4NTpcdCAgICAgICAgVlZlYyxcbiAgODY6XHQgICAgICAgIFZlYywgLy9cbiAgODc6XHQgICAgfSxcbiAgODg6XHQgICAgYnVpbGRfYXNzZXJ0Ojp7XG4gIDg5Olx0ICAgICAgICBidWlsZF9hc3NlcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyOTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWNlbnQgYHplcm9jb3B5YCBVcGRhdGUqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgemVyb2NvcHlgIHZlcnNpb24gMC44IHRyaWdnZXJlZCBhIHJlbmFtZSDigJMgYEFzQnl0ZXNgIGlzIG5vdyBgSW50b0J5dGVzYC4gVGhlIGBwcmVsdWRlYCBub3cgZXhwb3NlcyBgSW50b0J5dGVzYCBkaXJlY3RseSBmcm9tIGB6ZXJvY29weWAsIHdoaWNoIGlzIGhlbHBmdWwuIFRoaXMgY29tbWl0IHNwZWNpZmljYWxseSB1cGRhdGVzIHRoZSBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRtYS5yc2AsIGBuZXRsaW5rLnJzYCwgYW5kIGB1YWNjZXNzLnJzYCBmaWxlcyBhbGwgcmVwbGFjZSBgQXNCeXRlc2Agd2l0aCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlaXIgdHJhaXQgYm91bmRzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBHaXQgbG9nLiBJcyB0aGlzIGEgc2ltcGxlIHRyYWl0IHJlbmFtZSwgb3IgZGlkIHNvbWV0aGluZyBtb3JlIHNpZ25pZmljYW50IGNoYW5nZSBhdCBydW50aW1lPyBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBrbm93bi4gQmVmb3JlIGRpZ2dpbmcgaW50byB0aGUgY29tbWl0IGhpc3RvcnkgdGhvdWdoLCBsZXQgbWUgY2hlY2sgdGhlIGB0cmFuc211dGUucnNgIG1vZHVsZSBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0cmFuc211dGUgZnVuY3Rpb25hbGl0eSBpcyBzdGlsbCBhdmFpbGFibGUgYW5kIGhhc24mIzM5O3QgY2hhbmdlZCBpdHMgZnVuY3Rpb24uIFRoaXMgcmVuYW1lIGNvdWxkIGhhdmUgYWZmZWN0ZWQgdGhhdCBzb21laG93LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiB0aGVyZSB0byBjaGVjayBpdHMgY3VycmVudCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHViIG1vZCB0cmFuc211dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtydXN0L2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9saWIucnMtMTQwLXB1YiBtb2QgdHJhY2Vwb2ludDtcbnJ1c3Qva2VybmVsL2xpYi5yczoxNDE6cHViIG1vZCB0cmFuc211dGU7XG5ydXN0L2tlcm5lbC9saWIucnMtMTQyLXB1YiBtb2QgdHlwZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpcyBhdCB0aGUga2VybmVsIGxldmVsLiBUcmFuc211dGF0aW9uIGlzIGEgbm90b3Jpb3VzbHkgdHJpY2t5IGFyZWEsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW1zIGxhbmd1YWdlIGxpa2UgUnVzdCB3aGVyZSB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgZGlyZWN0bHkuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBgdW5zYWZlYCBibG9ja3MsIG9mIGNvdXJzZS4gVGhlIGNvcmUgcXVlc3Rpb25zIGFyZTogV2hhdCBhcmUgdGhlIGNvbnN0cmFpbnRzIGJlaW5nIHBsYWNlZCBvbiB0cmFuc211dGVzPyBBcmUgdGhleSByZWx5aW5nIGhlYXZpbHkgb24gYWxpZ25tZW50IGd1YXJhbnRlZXM/IFdoYXQgc2FmZWd1YXJkcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3Ig4oCTIGFyZSB0aGV5IHVzaW5nIGNvbXBpbGUtdGltZSBjaGVja3MsIHJ1bnRpbWUgYXNzZXJ0aW9ucywgb3IgYSBjb21iaW5hdGlvbj8gQW5kIGFyZSB0aGV5IGJlaW5nIG92ZXJseSByZXN0cmljdGl2ZSwgb3IgY2xldmVybHkgZXhwbG9pdGluZyBldmVyeSBwb3NzaWJsZSBvcHRpbWl6YXRpb24/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHVzZSBvZiBgI1tyZXByXWAgYXR0cmlidXRlcyBhbmQgaG93IHRob3NlIGFmZmVjdCB0aGUgdHJhbnNtdXRlJiMzOTtzIHNhZmV0eSBhbmQgZWZmZWN0aXZlbmVzcy4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGdvb2QgZXhlcmNpc2UsIEkgY2FuIGZlZWwgaXQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gdGhlIG5pdHR5LWdyaXR0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC90cmFuc211dGUucnMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdC8vISBUcmFpdHMgZm9yIHRyYW5zbXV0aW5nIHR5cGVzLlxuICAgNDpcdFxuICAgNTpcdHVzZSBjb3JlOjptZW06OnNpemVfb2Y7XG4gICA2Olx0XG4gICA3Olx0Ly8vIFR5cGVzIGZvciB3aGljaCBhbnkgYml0IHBhdHRlcm4gaXMgdmFsaWQuXG4gICA4Olx0Ly8vXG4gICA5Olx0Ly8vIE5vdCBhbGwgdHlwZXMgYXJlIHZhbGlkIGZvciBhbGwgdmFsdWVzLiBGb3IgZXhhbXBsZSwgYSBgYm9vbGAgbXVzdCBiZSBlaXRoZXIgemVybyBvciBvbmUsIHNvXG4gIDEwOlx0Ly8vIHJlYWRpbmcgYXJiaXRyYXJ5IGJ5dGVzIGludG8gc29tZXRoaW5nIHRoYXQgY29udGFpbnMgYSBgYm9vbGAgaXMgbm90IG9rYXkuXG4gIDExOlx0Ly8vXG4gIDEyOlx0Ly8vIEl0JiMzOTtzIG9rYXkgZm9yIHRoZSB0eXBlIHRvIGhhdmUgcGFkZGluZywgYXMgaW5pdGlhbGl6aW5nIHRob3NlIGJ5dGVzIGhhcyBubyBlZmZlY3QuXG4gIDEzOlx0Ly8vXG4gIDE0Olx0Ly8vICMgRXhhbXBsZXNcbiAgMTU6XHQvLy9cbiAgMTY6XHQvLy8gYGBgXG4gIDE3Olx0Ly8vIHVzZSBrZXJuZWw6OnRyYW5zbXV0ZTo6RnJvbUJ5dGVzO1xuICAxODpcdC8vL1xuICAxOTpcdC8vLyAjIGZuIHRlc3QoKSAtXHUwMDNlIE9wdGlvblx1MDAzYygpXHUwMDNlIHtcbiAgMjA6XHQvLy8gbGV0IHJhdyA9IFsxLCAyLCAzLCA0XTtcbiAgMjE6XHQvLy9cbiAgMjI6XHQvLy8gbGV0IHJlc3VsdCA9IHUzMjo6ZnJvbV9ieXRlcyhcdTAwMjZyYXcpPztcbiAgMjM6XHQvLy9cbiAgMjQ6XHQvLy8gI1tjZmcodGFyZ2V0X2VuZGlhbiA9IFwmIzM0O2xpdHRsZVwmIzM0OyldXG4gIDI1Olx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHg0MDMwMjAxKTtcbiAgMjY6XHQvLy9cbiAgMjc6XHQvLy8gI1tjZmcodGFyZ2V0X2VuZGlhbiA9IFwmIzM0O2JpZ1wmIzM0OyldXG4gIDI4Olx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHgxMDIwMzA0KTtcbiAgMjk6XHQvLy9cbiAgMzA6XHQvLy8gIyBTb21lKCgpKSB9XG4gIDMxOlx0Ly8vICMgdGVzdCgpLm9rX29yKEVJTlZBTCk/O1xuICAzMjpcdC8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4gIDMzOlx0Ly8vIGBgYFxuICAzNDpcdC8vL1xuICAzNTpcdC8vLyAjIFNhZmV0eVxuICAzNjpcdC8vL1xuICAzNzpcdC8vLyBBbGwgYml0LXBhdHRlcm5zIG11c3QgYmUgdmFsaWQgZm9yIHRoaXMgdHlwZS4gVGhpcyB0eXBlIG11c3Qgbm90IGhhdmUgaW50ZXJpb3IgbXV0YWJpbGl0eS5cbiAgMzg6XHRwdWIgdW5zYWZlIHRyYWl0IEZyb21CeXRlcyB7XG4gIDM5Olx0ICAgIC8vLyBDb252ZXJ0cyBhIHNsaWNlIG9mIGJ5dGVzIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cbiAgNDA6XHQgICAgLy8vXG4gIDQxOlx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcbiAgNDI6XHQgICAgLy8vIGBUYCBhbmQgZGlmZmVyZW50IGZyb20gemVyby5cbiAgNDM6XHQgICAgLy8vXG4gIDQ0Olx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXG4gIDQ1Olx0ICAgIGZuIGZyb21fYnl0ZXMoYnl0ZXM6IFx1MDAyNlt1OF0pIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2U2VsZlx1MDAzZVxuICA0NjpcdCAgICB3aGVyZVxuICA0NzpcdCAgICAgICAgU2VsZjogU2l6ZWQsXG4gIDQ4Olx0ICAgIHtcbiAgNDk6XHQgICAgICAgIGxldCBzbGljZV9wdHIgPSBieXRlcy5hc19wdHIoKS5jYXN0OjpcdTAwM2NTZWxmXHUwMDNlKCk7XG4gIDUwOlx0ICAgICAgICBsZXQgc2l6ZSA9IHNpemVfb2Y6Olx1MDAzY1NlbGZcdTAwM2UoKTtcbiAgNTE6XHRcbiAgNTI6XHQgICAgICAgIGlmIGJ5dGVzLmxlbigpID09IHNpemUgXHUwMDI2XHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xuICA1MzpcdCAgICAgICAgICAgIC8vIFNBRkVUWTogU2l6ZSBhbmQgYWxpZ25tZW50IHdlcmUganVzdCBjaGVja2VkLlxuICA1NDpcdCAgICAgICAgICAgIHVuc2FmZSB7IFNvbWUoXHUwMDI2KnNsaWNlX3B0cikgfVxuICA1NTpcdCAgICAgICAgfSBlbHNlIHtcbiAgNTY6XHQgICAgICAgICAgICBOb25lXG4gIDU3Olx0ICAgICAgICB9XG4gIDU4Olx0ICAgIH1cbiAgNTk6XHRcbiAgNjA6XHQgICAgLy8vIENvbnZlcnRzIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYCB0byBhIHJlZmVyZW5jZSB0byBgU2VsZmAuXG4gIDYxOlx0ICAgIC8vL1xuICA2MjpcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNgXSwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IGBieXRlc2AgZG9lcyBub3RcbiAgNjM6XHQgICAgLy8vIG5lZWQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBvZiBgU2VsZmAgLSB0aGUgYXBwcm9wcmlhdGUgcG9ydGlvbiBpcyBjdXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mXG4gIDY0Olx0ICAgIC8vLyBgYnl0ZXNgLCBhbmQgdGhlIHJlbWFpbmRlciByZXR1cm5lZCBhbG9uZ3NpZGUgYFNlbGZgLlxuICA2NTpcdCAgICBmbiBmcm9tX2J5dGVzX3ByZWZpeChieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoXHUwMDI2U2VsZiwgXHUwMDI2W3U4XSlcdTAwM2VcbiAgNjY6XHQgICAgd2hlcmVcbiAgNjc6XHQgICAgICAgIFNlbGY6IFNpemVkLFxuICA2ODpcdCAgICB7XG4gIDY5Olx0ICAgICAgICBsZXQgKHByZWZpeCwgcmVtYWluZGVyKSA9IGJ5dGVzLnNwbGl0X2F0X2NoZWNrZWQoc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpKT87XG4gIDcwOlx0XG4gIDcxOlx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzKHByZWZpeCkubWFwKHxzfCAocywgcmVtYWluZGVyKSlcbiAgNzI6XHQgICAgfVxuICA3MzpcdFxuICA3NDpcdCAgICAvLy8gQ29udmVydHMgYSBtdXRhYmxlIHNsaWNlIG9mIGJ5dGVzIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cbiAgNzU6XHQgICAgLy8vXG4gIDc2Olx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcbiAgNzc6XHQgICAgLy8vIGBUYCBhbmQgZGlmZmVyZW50IGZyb20gemVyby5cbiAgNzg6XHQgICAgLy8vXG4gIDc5Olx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXG4gIDgwOlx0ICAgIGZuIGZyb21fYnl0ZXNfbXV0KGJ5dGVzOiBcdTAwMjZtdXQgW3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjZtdXQgU2VsZlx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIyOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhlIGNvZGUsIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgdHJhbnNtdXRlLnJzYCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzdHVmZiBoZXJlLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggcmVpbnRlcnByZXRhdGlvbnMgb2YgbWVtb3J5IGFuZCBwb3NzaWJseSBzb21lIHVuY2hlY2tlZCB0eXBlIGNvbnZlcnNpb25zLiBJJiMzOTttIGhvcGluZyB0byBzZWUgd2VsbC1jb21tZW50ZWQgY29kZSwgZ2l2ZW4gdGhlIGluaGVyZW50IGRhbmdlcnMgb2YgdW5jaGVja2VkIHRyYW5zbXV0YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBhbnkgcG90ZW50aWFsIGFsaWdubWVudCBpc3N1ZXMgYW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGVkLiBJIHdhbnQgdG8gc3BvdCBhbnkgcGxhY2VzIHdoZXJlIHRoZSBjb21waWxlciBtaWdodCBiZSBsZWFuaW5nIG9uIG9wdGltaXphdGlvbnMsIGFuZCBob3cgdGhlIGNvZGUgZ3VhcmRzIGFnYWluc3QgdGhhdC4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIG1hbmFnaW5nIGxpZmV0aW1lcyBpZiBwb2ludGVycyBhcmUgaW52b2x2ZWQgaW4gdHJhbnNtdXRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgdW5zYWZlYCBibG9ja3MsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgaW52YXJpYW50cyBhcmUgdmVyeSBleHBsaWNpdGx5IGRvY3VtZW50ZWQuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgdXNpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYHRyYW5zbXV0ZWAgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgZm9yIGtlcm5lbC1sZXZlbCBvcGVyYXRpb25zLi4uIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGFsaWFzaW5nIGFuZCBkYXRhIHJhY2VzIGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudC4gSSYjMzk7bSBhbHNvIGhvcGluZyB0aGV5JiMzOTtyZSBhdm9pZGluZyBhbnkgdW5kZWZpbmVkIGJlaGF2aW9yLCBvZiBjb3Vyc2UhIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdCAgICB3aGVyZVxuICA4MjpcdCAgICAgICAgU2VsZjogQXNCeXRlcyAmIzQzOyBTaXplZCxcbiAgODM6XHQgICAge1xuICA4NDpcdCAgICAgICAgbGV0IHNsaWNlX3B0ciA9IGJ5dGVzLmFzX211dF9wdHIoKS5jYXN0OjpcdTAwM2NTZWxmXHUwMDNlKCk7XG4gIDg1Olx0ICAgICAgICBsZXQgc2l6ZSA9IHNpemVfb2Y6Olx1MDAzY1NlbGZcdTAwM2UoKTtcbiAgODY6XHRcbiAgODc6XHQgICAgICAgIGlmIGJ5dGVzLmxlbigpID09IHNpemUgXHUwMDI2XHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xuICA4ODpcdCAgICAgICAgICAgIC8vIFNBRkVUWTogU2l6ZSBhbmQgYWxpZ25tZW50IHdlcmUganVzdCBjaGVja2VkLlxuICA4OTpcdCAgICAgICAgICAgIHVuc2FmZSB7IFNvbWUoXHUwMDI2bXV0ICpzbGljZV9wdHIpIH1cbiAgOTA6XHQgICAgICAgIH0gZWxzZSB7XG4gIDkxOlx0ICAgICAgICAgICAgTm9uZVxuICA5MjpcdCAgICAgICAgfVxuICA5MzpcdCAgICB9XG4gIDk0Olx0XG4gIDk1Olx0ICAgIC8vLyBDb252ZXJ0cyB0aGUgYmVnaW5uaW5nIG9mIGBieXRlc2AgdG8gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBgU2VsZmAuXG4gIDk2Olx0ICAgIC8vL1xuICA5NzpcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfbXV0YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcbiAgOTg6XHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xuICA5OTpcdCAgICAvLy8gb2YgYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cbiAxMDA6XHQgICAgZm4gZnJvbV9ieXRlc19tdXRfcHJlZml4KGJ5dGVzOiBcdTAwMjZtdXQgW3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoXHUwMDI2bXV0IFNlbGYsIFx1MDAyNm11dCBbdThdKVx1MDAzZVxuIDEwMTpcdCAgICB3aGVyZVxuIDEwMjpcdCAgICAgICAgU2VsZjogQXNCeXRlcyAmIzQzOyBTaXplZCxcbiAxMDM6XHQgICAge1xuIDEwNDpcdCAgICAgICAgbGV0IChwcmVmaXgsIHJlbWFpbmRlcikgPSBieXRlcy5zcGxpdF9hdF9tdXRfY2hlY2tlZChzaXplX29mOjpcdTAwM2NTZWxmXHUwMDNlKCkpPztcbiAxMDU6XHRcbiAxMDY6XHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXNfbXV0KHByZWZpeCkubWFwKHxzfCAocywgcmVtYWluZGVyKSlcbiAxMDc6XHQgICAgfVxuIDEwODpcdFxuIDEwOTpcdCAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCBpbnN0YW5jZSBvZiBgU2VsZmAgYnkgY29weWluZyBgYnl0ZXNgLlxuIDExMDpcdCAgICAvLy9cbiAxMTE6XHQgICAgLy8vIFVubGlrZSBbYEZyb21CeXRlczo6ZnJvbV9ieXRlc2BdLCB3aGljaCByZXF1aXJlcyBhbGlnbmVkIGlucHV0LCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvblxuIDExMjpcdCAgICAvLy8gbm9uLWFsaWduZWQgZGF0YSBhdCB0aGUgY29zdCBvZiBhIGNvcHkuXG4gMTEzOlx0ICAgIGZuIGZyb21fYnl0ZXNfY29weShieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2NTZWxmXHUwMDNlXG4gMTE0Olx0ICAgIHdoZXJlXG4gMTE1Olx0ICAgICAgICBTZWxmOiBTaXplZCxcbiAxMTY6XHQgICAge1xuIDExNzpcdCAgICAgICAgaWYgYnl0ZXMubGVuKCkgPT0gc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpIHtcbiAxMTg6XHQgICAgICAgICAgICAvLyBTQUZFVFk6IHdlIGp1c3QgdmVyaWZpZWQgdGhhdCBgYnl0ZXNgIGhhcyB0aGUgc2FtZSBzaXplIGFzIGBTZWxmYCwgYW5kIHBlciB0aGVcbiAxMTk6XHQgICAgICAgICAgICAvLyBpbnZhcmlhbnRzIG9mIGBGcm9tQnl0ZXNgLCBhbnkgYnl0ZSBzZXF1ZW5jZSBvZiB0aGUgY29ycmVjdCBsZW5ndGggaXMgYSB2YWxpZCB2YWx1ZVxuIDEyMDpcdCAgICAgICAgICAgIC8vIGZvciBgU2VsZmAuXG4gMTIxOlx0ICAgICAgICAgICAgU29tZSh1bnNhZmUgeyBjb3JlOjpwdHI6OnJlYWRfdW5hbGlnbmVkKGJ5dGVzLmFzX3B0cigpLmNhc3Q6Olx1MDAzY1NlbGZcdTAwM2UoKSkgfSlcbiAxMjI6XHQgICAgICAgIH0gZWxzZSB7XG4gMTIzOlx0ICAgICAgICAgICAgTm9uZVxuIDEyNDpcdCAgICAgICAgfVxuIDEyNTpcdCAgICB9XG4gMTI2Olx0XG4gMTI3Olx0ICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIGluc3RhbmNlIG9mIGBTZWxmYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYC5cbiAxMjg6XHQgICAgLy8vXG4gMTI5Olx0ICAgIC8vLyBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIFtgU2VsZjo6ZnJvbV9ieXRlc19jb3B5YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcbiAxMzA6XHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xuIDEzMTpcdCAgICAvLy8gb2YgYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cbiAxMzI6XHQgICAgZm4gZnJvbV9ieXRlc19jb3B5X3ByZWZpeChieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoU2VsZiwgXHUwMDI2W3U4XSlcdTAwM2VcbiAxMzM6XHQgICAgd2hlcmVcbiAxMzQ6XHQgICAgICAgIFNlbGY6IFNpemVkLFxuIDEzNTpcdCAgICB7XG4gMTM2Olx0ICAgICAgICBsZXQgKHByZWZpeCwgcmVtYWluZGVyKSA9IGJ5dGVzLnNwbGl0X2F0X2NoZWNrZWQoc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpKT87XG4gMTM3Olx0XG4gMTM4Olx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzX2NvcHkocHJlZml4KS5tYXAofHN8IChzLCByZW1haW5kZXIpKVxuIDEzOTpcdCAgICB9XG4gMTQwOlx0fVxuIDE0MTpcdFxuIDE0MjpcdG1hY3JvX3J1bGVzISBpbXBsX2Zyb21ieXRlcyB7XG4gMTQzOlx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XHUwMDNlIHtcbiAxNDQ6XHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXG4gMTQ1Olx0ICAgICAgICAkKHVuc2FmZSBpbXBsJCgkKCRnZW5lcmljcykqKT8gRnJvbUJ5dGVzIGZvciAkdCB7fSkqXG4gMTQ2Olx0ICAgIH07XG4gMTQ3Olx0fVxuIDE0ODpcdFxuIDE0OTpcdGltcGxfZnJvbWJ5dGVzISB7XG4gMTUwOlx0ICAgIC8vIFNBRkVUWTogSW5oYWJpdGVkIFpTVHMgb25seSBoYXZlIG9uZSBwb3NzaWJsZSBiaXQgcGF0dGVybiwgYW5kIHRoZXNlIHR3byBoYXZlIG5vIGludmFyaWFudC5cbiAxNTE6XHQgICAgKCksXG4gMTUyOlx0ICAgIHtcdTAwM2NUXHUwMDNlfSBjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhXHUwMDNjVFx1MDAzZSxcbiAxNTM6XHRcbiAxNTQ6XHQgICAgLy8gU0FGRVRZOiBBbGwgYml0IHBhdHRlcm5zIGFyZSBhY2NlcHRhYmxlIHZhbHVlcyBvZiB0aGUgdHlwZXMgYmVsb3cuXG4gMTU1Olx0ICAgIHU4LCB1MTYsIHUzMiwgdTY0LCB1c2l6ZSxcbiAxNTY6XHQgICAgaTgsIGkxNiwgaTMyLCBpNjQsIGlzaXplLFxuIDE1NzpcdFxuIDE1ODpcdCAgICAvLyBTQUZFVFk6IElmIGFsbCBiaXQgcGF0dGVybnMgYXJlIGFjY2VwdGFibGUgZm9yIGluZGl2aWR1YWwgdmFsdWVzIGluIGFuIGFycmF5LCB0aGVuIGFsbCBiaXRcbiAxNTk6XHQgICAgLy8gcGF0dGVybnMgYXJlIGFsc28gYWNjZXB0YWJsZSBmb3IgYXJyYXlzIG9mIHRoYXQgdHlwZS5cbiAxNjA6XHQgICAge1x1MDAzY1Q6IEZyb21CeXRlc1x1MDAzZX0gW1RdLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlciBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZm9jdXNpbmcgb24gdGhpcyBwYXJ0aWN1bGFyIGFyZWEgb2YgdGhlIGtlcm5lbCwgYW5kIG5vdyBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBjb250ZXh0IEkmIzM5O20gb3BlcmF0aW5nIHdpdGhpbiBkZW1hbmRzIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZywgc28gSSYjMzk7bSBub3QganVzdCBnb2luZyB0byBzdG9wIGhlcmUuIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIHJlZ2FyZGluZyBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIHJldmlldyB0aGUgZW50aXJlIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgbWVtb3J5IHNhZmV0eSwgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLCBhbmQsIG9mIGNvdXJzZSwgYW55IHBvc3NpYmxlIHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gaW1wcm9wZXIgdXNlIG9yIGltcGxlbWVudGF0aW9uIG9mIGB0cmFuc211dGVgLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gY29uc2lkZXIgdGhlIGludGVyYWN0aW9uIHdpdGggb3RoZXIga2VybmVsIG1vZHVsZXMgYW5kIGhvdyB0aGlzIG1lY2hhbmlzbSBmaXRzIHdpdGhpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmFsIGRlc2lnbi4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCBtb3JlIGluc2lnaHRzIGludG8gdGhlIGRlc2lnbiB0cmFkZS1vZmZzIGFuZCBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIGJlIHByZXBhcmVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyB3aGVyZSBmdXJ0aGVyIHNjcnV0aW55IGlzIHdhcnJhbnRlZC4gTGV0JiMzOTtzIHNlZSBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC90cmFuc211dGUucnMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdCAgICB7XHUwMDNjVDogRnJvbUJ5dGVzLCBjb25zdCBOOiB1c2l6ZVx1MDAzZX0gW1Q7IE5dLFxuIDE2MjpcdH1cbiAxNjM6XHRcbiAxNjQ6XHQvLy8gVHlwZXMgdGhhdCBjYW4gYmUgdmlld2VkIGFzIGFuIGltbXV0YWJsZSBzbGljZSBvZiBpbml0aWFsaXplZCBieXRlcy5cbiAxNjU6XHQvLy9cbiAxNjY6XHQvLy8gSWYgYSBzdHJ1Y3QgaW1wbGVtZW50cyB0aGlzIHRyYWl0LCB0aGVuIGl0IGlzIG9rYXkgdG8gY29weSBpdCBieXRlLWZvci1ieXRlIHRvIHVzZXJzcGFjZS4gVGhpc1xuIDE2NzpcdC8vLyBtZWFucyB0aGF0IGl0IHNob3VsZCBub3QgaGF2ZSBhbnkgcGFkZGluZywgYXMgcGFkZGluZyBieXRlcyBhcmUgdW5pbml0aWFsaXplZC4gUmVhZGluZ1xuIDE2ODpcdC8vLyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBub3QganVzdCB1bmRlZmluZWQgYmVoYXZpb3IsIGl0IG1heSBldmVuIGxlYWQgdG8gbGVha2luZyBzZW5zaXRpdmVcbiAxNjk6XHQvLy8gaW5mb3JtYXRpb24gb24gdGhlIHN0YWNrIHRvIHVzZXJzcGFjZS5cbiAxNzA6XHQvLy9cbiAxNzE6XHQvLy8gVGhlIHN0cnVjdCBzaG91bGQgYWxzbyBub3QgaG9sZCBrZXJuZWwgcG9pbnRlcnMsIGFzIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NlcyBhcmUgYWxzbyBjb25zaWRlcmVkXG4gMTcyOlx0Ly8vIHNlbnNpdGl2ZS4gSG93ZXZlciwgbGVha2luZyBrZXJuZWwgcG9pbnRlcnMgaXMgbm90IGNvbnNpZGVyZWQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ5IFJ1c3QsIHNvXG4gMTczOlx0Ly8vIHRoaXMgaXMgYSBjb3JyZWN0bmVzcyByZXF1aXJlbWVudCwgYnV0IG5vdCBhIHNhZmV0eSByZXF1aXJlbWVudC5cbiAxNzQ6XHQvLy9cbiAxNzU6XHQvLy8gIyBTYWZldHlcbiAxNzY6XHQvLy9cbiAxNzc6XHQvLy8gVmFsdWVzIG9mIHRoaXMgdHlwZSBtYXkgbm90IGNvbnRhaW4gYW55IHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoaXMgdHlwZSBtdXN0IG5vdCBoYXZlIGludGVyaW9yXG4gMTc4Olx0Ly8vIG11dGFiaWxpdHkuXG4gMTc5Olx0cHViIHVuc2FmZSB0cmFpdCBBc0J5dGVzIHtcbiAxODA6XHQgICAgLy8vIFJldHVybnMgYHNlbGZgIGFzIGEgc2xpY2Ugb2YgYnl0ZXMuXG4gMTgxOlx0ICAgIGZuIGFzX2J5dGVzKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2W3U4XSB7XG4gMTgyOlx0ICAgICAgICAvLyBDQVNUOiBgU2VsZmAgaW1wbGVtZW50cyBgQXNCeXRlc2AgdGh1cyBhbGwgYnl0ZXMgb2YgYHNlbGZgIGFyZSBpbml0aWFsaXplZC5cbiAxODM6XHQgICAgICAgIGxldCBkYXRhID0gY29yZTo6cHRyOjpmcm9tX3JlZihzZWxmKS5jYXN0OjpcdTAwM2N1OFx1MDAzZSgpO1xuIDE4NDpcdCAgICAgICAgbGV0IGxlbiA9IGNvcmU6Om1lbTo6c2l6ZV9vZl92YWwoc2VsZik7XG4gMTg1Olx0XG4gMTg2Olx0ICAgICAgICAvLyBTQUZFVFk6IGBkYXRhYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHJlYWRzIG9mIGBsZW4gKiBzaXplb2Y6Olx1MDAzY3U4XHUwMDNlKClgIGJ5dGVzLlxuIDE4NzpcdCAgICAgICAgdW5zYWZlIHsgY29yZTo6c2xpY2U6OmZyb21fcmF3X3BhcnRzKGRhdGEsIGxlbikgfVxuIDE4ODpcdCAgICB9XG4gMTg5Olx0XG4gMTkwOlx0ICAgIC8vLyBSZXR1cm5zIGBzZWxmYCBhcyBhIG11dGFibGUgc2xpY2Ugb2YgYnl0ZXMuXG4gMTkxOlx0ICAgIGZuIGFzX2J5dGVzX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgW3U4XVxuIDE5MjpcdCAgICB3aGVyZVxuIDE5MzpcdCAgICAgICAgU2VsZjogRnJvbUJ5dGVzLFxuIDE5NDpcdCAgICB7XG4gMTk1Olx0ICAgICAgICAvLyBDQVNUOiBgU2VsZmAgaW1wbGVtZW50cyBib3RoIGBBc0J5dGVzYCBhbmQgYEZyb21CeXRlc2AgdGh1cyBtYWtpbmcgYFNlbGZgXG4gMTk2Olx0ICAgICAgICAvLyBiaS1kaXJlY3Rpb25hbGx5IHRyYW5zbXV0YWJsZSB0byBgW3U4OyBzaXplX29mX3ZhbChzZWxmKV1gLlxuIDE5NzpcdCAgICAgICAgbGV0IGRhdGEgPSBjb3JlOjpwdHI6OmZyb21fbXV0KHNlbGYpLmNhc3Q6Olx1MDAzY3U4XHUwMDNlKCk7XG4gMTk4Olx0ICAgICAgICBsZXQgbGVuID0gY29yZTo6bWVtOjpzaXplX29mX3ZhbChzZWxmKTtcbiAxOTk6XHRcbiAyMDA6XHQgICAgICAgIC8vIFNBRkVUWTogYGRhdGFgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgcmVhZCBhbmQgd3JpdGVzIG9mIGBsZW4gKiBzaXplb2Y6Olx1MDAzY3U4XHUwMDNlKClgXG4gMjAxOlx0ICAgICAgICAvLyBieXRlcy5cbiAyMDI6XHQgICAgICAgIHVuc2FmZSB7IGNvcmU6OnNsaWNlOjpmcm9tX3Jhd19wYXJ0c19tdXQoZGF0YSwgbGVuKSB9XG4gMjAzOlx0ICAgIH1cbiAyMDQ6XHR9XG4gMjA1Olx0XG4gMjA2Olx0bWFjcm9fcnVsZXMhIGltcGxfYXNieXRlcyB7XG4gMjA3Olx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XHUwMDNlIHtcbiAyMDg6XHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXG4gMjA5Olx0ICAgICAgICAkKHVuc2FmZSBpbXBsJCgkKCRnZW5lcmljcykqKT8gQXNCeXRlcyBmb3IgJHQge30pKlxuIDIxMDpcdCAgICB9O1xuIDIxMTpcdH1cbiAyMTI6XHRcbiAyMTM6XHRpbXBsX2FzYnl0ZXMhIHtcbiAyMTQ6XHQgICAgLy8gU0FGRVRZOiBJbmhhYml0ZWQgWlNUcyBvbmx5IGhhdmUgb25lIHBvc3NpYmxlIGJpdCBwYXR0ZXJuLCBhbmQgdGhlc2UgdHdvIGhhdmUgbm8gaW52YXJpYW50LlxuIDIxNTpcdCAgICAoKSxcbiAyMTY6XHQgICAge1x1MDAzY1RcdTAwM2V9IGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlLFxuIDIxNzpcdFxuIDIxODpcdCAgICAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucy5cbiAyMTk6XHQgICAgdTgsIHUxNiwgdTMyLCB1NjQsIHVzaXplLFxuIDIyMDpcdCAgICBpOCwgaTE2LCBpMzIsIGk2NCwgaXNpemUsXG4gMjIxOlx0ICAgIGJvb2wsXG4gMjIyOlx0ICAgIGNoYXIsXG4gMjIzOlx0ICAgIHN0cixcbiAyMjQ6XHRcbiAyMjU6XHQgICAgLy8gU0FGRVRZOiBJZiBpbmRpdmlkdWFsIHZhbHVlcyBpbiBhbiBhcnJheSBoYXZlIG5vIHVuaW5pdGlhbGl6ZWQgcG9ydGlvbnMsIHRoZW4gdGhlIGFycmF5XG4gMjI2Olx0ICAgIC8vIGl0c2VsZiBkb2VzIG5vdCBoYXZlIGFueSB1bmluaXRpYWxpemVkIHBvcnRpb25zIGVpdGhlci5cbiAyMjc6XHQgICAge1x1MDAzY1Q6IEFzQnl0ZXNcdTAwM2V9IFtUXSxcbiAyMjg6XHQgICAge1x1MDAzY1Q6IEFzQnl0ZXMsIGNvbnN0IE46IHVzaXplXHUwMDNlfSBbVDsgTl0sXG4gMjI5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQxNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBaZXJvY29weSBNaWdyYXRpb24gaW4gdGhlIEtlcm5lbCBDb2RlKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHdoZXJlIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgYXdheSBmcm9tIGB0cmFuc211dGVgJiMzOTtzIGBBc0J5dGVzYCBhbmQgYEZyb21CeXRlc2AgdHJhaXRzLCBhbmQgaW5zdGVhZCwgaXQmIzM5O3MgbGV2ZXJhZ2luZyBgemVyb2NvcHlgJiMzOTtzIGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB0cmFpdHMuIFRoZSBjb3JlIGlkZWEgaXMgdG8gc2ltcGxpZnkgYW5kIHBvdGVudGlhbGx5IGltcHJvdmUgbWVtb3J5IHNhZmV0eSBhbmQgZWZmaWNpZW5jeSBieSB1c2luZyBgemVyb2NvcHlgIGZvciBzYWZlLCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgYmV0d2VlbiBSdXN0IGRhdGEgc3RydWN0dXJlcyBhbmQgYnl0ZSByZXByZXNlbnRhdGlvbnMsIGEgd2VsbCBlc3RhYmxpc2hlZCBwYXR0ZXJuLgoKU3BlY2lmaWNhbGx5LCBpbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGltcG9ydGluZyBgdHJhbnNtdXRlOjp7QXNCeXRlcywgRnJvbUJ5dGVzfWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSB1bnVzZWQgaW1wb3J0cyBhbmQgdXBkYXRlcyB0byBgSW50b0J5dGVzYCBhbmQgdGhlIGBGcm9tQnl0ZXNgIHRoYXQgaXMgcGFydCBvZiB0aGUgYHByZWx1ZGVgLCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBvcmlnaW5hdGVzIGZyb20gYHplcm9jb3B5YC4KCkEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYgcmV2ZWFscyB0aGUgY2hhbmdlcyBpbiBgcnVzdC9rZXJuZWwvZG1hLnJzYDogIGBDb2hlcmVudEJveGAgYW5kIGBDb2hlcmVudGAgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlZCB0byByZXF1aXJlIGBBc0J5dGVzICYjNDM7IEZyb21CeXRlc2Agbm93IHJlcXVpcmUgYEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNgLCBpbmRpY2F0aW5nIHRoZSBzaGlmdC4gQWRkaXRpb25hbGx5LCB0aGUgYHdyaXRlX2RtYWAgZnVuY3Rpb24gYW5kIGB3cml0ZWAgbWV0aG9kcyBpbiBgVXNlclNsaWNlV3JpdGVyYCBhcmUgYWxzbyB1cGRhdGVkIHRvIHVzZSBgSW50b0J5dGVzYC4gU2ltaWxhcmx5LCB0aGUgYEdlbmxNc2c6OnB1dGAgbWV0aG9kIGluIGBuZXRsaW5rLnJzYCBub3cgdXNlcyBgSW50b0J5dGVzYCBpbnN0ZWFkIG9mIGBBc0J5dGVzYC4KCk15IG5leHQgc3RlcCB3b3VsZCBiZSB0byByZXZpZXcgdGhlIGBnaXQgbG9nYCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCBvZiB0aGUgY2hhbmdlIHRvIHVuZGVyc3RhbmQgdGhlIG1vdGl2YXRpb25zIGFuZCBhbnkgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSYjMzk7ZCBhbHNvIHNlYXJjaCBmb3IgcGxhY2VzIHdoZXJlIGBDb2hlcmVudEJveGAsIGB3cml0ZV9kbWFgLCBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAsIGFuZCBgR2VubE1zZzo6cHV0YCBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgY29kZWJhc2UgaXMgY29uc2lzdGVudCBhbmQgdGhhdCB0aGUgY2hhbmdlIGhhc24mIzM5O3QgaW50cm9kdWNlZCBhbnkgcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcywgZXNwZWNpYWxseSByZWxhdGVkIHRvIERNQSBhbmQgdXNlciBzcGFjZSBtZW1vcnkgYWNjZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDb2hlcmVudEJveCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEyLSAgICAgICAgRG1hQWRkcmVzcywgLy9cbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzPTU5Nj0gICAgZm4gZG1hX2xvYWRcdTAwM2NGOiBGYWxjb25GaXJtd2FyZVx1MDAzY1RhcmdldCA9IEVcdTAwM2UgJiM0MzsgRmFsY29uRG1hTG9hZGFibGVcdTAwM2UoXHUwMDI2c2VsZiwgZnc6IFx1MDAyNkYpIC1cdTAwM2UgUmVzdWx0IHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwMi0gICAgICAgICAgICAvLyBhY2NvcmRpbmdseSBhbmQgZmlsbCB3aXRoIGAwYC5cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnM6NjAzOiAgICAgICAgICAgIGxldCBtdXQgZG1hX29iaiA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwNC0gICAgICAgICAgICAgICAgc2VsZi5kZXYsXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycy02LSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzOjc6ICAgICAgICBDb2hlcmVudEJveCxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtOC0gICAgICAgIERhdGFEaXJlY3Rpb24sXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycz03MD0gICAgcHViKGNyYXRlKSBmbiBuZXdcdTAwM2MmIzM5O2FcdTAwM2UoXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycy0xMjItICAgICAgICAgICAgICAgICAgICAvLyB0YWJsZS5cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6MTIzOiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsZXZlbDAgPSBDb2hlcmVudEJveDo6XHUwMDNjW3U2NF1cdTAwM2U6Onplcm9lZF9zbGljZShcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtMTI0LSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTEyLSAgICAgICAgQ29oZXJlbnRWaWV3LFxuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM9MTY0PSAgICBwdWIoY3JhdGUpIGZuIG5ldyhwZGV2OiBcdTAwMjZwY2k6OkRldmljZVx1MDAzY2RldmljZTo6Qm91bmRcdTAwM2UpIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZiwgRXJyb3JcdTAwM2UgJiM0MzsgJiMzOTtfIHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE3OC0gICAgICAgICAgICAgICAgbGlib3M6IHtcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM6MTc5OiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsaWJvcyA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE4MC0gICAgICAgICAgICAgICAgICAgICAgICBkZXYsXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzLTE2LSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM6MTc6ICAgICAgICBDb2hlcmVudEJveCxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xOC0gICAgICAgIERtYUFkZHJlc3MsIC8vXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzPTIzNz0gICAgZm4gbmV3KGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NkZXZpY2U6OkJvdW5kXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0yNDAtXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM6MjQxOiAgICAgICAgbGV0IG11dCBnc3BfbWVtID0gQ29oZXJlbnRCb3g6Olx1MDAzY0dzcE1lbVx1MDAzZTo6emVyb2VkKGRldiwgR0ZQX0tFUk5FTCk/O1xuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzLTI0Mi0gICAgICAgIGdzcF9tZW0uY3B1cS50eCA9IE1zZ3FUeEhlYWRlcjo6bmV3KE1TR1FfU0laRSwgUlhfSERSX09GRiwgTVNHUV9OVU1fUEFHRVMpO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz0zNTY9ICAgIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXHUwMDNlIFNlbGYge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zNjYtLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6MzY3Oi8vLyBVbmxpa2UgW2BDb2hlcmVudGBdLCBhIFtgQ29oZXJlbnRCb3hgXSBpcyBndWFyYW50ZWVkIHRvIGJlIGZ1bGx5IG93bmVkIGJ5IHRoZSBDUFUgLS0gaXRzIERNQVxucnVzdC9rZXJuZWwvZG1hLnJzLTM2OC0vLy8gYWRkcmVzcyBpcyBub3QgZXhwb3NlZCBhbmQgaXQgY2Fubm90IGJlIGFjY2Vzc2VkIGJ5IGEgZGV2aWNlLiBUaGlzIG1lYW5zIGl0IGNhbiBzYWZlbHkgYmUgdXNlZFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzAtLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6MzcxOi8vLyBBIHR5cGljYWwgdXNlIGlzIHRvIGFsbG9jYXRlIGEgW2BDb2hlcmVudEJveGBdLCBwb3B1bGF0ZSBpdCB3aXRoIG5vcm1hbCBDUFUgYWNjZXNzLCBhbmQgdGhlblxucnVzdC9rZXJuZWwvZG1hLnJzLTM3Mi0vLy8gY29udmVydCBpdCBpbnRvIGEgW2BDb2hlcmVudGBdIG9iamVjdCB0byBzaGFyZSBpdCB3aXRoIHRoZSBkZXZpY2UuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTM3NS0vLy9cbnJ1c3Qva2VybmVsL2RtYS5yczozNzY6Ly8vIGBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VgOlxucnVzdC9rZXJuZWwvZG1hLnJzLTM3Ny0vLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg0LS8vLyAgICAgQ29oZXJlbnQsXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg1Oi8vLyAgICAgQ29oZXJlbnRCb3gsXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg2LS8vLyB9O1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zODgtLy8vICMgZm4gdGVzdChkZXY6IFx1MDAyNkRldmljZVx1MDAzY0JvdW5kXHUwMDNlKSAtXHUwMDNlIFJlc3VsdCB7XG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg5Oi8vLyBsZXQgbXV0IGRtZW06IENvaGVyZW50Qm94XHUwMDNjdTY0XHUwMDNlID0gQ29oZXJlbnRCb3g6Onplcm9lZChkZXYsIEdGUF9LRVJORUwpPztcbnJ1c3Qva2VybmVsL2RtYS5ycy0zOTAtLy8vICpkbWVtID0gNDI7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTM5NC0vLy9cbnJ1c3Qva2VybmVsL2RtYS5yczozOTU6Ly8vIGBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZWA6XG5ydXN0L2tlcm5lbC9kbWEucnMtMzk2LS8vL1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00MDQtLy8vICAgICBDb2hlcmVudCxcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDU6Ly8vICAgICBDb2hlcmVudEJveCxcbnJ1c3Qva2VybmVsL2RtYS5ycy00MDYtLy8vIH07XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQwOC0vLy8gIyBmbiB0ZXN0KGRldjogXHUwMDI2RGV2aWNlXHUwMDNjQm91bmRcdTAwM2UpIC1cdTAwM2UgUmVzdWx0IHtcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDk6Ly8vIGxldCBtdXQgZG1lbTogQ29oZXJlbnRCb3hcdTAwM2NbdTY0XVx1MDAzZSA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoZGV2LCA0LCBHRlBfS0VSTkVMKT87XG5ydXN0L2tlcm5lbC9kbWEucnMtNDEwLS8vLyBkbWVtLmZpbGwoNDIpO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00MTMtLy8vIGBgYFxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNDpwdWIgc3RydWN0IENvaGVyZW50Qm94XHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xucnVzdC9rZXJuZWwvZG1hLnJzLTQxNS1cbnJ1c3Qva2VybmVsL2RtYS5yczo0MTY6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NbVF1cdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzOjQxNzogICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE4LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2RtYS5ycz00MTk9ICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDI3LVxucnVzdC9rZXJuZWwvZG1hLnJzOjQyODogICAgLy8vIFNhbWUgYXMgW0NvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc10sIGJ1dCB3aXRoIGBkbWE6OkF0dHJzKDApYC5cbnJ1c3Qva2VybmVsL2RtYS5ycy00MjktICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz00NDE9ICAgIHB1YiBmbiBpbml0X2F0XHUwMDNjRVx1MDAzZShcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFx1MDAzY1QsIEVcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQ2My0gICAgLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6NDY0OiAgICAvLy8gVGhpcyBpcyB0aGUgW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0uXG5ydXN0L2tlcm5lbC9kbWEucnMtNDY1LSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDczLSAgICAvLy8gICAgIGF0dHJzOjoqLFxucnVzdC9rZXJuZWwvZG1hLnJzOjQ3NDogICAgLy8vICAgICBDb2hlcmVudEJveFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3NS0gICAgLy8vIH07XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3OC0gICAgLy8vIGxldCBkYXRhID0gWzB1OCwgMXU4LCAydTgsIDN1OF07XG5ydXN0L2tlcm5lbC9kbWEucnM6NDc5OiAgICAvLy8gbGV0IGM6IENvaGVyZW50Qm94XHUwMDNjW3U4XVx1MDAzZSA9XG5ydXN0L2tlcm5lbC9kbWEucnM6NDgwOiAgICAvLy8gICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBcdTAwMjZkYXRhLCBHRlBfS0VSTkVMLCBETUFfQVRUUl9OT19XQVJOKT87XG5ydXN0L2tlcm5lbC9kbWEucnMtNDgxLSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NDg1PSAgICBwdWIgZm4gZnJvbV9zbGljZV93aXRoX2F0dHJzKFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01MDYtXG5ydXN0L2tlcm5lbC9kbWEucnM6NTA3OiAgICAvLy8gUGVyZm9ybXMgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBhcyBbYENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnNgXSwgZXhjZXB0IHRoZVxucnVzdC9rZXJuZWwvZG1hLnJzLTUwOC0gICAgLy8vIGBkbWFfYXR0cnNgIGlzIDAgYnkgZGVmYXVsdC5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NTEwPSAgICBwdWIgZm4gZnJvbV9zbGljZShcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNTIxLVxucnVzdC9rZXJuZWwvZG1hLnJzOjUyMjppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzOjUyMzogICAgLy8vIFNhbWUgYXMgW2BDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXSwgYnV0IGZvciBhIHNpbmdsZSBlbGVtZW50LlxucnVzdC9rZXJuZWwvZG1hLnJzLTUyNC0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM9NTI1PSAgICBwdWIgZm4gemVyb2VkX3dpdGhfYXR0cnMoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTUzMi1cbnJ1c3Qva2VybmVsL2RtYS5yczo1MzM6ICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZWBdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXG5ydXN0L2tlcm5lbC9kbWEucnMtNTM0LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2RtYS5ycz01MzU9ICAgIHB1YiBmbiB6ZXJvZWQoZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLCBnZnBfZmxhZ3M6IGtlcm5lbDo6YWxsb2M6OkZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01MzktXG5ydXN0L2tlcm5lbC9kbWEucnM6NTQwOmltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIERlcmVmIGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU0MS0gICAgdHlwZSBUYXJnZXQgPSBUO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNTUyLVxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU1NC0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTU2My1cbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBGcm9tXHUwMDNjQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM6NTY2OiAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNTY3LSAgICAgICAgdmFsdWUuMFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz04ODE9ICAgIHB1YiBmbiBmcm9tX3NsaWNlX3dpdGhfYXR0cnMoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTg4OS0gICAge1xucnVzdC9rZXJuZWwvZG1hLnJzOjg5MDogICAgICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBkYXRhLCBnZnBfZmxhZ3MsIGRtYV9hdHRycykubWFwKEludG86OmludG8pXG5ydXN0L2tlcm5lbC9kbWEucnMtODkxLSAgICB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDMyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGFyb3VuZCBgQ29oZXJlbnRCb3hgLCBzcGVjaWZpY2FsbHkgd2hlcmUgaXQmIzM5O3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBgbm92YS1jb3JlYCBkcml2ZXIuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBlaXRoZXIgYW4gb3V0LW9mLXRyZWUsIHN0YWdpbmcsIG9yIGV4cGVyaW1lbnRhbCBHUFUgZHJpdmVyLiBTbywgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvZ3B1L25vdmEtY29yZS9gIGRpcmVjdG9yeSBhbmQgbG9vayBmb3IgYW55IGRpcmVjdCB1c2VzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIGRvIGEgYnJvYWRlciBzY2FuIG9mIG90aGVyIGxpa2VseSBsb2NhdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpUaGVuLCB3YWl0IGEgc2Vjb25kLCBJIHNob3VsZCBjaGVjayB0aGUgUnVzdCBrZXJuZWwgY29kZS4gSSYjMzk7bSB0aGlua2luZyBvZiBgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgIGFuZCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AsIGJlY2F1c2UgdGhvc2Ugc2VlbSBsaWtlIGxpa2VseSBzcG90cyB3aGVyZSBzb21ldGhpbmcgbGlrZSBgQ29oZXJlbnRCb3hgIG1pZ2h0IGJlIHV0aWxpemVkLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgb3IgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGhlcmU7IGl0JiMzOTtzIGVhc3kgdG8gZ2V0IHR1bm5lbCB2aXNpb24uCgpGaW5hbGx5LCB3aGlsZSBJJiMzOTttIGluIHNlYXJjaCBtb2RlLCBJJiMzOTtsbCBzd2l0Y2ggZ2VhcnMgdG8gZXhhbWluZSB0aGUgYnJvYWRlciBrZXJuZWwgdG8gc2VlIHdoZXJlIGBVc2VyU2xpY2VXcml0ZXJgIGFuZCBgR2VubE1zZ2AgYXJlIGJlaW5nIHVzZWQuIFRoZXNlIG1pZ2h0IHBvaW50IHRvIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyB0aGF0IEkgbWlnaHQgd2FudCB0byBleGFtaW5lLiBLZWVwaW5nIHRyYWNrIG9mIHRob3NlIHJlZmVyZW5jZXMgaXMga2V5IHRvIHNlZWluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0dlbmxNc2cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzLTctICAgICAgICBGYW1pbHksXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM6ODogICAgICAgIEdlbmxNc2csXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnMtOS0gICAgICAgIE11bHRpY2FzdEdyb3VwLFxuLS1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycz0yOD1wdWIgc3RydWN0IFJlcG9ydCB7XG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM6Mjk6ICAgIHNrYjogR2VubE1zZyxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy0zMC19XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NDk9ICAgIHB1YiBmbiBnZW5sbXNnX3B1dChcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy01NC0gICAgICAgIGNtZDogdTgsXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczo1NTogICAgKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0dlbmxNc2csIEFsbG9jRXJyb3JcdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTYtICAgICAgICBsZXQgc2tiID0gc2VsZi5za2IuYXNfcHRyKCk7XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTktICAgICAgICBsZXQgaGRyID0gTm9uTnVsbDo6bmV3KGhkcikub2tfb3IoQWxsb2NFcnJvcik/O1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NjA6ICAgICAgICBPayhHZW5sTXNnIHsgc2tiOiBzZWxmLCBoZHIgfSlcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTYxLSAgICB9XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NjU9ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy03NS0vLy8gYGhkcmAgcmVmZXJlbmNlcyB0aGUgaGVhZGVyIGluIHRoaXMgbmV0bGluayBtZXNzYWdlLlxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NzY6cHViIHN0cnVjdCBHZW5sTXNnIHtcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTc3LSAgICBza2I6IE5ldGxpbmtTa0J1ZmYsXG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODAtXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczo4MTppbXBsIEdlbmxNc2cge1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODItICAgIC8vLyBQdXRzIGFuIGF0dHJpYnV0ZSBpbnRvIHRoZSBtZXNzYWdlLlxuLS1cbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzPTExOT0gICAgcHViIGZuIG11bHRpY2FzdChcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDAtfVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6MTQxOmltcGwgRHJvcCBmb3IgR2VubE1zZyB7XG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDItICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NDYxPWRlZiBfZ2VubF9sb2FkX2ZhbWlsaWVzKCk6XG4tLVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTQ4Mi1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weTo0ODM6ICAgICAgICAgICAgICAgIGdtID0gR2VubE1zZyhubF9tc2cpXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNDg0LSAgICAgICAgICAgICAgICBmYW0gPSB7fVxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weT01MDk9ZGVmIF9nZW5sX3BvbGljeV9kdW1wKGZhbWlseV9pZCwgb3ApOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01MzMtXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTM0OiAgICAgICAgICAgICAgICBnbSA9IEdlbmxNc2cobmxfbXNnKVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTUzNS0gICAgICAgICAgICAgICAgZm9yIGF0dHIgaW4gTmxBdHRycyhnbS5yYXcpOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTMtXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTU0OmNsYXNzIEdlbmxNc2c6XG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNTU1LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmxfbXNnKTpcbi0tXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NjA2PWNsYXNzIEdlbmxQcm90b2NvbChOZXRsaW5rUHJvdG9jb2wpOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS02MjMtICAgIGRlZiBfZGVjb2RlKHNlbGYsIG5sX21zZyk6XG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NjI0OiAgICAgICAgcmV0dXJuIEdlbmxNc2cobmxfbXNnKVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTYyNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NDYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzOgoKKipEaWdnaW5nIGludG8gTmV0bGluayBhbmQgVXNlciBNZW1vcnkgQWNjZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgdXNlci1zcGFjZSBtZW1vcnkgYWNjZXNzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgYGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5yc2AgYmVjYXVzZSBJIHJlY2FsbCB0aGF0IHVzaW5nIGBHZW5sTXNnYCBpcyByZWxldmFudCBoZXJlLiBOZXh0LCBJIHdhbnQgdG8gcGl2b3QgdG8gdGhlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIGRhdGEgdHJhbnNmZXJzLiBJJiMzOTtsbCBmb2N1cyBvbiBgdWFjY2Vzcy5yc2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYFVzZXJTbGljZVdyaXRlcjo6d3JpdGVgIGFuZCBgd3JpdGVfZG1hYCBhcmUgYmVpbmcgY2FsbGVkLCBhcyB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBob2xkIHRoZSBjcml0aWNhbCBvcGVyYXRpb25zIGZvciB3cml0aW5nIGludG8gdXNlciBtZW1vcnkgc3BhY2UuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2tzIG9yIGFyZWFzIHdoZXJlIHdlIG1pZ2h0IGJlIHNlZWluZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgb3IgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBuZXR3b3JrIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VzZXJTbGljZVdyaXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMjMtICAgIHR5cGVzOjpGb3JlaWduT3duYWJsZSxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoyNDogICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTI1LX07XG4tLVxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzPTk4PWZuIG5leHRfZGVidWdfaWQoKSAtXHUwMDNlIHVzaXplIHtcbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA0LS8vLyBQcm92aWRlcyBhIHNpbmdsZSBwbGFjZSB0byB3cml0ZSBCaW5kZXIgcmV0dXJuIHZhbHVlcyB2aWEgdGhlXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM6MTA1Oi8vLyBzdXBwbGllZCBgVXNlclNsaWNlV3JpdGVyYC5cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0xMDYtcHViKGNyYXRlKSBzdHJ1Y3QgQmluZGVyUmV0dXJuV3JpdGVyXHUwMDNjJiMzOTthXHUwMDNlIHtcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoxMDc6ICAgIHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTEwOC0gICAgdGhyZWFkOiBcdTAwMjYmIzM5O2EgVGhyZWFkLFxuLS1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycz0xMTE9aW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBCaW5kZXJSZXR1cm5Xcml0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzOjExMjogICAgZm4gbmV3KHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLCB0aHJlYWQ6IFx1MDAyNiYjMzk7YSBUaHJlYWQpIC1cdTAwM2UgU2VsZiB7XG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTEzLSAgICAgICAgQmluZGVyUmV0dXJuV3JpdGVyIHsgd3JpdGVyLCB0aHJlYWQgfVxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTIyLSAgICAgICAgVXNlclNsaWNlUmVhZGVyLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjM6ICAgICAgICBVc2VyU2xpY2VXcml0ZXIsIC8vXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNC0gICAgfSxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz03MD0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy03MS0gICAgICAgIFx1MDAyNnNlbGYsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3MjogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTczLSAgICAgICAgb2Zmc2V0OiBcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTc5PSAgICBmbiB3cml0ZV90b19zbGljZShcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgwLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjgxOiAgICAgICAgd3JpdGVyOiBcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtODItICAgICAgICBvZmZzZXQ6IFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9OTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtOTEtICAgICAgICBcdTAwMjZzZWxmLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6OTI6ICAgICAgICB3cml0ZXI6IFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05My0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMDc9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTA4LSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEwOTogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTExMC0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMjI9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTIzLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEyNDogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEyNS0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMzY9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTM3LSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEzODogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEzOS0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xNTE9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTUyLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjE1MzogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE1NC0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtMjctICAgIHN5bmM6OmFyZWY6OkFSZWYsXG5ydXN0L2tlcm5lbC9kbWEucnM6Mjg6ICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cbnJ1c3Qva2VybmVsL2RtYS5ycy0yOS19O1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz05NTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1MS0gICAgICAgIFx1MDAyNnNlbGYsXG5ydXN0L2tlcm5lbC9kbWEucnM6OTUyOiAgICAgICAgd3JpdGVyOiBcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1My0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTYwPSAgICBwdWIgZm4gd3JhcHBpbmdfYnl0ZV9hZGQoc2VsZiwgYWRkOiB1c2l6ZSkgLVx1MDAzZSBVc2VyUHRyIHtcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTgwLS8vL1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo4MTovLy8gQ3JlYXRpbmcgYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZC9vciBbYFVzZXJTbGljZVdyaXRlcmBdIGNvbnN1bWVzIHRoZSBgVXNlclNsaWNlYCwgaGVscGluZ1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy04Mi0vLy8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBtdWx0aXBsZSByZWFkZXJzIG9yIHdyaXRlcnMgdG8gdGhlIHNhbWUgbG9jYXRpb24uXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0xNzg9ICAgIHB1YiBmbiByZWFkZXIoc2VsZikgLVx1MDAzZSBVc2VyU2xpY2VSZWFkZXIge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTg0LVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxODU6ICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg2OiAgICBwdWIgZm4gd3JpdGVyKHNlbGYpIC1cdTAwM2UgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg3OiAgICAgICAgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTg4LSAgICAgICAgICAgIHB0cjogc2VsZi5wdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTItXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE5MzogICAgLy8vIENvbnN0cnVjdHMgYm90aCBhIFtgVXNlclNsaWNlUmVhZGVyYF0gYW5kIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk0LSAgICAvLy9cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk1LSAgICAvLy8gVXN1YWxseSB3aGVuIHRoaXMgaXMgdXNlZCwgeW91IHdpbGwgZmlyc3QgcmVhZCB0aGUgZGF0YSwgYW5kIHRoZW4gb3ZlcndyaXRlIGl0IGFmdGVyd2FyZHMuXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE5NjogICAgcHViIGZuIHJlYWRlcl93cml0ZXIoc2VsZikgLVx1MDAzZSAoVXNlclNsaWNlUmVhZGVyLCBVc2VyU2xpY2VXcml0ZXIpIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk3LSAgICAgICAgKFxuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMjAxLSAgICAgICAgICAgIH0sXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjIwMjogICAgICAgICAgICBVc2VyU2xpY2VXcml0ZXIge1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0yMDMtICAgICAgICAgICAgICAgIHB0cjogc2VsZi5wdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0zOTE9ICAgIHB1YiBmbiBzdHJjcHlfaW50b19idWZcdTAwM2MmIzM5O2J1Zlx1MDAzZShzZWxmLCBidWY6IFx1MDAyNiYjMzk7YnVmIG11dCBbdThdKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1x1MDAyNiYjMzk7YnVmIENTdHJcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ0LS8vLyBVc2VkIHRvIGluY3JlbWVudGFsbHkgd3JpdGUgaW50byB0aGUgdXNlciBzbGljZS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDQ1OnB1YiBzdHJ1Y3QgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ2LSAgICBwdHI6IFVzZXJQdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00NDktXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjQ1MDppbXBsIFVzZXJTbGljZVdyaXRlciB7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ1MS0gICAgLy8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSByZW1haW5pbmcgaW4gdGhpcyBidWZmZXIuXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00Njg9ICAgIHVuc2FmZSBmbiB3cml0ZV9yYXcoXHUwMDI2bXV0IHNlbGYsIGZyb206ICpjb25zdCB1OCwgbGVuOiB1c2l6ZSkgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDg2LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo0ODc6ICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00ODgtICAgIC8vLyBpZiBpdCByZXR1cm5zIGFuIGVycm9yLlxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00ODk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZShcdTAwMjZtdXQgc2VsZiwgZGF0YTogXHUwMDI2W3U4XSkgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTA0LSAgICAvLy8gLSBbYEVGQVVMVGBdOiB0aGUgd3JpdGUgaGl0cyBhIGJhZCBhZGRyZXNzIG9yIGdvZXMgb3V0IG9mIGJvdW5kcyBvZiB0aGlzXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUwNTogICAgLy8vICAgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTA2LSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxNi0gICAgLy8vIGBgYG5vX3J1blxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1MTc6ICAgIC8vLyB1c2Uga2VybmVsOjp1YWNjZXNzOjpVc2VyU2xpY2VXcml0ZXI7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxOC0gICAgLy8vIHVzZSBrZXJuZWw6OmRtYTo6Q29oZXJlbnQ7XG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjAtICAgIC8vLyBmbiBjb3B5X2RtYV90b191c2VyKFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1MjE6ICAgIC8vLyAgICAgbXV0IHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjItICAgIC8vLyAgICAgYWxsb2M6IFx1MDAyNkNvaGVyZW50XHUwMDNjW3U4XVx1MDAzZSxcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTU3OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0sIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1c2l6ZVx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01OTgtICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjU5OTogICAgLy8vIGJvdW5kcyBvZiB0aGlzIFtgVXNlclNsaWNlV3JpdGVyYF0uIFRoaXMgY2FsbCBtYXkgbW9kaWZ5IHRoZSBhc3NvY2lhdGVkIHVzZXJzcGFjZSBzbGljZSBldmVuXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMTI3LSAgICAgICAgVXNlclNsaWNlUmVhZGVyLFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MTI4OiAgICAgICAgVXNlclNsaWNlV3JpdGVyLCAvL1xuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMTI5LSAgICB9LFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzPTI1NT0gICAgZm4gc2V0X3ZhbHVlKFx1MDAyNnNlbGYsIG11dCByZWFkZXI6IFVzZXJTbGljZVJlYWRlcikgLVx1MDAzZSBSZXN1bHRcdTAwM2Npc2l6ZVx1MDAzZSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMjY4LVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MjY5OiAgICBmbiBnZXRfdmFsdWUoXHUwMDI2c2VsZiwgbXV0IHdyaXRlcjogVXNlclNsaWNlV3JpdGVyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY2lzaXplXHUwMDNlIHtcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTI3MC0gICAgICAgIGxldCBndWFyZCA9IHNlbGYuaW5uZXIubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI4NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgbG90IG9mIGNoYW5nZXMgdGhhdCBzZWVtIHJlbGF0ZWQuIEZpcnN0LCBJIHNlZSBtb2RpZmljYXRpb25zIGFjcm9zcyBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCB0aGUgdHJhaXQgYm91bmRzIGludm9sdmluZyBgQXNCeXRlc2AgYXJlIGJlaW5nIHJlcGxhY2VkIHdpdGggYEludG9CeXRlc2AuIEkgc2VlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKCiogICBJbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgaXQgbG9va3MgbGlrZSBpbnN0YW5jZXMgb2YgYFQ6IEFzQnl0ZXNgIGhhdmUgY2hhbmdlZCB0byBgVDogSW50b0J5dGVzYCwgYW5kIHNpbWlsYXIgY2hhbmdlcyBhcmUgYXBwbGllZCB3aGVyZSBgQXNCeXRlc2AgaXMgcHJlc2VudC4KKiAgIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYWxzbyBzaG93cyBhIHNpbWlsYXIgc3dhcCB3aXRoIGBHZW5sTXNnOjpwdXQmbHQ7VCZndDtgLgoqICAgRmluYWxseSwgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgIGhhcyBhbHNvIHJlcGxhY2VkIGBBc0J5dGVzYCB3aXRoIGBJbnRvQnl0ZXNgIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIGZvciBgd3JpdGVfZG1hYCBhbmQgYHdyaXRlYC4KCldhaXQsIHRoaXMgc2VlbXMgZmFtaWxpYXIuLi4gd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBJbnRvQnl0ZXNgIHZlcnN1cyBgQXNCeXRlc2A/IE9oIHJpZ2h0ISBJbiB6ZXJvY29weSAwLjgmIzQzOywgdGhlIGBBc0J5dGVzYCB0cmFpdCB3YXMgcmVuYW1lZCB0byBgSW50b0J5dGVzYC4gQmVmb3JlIHRoaXMgY29tbWl0LCB0aGUga2VybmVsJiMzOTtzIGNvZGUgc2VlbXMgdG8gaGF2ZSBiZWVuIGVpdGhlciB1c2luZyBpdHMgb3duIGB0cmFuc211dGU6OkFzQnl0ZXNgIC8gYHRyYW5zbXV0ZTo6RnJvbUJ5dGVzYCBpbXBsZW1lbnRhdGlvbiBvciwgaXQgbG9va3MgbGlrZSwgd2FzIGFkb3B0aW5nIHRoZSB6ZXJvY29weSBsaWJyYXJ5LiBMZXQgbWUgZG91YmxlLWNoZWNrIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgIGFuZCBjb21wYXJlIGl0IHdpdGggdGhlIHplcm9jb3B5IGNvZGUuIEFoLCB5ZXMsIGJlZm9yZSB0aGlzIGNvbW1pdCwgdGhlc2UgZmlsZXMgd2VyZSBpbXBvcnRpbmcgYHRyYW5zbXV0ZTo6QXNCeXRlc2AsIGJ1dCBub3cgdGhleSBhcmUgaW1wb3J0aW5nIGB6ZXJvY29weTo6SW50b0J5dGVzYCB0aHJvdWdoIHRoZSBwcmVsdWRlLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGp1c3QgcmVwcmVzZW50IGEgcmVuYW1lIG9mIHRoZSB0cmFpdCwgb3IgaXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZD8gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbiBib2RpZXMgdGhlbXNlbHZlczogYHdyaXRlYCwgYHdyaXRlX2RtYWAsIGBwdXRgLCBhbmQgdGhlIGBDb2hlcmVudEJveGAgbWV0aG9kcywgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCBsaW5lcyA1OTUtNjEwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHJlbWFpbnMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTk1Olx0XG4gNTk2Olx0ICAgIC8vLyBXcml0ZXMgdGhlIHByb3ZpZGVkIFJ1c3QgdmFsdWUgdG8gdGhpcyB1c2Vyc3BhY2UgcG9pbnRlci5cbiA1OTc6XHQgICAgLy8vXG4gNTk4Olx0ICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG4gNTk5Olx0ICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxuIDYwMDpcdCAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbiA2MDE6XHQgICAgcHViIGZuIHdyaXRlXHUwMDNjVDogSW50b0J5dGVzXHUwMDNlKFx1MDAyNm11dCBzZWxmLCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHQge1xuIDYwMjpcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiA2MDM6XHQgICAgICAgIGlmIGxlbiBcdTAwM2Ugc2VsZi5sZW5ndGgge1xuIDYwNDpcdCAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcbiA2MDU6XHQgICAgICAgIH1cbiA2MDY6XHQgICAgICAgIC8vIFNBRkVUWTogVGhlIHJlZmVyZW5jZSBwb2ludHMgdG8gYSB2YWx1ZSBvZiB0eXBlIGBUYCwgc28gaXQgaXMgdmFsaWQgZm9yIHJlYWRpbmdcbiA2MDc6XHQgICAgICAgIC8vIGBzaXplX29mOjpcdTAwM2NUXHUwMDNlKClgIGJ5dGVzLlxuIDYwODpcdCAgICAgICAgLy9cbiA2MDk6XHQgICAgICAgIC8vIEJ5IHVzaW5nIHRoZSBfY29weV90b191c2VyIHZhcmlhbnQsIHdlIHNraXAgdGhlIGNoZWNrX29iamVjdF9zaXplIGNoZWNrIHRoYXQgdmVyaWZpZXMgdGhlXG4gNjEwOlx0ICAgICAgICAvLyBrZXJuZWwgcG9pbnRlci4gVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBvbiB0aGUgQyBzaWRlIHRoYXQgc2tpcHMgdGhlIGNoZWNrIHdoZW4gdGhlIGxlbmd0aFxuIDYxMTpcdCAgICAgICAgLy8gaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXG4gNjEyOlx0ICAgICAgICBsZXQgcmVzID0gdW5zYWZlIHtcbiA2MTM6XHQgICAgICAgICAgICBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcihcbiA2MTQ6XHQgICAgICAgICAgICAgICAgc2VsZi5wdHIuYXNfbXV0X3B0cigpLFxuIDYxNTpcdCAgICAgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcdTAwM2NjX3ZvaWRcdTAwM2UoKSxcbiA2MTY6XHQgICAgICAgICAgICAgICAgbGVuLFxuIDYxNzpcdCAgICAgICAgICAgIClcbiA2MTg6XHQgICAgICAgIH07XG4gNjE5Olx0ICAgICAgICBpZiByZXMgIT0gMCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzI0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBSdXN0IEtlcm5lbCBEYXRhIFRyYW5zZmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgLCBzcGVjaWZpY2FsbHkgdGhlIGB3cml0ZWAgZnVuY3Rpb24uIEl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDsgaXQgYWNjZXB0cyBhIHJlZmVyZW5jZSB0byBhIHZhbHVlLCBgdmFsdWU6ICZhbXA7VGAsIGFuZCB0aGVuIGNhbGxzIGBfY29weV90b191c2VyYCB3aXRoIGEgc2l6ZSBkZXRlcm1pbmVkIGJ5IGBzaXplX29mOjombHQ7VCZndDsoKWAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBUOiBJbnRvQnl0ZXNgIHRyYWl0IGJvdW5kLiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgY29tcGlsZS10aW1lIHNhZmV0eSBjaGVjaywgZW5zdXJpbmcgdGhhdCB3aGF0ZXZlciBkYXRhIHR5cGUgYFRgIGlzLCBpdCBjYW4gYmUgc2FmZWx5IHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcy4gSSBhcHByZWNpYXRlIHRoaXMg4oCTIGF2b2lkaW5nIHBhZGRpbmcgaXNzdWVzIGFuZCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtcyBhdCBydW50aW1lIGlzIGNydWNpYWwgZm9yIGtlcm5lbC1sZXZlbCBtZW1vcnkgbWFuaXB1bGF0aW9uLiBJdCBoZWxwcyBlbnN1cmUgdGhhdCBhbnkgdHlwZSB0aGF0IGlzIHNlbnQgaXMgaW4gdGhlIG1vc3QgaWRlYWwgZm9ybWF0LgoKTmV4dCwgSSYjMzk7bGwgc3dpdGNoIGdlYXJzIGFuZCBleGFtaW5lIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AsIGxpbmVzIDgwLTEwMC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgZGF0YSBtb3ZlbWVudCBpbiB0aGUgbmV0d29yayBsYXllci4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIGBJbnRvQnl0ZXNgIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBtb3JlIGNvbXBsZXggY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcbiAgODE6XHRpbXBsIEdlbmxNc2cge1xuICA4MjpcdCAgICAvLy8gUHV0cyBhbiBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cbiAgODM6XHQgICAgI1tpbmxpbmVdXG4gIDg0Olx0ICAgIGZuIHB1dFx1MDAzY1RcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0XG4gIDg1Olx0ICAgIHdoZXJlXG4gIDg2Olx0ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxuICA4NzpcdCAgICB7XG4gIDg4Olx0ICAgICAgICBsZXQgc2tiID0gc2VsZi5za2Iuc2tiLmFzX3B0cigpO1xuICA4OTpcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcbiAgOTA6XHQgICAgICAgIGxldCBwdHIgPSBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcdTAwM2NjX3ZvaWRcdTAwM2UoKTtcbiAgOTE6XHQgICAgICAgIC8vIFNBRkVUWTogYHNrYmAgaXMgdmFsaWQgYnkgYE5ldGxpbmtTa0J1ZmZgIHR5cGUgaW52YXJpYW50cywgYW5kIHRoZSBwcm92aWRlZCB2YWx1ZSBpc1xuICA5MjpcdCAgICAgICAgLy8gcmVhZGFibGUgYW5kIGluaXRpYWxpemVkIGZvciBpdHMgYHNpemVfb2ZgIGJ5dGVzLlxuICA5MzpcdCAgICAgICAgdG9fcmVzdWx0KHVuc2FmZSB7IGJpbmRpbmdzOjpubGFfcHV0KHNrYiwgYXR0cnR5cGUsIGxlbiBhcyBjX2ludCwgcHRyKSB9KVxuICA5NDpcdCAgICB9XG4gIDk1Olx0XG4gIDk2Olx0ICAgIC8vLyBQdXRzIGEgYHUzMmAgYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXG4gIDk3Olx0ICAgICNbaW5saW5lXVxuICA5ODpcdCAgICBwdWIgZm4gcHV0X3UzMihcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogdTMyKSAtXHUwMDNlIFJlc3VsdCB7XG4gIDk5Olx0ICAgICAgICBzZWxmLnB1dChhdHRydHlwZSwgXHUwMDI2dmFsdWUpXG4gMTAwOlx0ICAgIH1cbiAxMDE6XHRcbiAxMDI6XHQgICAgLy8vIFB1dHMgYSBzdHJpbmcgYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXG4gMTAzOlx0ICAgICNbaW5saW5lXVxuIDEwNDpcdCAgICBwdWIgZm4gcHV0X3N0cmluZyhcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHQge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqUmV2aWV3aW5nIERNQSBJbXBsZW1lbnRhdGlvbiBpbiB0aGUgS2VybmVsKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIERNQSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiB0aGUgRE1BIGNvZGUuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBydXN0L2tlcm5lbC9kbWEucnNgLiBJIHdhbnQgdG8gc3BlY2lmaWNhbGx5IGV4YW1pbmUgbGluZXMgNDEwIHRocm91Z2ggNDYwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gbGluZXMgNTIwIHRocm91Z2ggNTcwLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgbG9naWMgaGVyZTsgdGhlc2UgcmFuZ2VzIHVzdWFsbHkgY29udGFpbiB0aGUgbW9zdCBpbXBvcnRhbnQgcGFydHMgZm9yIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgRE1BIHRyYW5zZmVycy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBpbnRlcmFjdGlvbiB3aXRoaW4gdGhhdCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL2RtYS5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDE1Olx0XG4gNDE2Olx0aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NbVF1cdTAwM2Uge1xuIDQxNzpcdCAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cbiA0MTg6XHQgICAgI1tpbmxpbmVdXG4gNDE5Olx0ICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcbiA0MjA6XHQgICAgICAgIGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NCb3VuZFx1MDAzZSxcbiA0MjE6XHQgICAgICAgIGNvdW50OiB1c2l6ZSxcbiA0MjI6XHQgICAgICAgIGdmcF9mbGFnczoga2VybmVsOjphbGxvYzo6RmxhZ3MsXG4gNDIzOlx0ICAgICAgICBkbWFfYXR0cnM6IEF0dHJzLFxuIDQyNDpcdCAgICApIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4gNDI1Olx0ICAgICAgICBDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBjb3VudCwgZ2ZwX2ZsYWdzLCBkbWFfYXR0cnMpLm1hcChTZWxmKVxuIDQyNjpcdCAgICB9XG4gNDI3Olx0XG4gNDI4Olx0ICAgIC8vLyBTYW1lIGFzIFtDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNdLCBidXQgd2l0aCBgZG1hOjpBdHRycygwKWAuXG4gNDI5Olx0ICAgICNbaW5saW5lXVxuIDQzMDpcdCAgICBwdWIgZm4gemVyb2VkX3NsaWNlKFxuIDQzMTpcdCAgICAgICAgZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLFxuIDQzMjpcdCAgICAgICAgY291bnQ6IHVzaXplLFxuIDQzMzpcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcbiA0MzQ6XHQgICAgKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuIDQzNTpcdCAgICAgICAgU2VsZjo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBjb3VudCwgZ2ZwX2ZsYWdzLCBBdHRycygwKSlcbiA0MzY6XHQgICAgfVxuIDQzNzpcdFxuIDQzODpcdCAgICAvLy8gSW5pdGlhbGl6ZXMgdGhlIGVsZW1lbnQgYXQgYGlgIHVzaW5nIHRoZSBnaXZlbiBpbml0aWFsaXplci5cbiA0Mzk6XHQgICAgLy8vXG4gNDQwOlx0ICAgIC8vLyBSZXR1cm5zIGBFSU5WQUxgIGlmIGBpYCBpcyBvdXQgb2YgYm91bmRzLlxuIDQ0MTpcdCAgICBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuIDQ0MjpcdCAgICB3aGVyZVxuIDQ0MzpcdCAgICAgICAgRXJyb3I6IEZyb21cdTAwM2NFXHUwMDNlLFxuIDQ0NDpcdCAgICB7XG4gNDQ1Olx0ICAgICAgICBpZiBpIFx1MDAzZT0gc2VsZi4wLmxlbigpIHtcbiA0NDY6XHQgICAgICAgICAgICByZXR1cm4gRXJyKEVJTlZBTCk7XG4gNDQ3Olx0ICAgICAgICB9XG4gNDQ4Olx0XG4gNDQ5Olx0ICAgICAgICBsZXQgcHRyID0gXHUwMDI2cmF3IG11dCBzZWxmW2ldO1xuIDQ1MDpcdFxuIDQ1MTpcdCAgICAgICAgLy8gU0FGRVRZOlxuIDQ1MjpcdCAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXG4gNDUzOlx0ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxuIDQ1NDpcdCAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cbiA0NTU6XHQgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxuIDQ1NjpcdCAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuIDQ1NzpcdFxuIDQ1ODpcdCAgICAgICAgT2soKCkpXG4gNDU5Olx0ICAgIH1cbiA0NjA6XHRcbiA0NjE6XHQgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBjb2hlcmVudCBtZW1vcnkgb2YgdGhlIHNhbWUgc2l6ZSBhcyBgZGF0YWAgYW5kIGluaXRpYWxpemVzIGl0IHdpdGggYVxuIDQ2MjpcdCAgICAvLy8gY29weSBvZiBpdHMgY29udGVudHMuXG4gNDYzOlx0ICAgIC8vL1xuIDQ2NDpcdCAgICAvLy8gVGhpcyBpcyB0aGUgW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjExCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMTMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgVHJhaXQgQm91bmQgQ2hhbmdlOiBObyBGdXp6aW5nIE5lZWRlZCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB1cGRhdGluZyB0cmFpdCBib3VuZHMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgYWNyb3NzIHNvbWUgUnVzdCBrZXJuZWwgaGVscGVyIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCkZpcnN0LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgc2NvcGUuIEkga25vdyB0aGF0IGBBc0J5dGVzYCBhbmQgYEludG9CeXRlc2AgYXJlIG1hcmtlciB0cmFpdHMgaW4gUnVzdCwgc3BlY2lmaWNhbGx5IHVuc2FmZSBtYXJrZXIgdHJhaXRzIGZyb20gdGhlIGB6ZXJvY29weWAgY3JhdGUuIFRoZXNlIHRyYWl0cyBpbmRpY2F0ZSBhIHR5cGUgaXMgc3VpdGFibGUgZm9yIGRpcmVjdCBtZW1vcnkgaW50ZXJwcmV0YXRpb24sIG1lYW5pbmcgaXQgY29udGFpbnMgbm8gcGFkZGluZyBhbmQgY2FuIGJlIHRyZWF0ZWQgYXMgYSBgJmFtcDtbdThdYC4gVGhlIGZhY3QgdGhhdCB0aGVzZSBhcmUgbWFya2VyIHRyYWl0cyB0aGF0IGFyZSB6ZXJvLXNpemVkLCBhbmQgdGhhdCB0aGUgY2hhbmdlIGlzIG9uIGdlbmVyaWMgZnVuY3Rpb25zL21ldGhvZHMgKHdoZXJlIFQ6IEludG9CeXRlcykgdGVsbHMgbWUgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBjb25zdHJhaW50LCBub3Qgc29tZXRoaW5nIHRoYXQgZ2VuZXJhdGVzIGFueSBhY3R1YWwgbWFjaGluZSBjb2RlLiBTbywgdGhlIHRyYWl0IGJvdW5kIGNoYW5nZSBzaG91bGRuJiMzOTt0IGJlIGFsdGVyaW5nIGFueSBydW50aW1lIGxvZ2ljLCB3aGljaCBpcyB0aGUga2V5IHRoaW5nLgoKTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcnVudGltZSBpbXBsaWNhdGlvbnMuIEFyZSB3ZSBjaGFuZ2luZyB3aGF0IHR5cGVzIGNhbiBiZSBwYXNzZWQ/IElzIGFueSBpbXBsZW1lbnRhdGlvbiBsb2dpYyBhbHRlcmVkPyBJdCBsb29rcyBsaWtlIGBBc0J5dGVzYCB3YXMgdGhlIG9sZCBuYW1lIGZvciBgSW50b0J5dGVzYCDigJMgb3IgcmF0aGVyLCB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoZSB0cmFuc211dGUgdHJhaXQuIFRoZSBtZXRob2Qgc2lnbmF0dXJlcyB1c2UgdGhlIGAmYW1wO1RgLCBjYWxjdWxhdGUgdGhlIGBzaXplX29mOjombHQ7VCZndDsoKWAsIGFuZCBjYWxsIGBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcmAuIFRoZSB1c2Ugb2YgYFQ6IEludG9CeXRlc2AgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kLiBUaGVyZSYjMzk7cyBubyBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdHJhaXQuCgpJJiMzOTtsbCByZXZpZXcgdGhlIGluc3RydWN0aW9ucyByZWxhdGVkIHRvIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4gU2VjdGlvbiAyIGNsZWFybHkgc3RhdGVzIHRoYXQgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzJiMzNDsgZG9uJiMzOTt0IHdhcnJhbnQgZnV6emluZywgd2hpY2ggaW5jbHVkZXMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIGV0Yy4gU28gaWYgdGhpcyBpcyBhIHB1cmVseSBjb21waWxlLXRpbWUgY2hhbmdlLCBpdCYjMzk7cyBub24tZXhlY3V0YWJsZS4KClRpbWUgdG8gY29uZmlybSB0aGlzIHBhdGNoIGlzIG5vbi1leGVjdXRhYmxlLiBJJiMzOTtsbCBtZXRpY3Vsb3VzbHkgZ28gdGhyb3VnaCB0aGUgZGlmZiwgbGluZSBieSBsaW5lLgoKQWxyaWdodCwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nOgoKKiAgICoqYHJ1c3Qva2VybmVsL2RtYS5yc2AqKjogSSYjMzk7bSBub3RpbmcgdGhlIHJlbW92YWwgb2YgdW51c2VkIGltcG9ydHMgKGB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9YCkuIFRoZW4sIGl0JiMzOTtzIGFsbCB0cmFpdCBib3VuZCB1cGRhdGVzIGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGFuZCBhc3NvY2lhdGVkIGNvbW1lbnQgYWRqdXN0bWVudHMgaW4gYGltcGxgIGJsb2Nrcy4KKiAgICoqYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCoqOiBTaW1pbGFyIHBhdHRlcm46IGFuIHVudXNlZCBpbXBvcnQgaXMgcmVtb3ZlZCwgYW5kIHRoZW4gdGhlIHRyYWl0IGJvdW5kIG9uIGEgZnVuY3Rpb24gaXMgdXBkYXRlZCBmcm9tIGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYC4KKiAgICoqYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgKio6IEFnYWluLCB1bnVzZWQgaW1wb3J0cyBhcmUgcmVtb3ZlZCwgZm9sbG93ZWQgYnkgbW9yZSB0cmFpdCBib3VuZCByZXBsYWNlbWVudHMgYW5kIGNvbW1lbnQgZWRpdHMuCgpJJiMzOTttIG5vdCBzZWVpbmcgYW55IGNoYW5nZXMgdG8gZXhlY3V0YWJsZSBjb2RlLCBydW50aW1lIGNoZWNrcywgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBFdmVyeXRoaW5nIGlzIGVpdGhlciBhbiBpbXBvcnQgY2xlYW51cCwgdHJhaXQgYm91bmQgdXBkYXRlLCBvciBhIGNvbW1lbnQgYWRqdXN0bWVudC4gVGhlIHRyYWl0IGJvdW5kIHVwZGF0ZXMgYXJlICpwdXJlbHkqIGNvbXBpbGUtdGltZSBtYXJrZXIgdHJhaXRzLCBtZWFuaW5nIHRoZSBjaGFuZ2UgaXMgZW50aXJlbHkgbm9uLWV4ZWN1dGFibGUuCgpUaGUgaW5zdHJ1Y3Rpb25zIGxvb2sgZ29vZDoKCiogICBgV29ydGhGdXp6aW5nYDogZmFsc2UKKiAgIGBFbmFibGVDb25maWdzYDogbnVsbAoqICAgYEZvY3VzU3ltYm9sc2A6IG51bGwKKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSByZW5hbWVzIGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYCBmcm9tIHplcm9jb3B5KSBhbmQgdXBkYXRlcyBjb21tZW50cyBhbmQgaW1wb3J0cywgd2l0aCBubyBjaGFuZ2VzIHRvIGV4ZWN1dGFibGUgbG9naWMsIHJ1bnRpbWUgYXNzZXJ0aW9ucywgb3IgY29udHJvbCBmbG93LgoKT2theSwgSSYjMzk7bSBjb25maWRlbnQuIFRoaXMgY2hhbmdlIGlzIG5vbi1leGVjdXRhYmxlIGFuZCBoYXMgbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGNvZGUuIEZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MTkuOTc1NzM5MTc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyMjUxOTU2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgUnVzdCBjb21waWxlLXRpbWUgdHJhaXQgYm91bmRzIChzd2l0Y2hpbmcgZnJvbSBBc0J5dGVzIHRvIEludG9CeXRlcyBmcm9tIHplcm9jb3B5KSwgcmVtb3ZlcyB1bnVzZWQgaW1wb3J0cywgYW5kIHVwZGF0ZXMgZG9jL3NhZmV0eSBjb21tZW50cyBhY3Jvc3Mga2VybmVsIERNQSwgbmV0bGluaywgYW5kIHVhY2Nlc3MgaGVscGVycy4gTm8gcnVudGltZSBleGVjdXRhYmxlIGxvZ2ljLCBjb250cm9sIGZsb3csIHN0cnVjdCBsYXlvdXRzLCBvciBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjE5Ljk3NTc0NjQzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MDUxMDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMTozNToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kbWEucnMgYi9ydXN0L2tlcm5lbC9kbWEucnNcXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2RtYS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RtYS5yc1xcbkBAIC0yNSwxMCArMjUsNiBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHB0cjo6S25vd25TaXplLFxcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcXG4tICAgIHRyYW5zbXV0ZTo6e1xcbi0gICAgICAgIEFzQnl0ZXMsXFxuLSAgICAgICAgRnJvbUJ5dGVzLCAvL1xcbi0gICAgfSxcXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cXG4gfTtcXG4gdXNlIGNvcmU6OntcXG5AQCAtNDE3LDcgKzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXFx1MDAzZSBTZWxmIHtcXG4gLy8vIGBgYFxcbiBwdWIgc3RydWN0IENvaGVyZW50Qm94XFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UoQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2UpO1xcbiBcXG4taW1wbFxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXFx1MDAzZSBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1tUXVxcdTAwM2Uge1xcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuICAgICAjW2lubGluZV1cXG4gICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcXG5AQCAtNDU0LDcgKzQ1MCw3IEBAIHB1YiBmbiBpbml0X2F0XFx1MDAzY0VcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFxcdTAwM2NULCBFXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cXG4tICAgICAgICAvLyAtIGBUOiBBc0J5dGVzICsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxcbisgICAgICAgIC8vIC0gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cXG4gICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLlxcbiAgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxcbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG5AQCAtNTIzLDcgKzUxOSw3IEBAIHB1YiBmbiBmcm9tX3NsaWNlKFxcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cXG4gICAgICNbaW5saW5lXVxcbiAgICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKFxcbkBAIC01NTQsNyArNTUwLDcgQEAgZm4gZGVyZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZTZWxmOjpUYXJnZXQge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuICAgICAgICAgLy8gU0FGRVRZOlxcbkBAIC01NjUsNyArNTYxLDcgQEAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBGcm9tXFx1MDAzY0NvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlXFx1MDAzZSBmb3IgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAgICAgdmFsdWUuMFxcbkBAIC02NjMsNyArNjU5LDcgQEAgcHViIHVuc2FmZSBmbiBhc19tdXQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZtdXQgVCB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQXNCeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBgVGAgb2YgY29oZXJlbnQgbWVtb3J5LlxcbiAgICAgZm4gYWxsb2Nfd2l0aF9hdHRycyhcXG4gICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuQEAgLTc1Myw3ICs3NDksNyBAQCBwdWIgZm4gaW5pdF93aXRoX2F0dHJzXFx1MDAzY0VcXHUwMDNlKFxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS5cXG4gICAgICAgICAvLyAtIElmIGByYXdfdHJ5X2luaXRgIGZhaWxzLCBgc2VsZmAgaXMgZHJvcHBlZCwgd2hpY2ggc2FmZWx5IGZyZWVzIHRoZSB1bmRlcmx5aW5nXFxuLSAgICAgICAgLy8gICBgQ29oZXJlbnRgJ3MgRE1BIG1lbW9yeS4gYFQ6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXFxuKyAgICAgICAgLy8gICBgQ29oZXJlbnRgJ3MgRE1BIG1lbW9yeS4gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZW5zdXJlcyB0aGVyZSBhcmUgbm8gY29tcGxleCBgRHJvcGBcXG4gICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxcbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG4gXFxuQEAgLTk0OCw5ICs5NDQsOSBAQCB1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBTZW5kICsgP1NpemVkXFx1MDAzZSBTZW5kIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbiAvLyBtZXRob2RzIHRoYXQgYWNjZXNzIHRoZSBidWZmZXIgY29udGVudHMgKGBmaWVsZF9yZWFkYCwgYGZpZWxkX3dyaXRlYCwgYGFzX3NsaWNlYCxcXG4gLy8gYGFzX3NsaWNlX211dGApIGFyZSBgdW5zYWZlYCwgYW5kIGNhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBubyBkYXRhIHJhY2VzIG9jY3VyLlxcbiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZCArIEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyA/U2l6ZWQgKyBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4taW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBBc0J5dGVzICsgP1NpemVkXFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBJbnRvQnl0ZXMgKyA/U2l6ZWRcXHUwMDNlIGRlYnVnZnM6OkJpbmFyeVdyaXRlciBmb3IgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxuICAgICAgICAgXFx1MDAyNnNlbGYsXFxuICAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMgYi9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1xcbmluZGV4IDIyZWYzZGRlMzZmYTEuLmMzYjUwZGQ1MGE0Y2UgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1xcbkBAIC0xMiw3ICsxMiw2IEBAXFxuICAgICBhbGxvYzo6e3NlbGYsIEFsbG9jRXJyb3J9LFxcbiAgICAgZXJyb3I6OnRvX3Jlc3VsdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICB0cmFuc211dGU6OkFzQnl0ZXMsXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSxcXG4gfTtcXG5AQCAtODQsNyArODMsNyBAQCBpbXBsIEdlbmxNc2cge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBwdXRcXHUwMDNjVFxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0XFxuICAgICB3aGVyZVxcbi0gICAgICAgIFQ6ID9TaXplZCArIEFzQnl0ZXMsXFxuKyAgICAgICAgVDogP1NpemVkICsgSW50b0J5dGVzLFxcbiAgICAge1xcbiAgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7XFxuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcXG5pbmRleCA1ZjZjNGQ3YTFhNTE2Li5kOTNjMWEyMWYzMjRmIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcXG4rKysgYi9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXFxuQEAgLTEzLDcgKzEzLDYgQEBcXG4gICAgIGZzOjpmaWxlLFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHB0cjo6S25vd25TaXplLFxcbi0gICAgdHJhbnNtdXRlOjp7QXNCeXRlcywgRnJvbUJ5dGVzfSxcXG4gfTtcXG4gdXNlIGNvcmU6Om1lbTo6e3NpemVfb2YsIE1heWJlVW5pbml0fTtcXG4gXFxuQEAgLTUyNSw3ICs1MjQsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2UoXFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcXHUwMDI2W3U4XSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gICAgIC8vLyAgICAgd3JpdGVyLndyaXRlX2RtYShhbGxvYywgMCwgMjU2KVxcbiAgICAgLy8vIH1cXG4gICAgIC8vLyBgYGBcXG4tICAgIHB1YiBmbiB3cml0ZV9kbWFcXHUwMDNjVDogS25vd25TaXplICsgQXNCeXRlcyArID9TaXplZFxcdTAwM2UoXFxuKyAgICBwdWIgZm4gd3JpdGVfZG1hXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UoXFxuICAgICAgICAgXFx1MDAyNm11dCBzZWxmLFxcbiAgICAgICAgIGFsbG9jOiBcXHUwMDI2Q29oZXJlbnRcXHUwMDNjVFxcdTAwM2UsXFxuICAgICAgICAgb2Zmc2V0OiB1c2l6ZSxcXG5AQCAtNTk5LDcgKzU5OCw3IEBAIHB1YiBmbiB3cml0ZV9zbGljZV9maWxlKFxcdTAwMjZtdXQgc2VsZiwgZGF0YTogXFx1MDAyNlt1OF0sIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQpIC1cXHUwMDNlIFJlXFxuICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbiAgICAgLy8vIGJvdW5kcyBvZiB0aGlzIFtgVXNlclNsaWNlV3JpdGVyYF0uIFRoaXMgY2FsbCBtYXkgbW9kaWZ5IHRoZSBhc3NvY2lhdGVkIHVzZXJzcGFjZSBzbGljZSBldmVuXFxuICAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cXG4tICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBBc0J5dGVzXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0IHtcXG4rICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFxcdTAwMjZUKSAtXFx1MDAzZSBSZXN1bHQge1xcbiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4gICAgICAgICBpZiBsZW4gXFx1MDAzZSBzZWxmLmxlbmd0aCB7XFxuICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MjEuNTU3MjM1MzU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTY0MzY3ODk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIxOjM1OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZG1hLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9kbWEucnNcbkBAIC0yNSwxMCArMjUsNiBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBwdHI6Oktub3duU2l6ZSxcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcbi0gICAgdHJhbnNtdXRlOjp7XG4tICAgICAgICBBc0J5dGVzLFxuLSAgICAgICAgRnJvbUJ5dGVzLCAvL1xuLSAgICB9LFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VXcml0ZXIsIC8vXG4gfTtcbiB1c2UgY29yZTo6e1xuQEAgLTQxNyw3ICs0MTMsNyBAQCBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVx1MDAzZSBTZWxmIHtcbiAvLy8gYGBgXG4gcHViIHN0cnVjdCBDb2hlcmVudEJveFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXG5AQCAtNDU0LDcgKzQ1MCw3IEBAIHB1YiBmbiBpbml0X2F0XHUwMDNjRVx1MDAzZShcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFx1MDAzY1QsIEVcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XG4gXG4gICAgICAgICAvLyBTQUZFVFk6XG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gYFQ6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXG4rICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXG4gICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuICAgICAgICAgLy8gLSBUaGUgRE1BIGFkZHJlc3MgaGFzIG5vdCBiZWVuIGV4cG9zZWQgeWV0LCBzbyB0aGVyZSBpcyBubyBjb25jdXJyZW50IGRldmljZSBhY2Nlc3MuXG4gICAgICAgICB1bnNhZmUgeyBwaW5faW5pdDo6cmF3X3RyeV9pbml0KHB0ciwgaW5pdCk/IH07XG5AQCAtNTIzLDcgKzUxOSw3IEBAIHB1YiBmbiBmcm9tX3NsaWNlKFxuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3dpdGhfYXR0cnMoXG5AQCAtNTU0LDcgKzU1MCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuICAgICAgICAgLy8gU0FGRVRZOlxuQEAgLTU2NSw3ICs1NjEsNyBAQCBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcdTAwM2UgRnJvbVx1MDAzY0NvaGVyZW50Qm94XHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXHUwMDNlIEZyb21cdTAwM2NDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICB2YWx1ZS4wXG5AQCAtNjYzLDcgKzY1OSw3IEBAIHB1YiB1bnNhZmUgZm4gYXNfbXV0KFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFQge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuXG4gICAgIGZuIGFsbG9jX3dpdGhfYXR0cnMoXG4gICAgICAgICBkZXY6IFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQm91bmRcdTAwM2UsXG5AQCAtNzUzLDcgKzc0OSw3IEBAIHB1YiBmbiBpbml0X3dpdGhfYXR0cnNcdTAwM2NFXHUwMDNlKFxuICAgICAgICAgLy8gU0FGRVRZOlxuICAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHBvaW50cyB0byBleGNsdXNpdmVseSBvd25lZCBtZW1vcnkuXG4gICAgICAgICAvLyAtIElmIGByYXdfdHJ5X2luaXRgIGZhaWxzLCBgc2VsZmAgaXMgZHJvcHBlZCwgd2hpY2ggc2FmZWx5IGZyZWVzIHRoZSB1bmRlcmx5aW5nXG4tICAgICAgICAvLyAgIGBDb2hlcmVudGAncyBETUEgbWVtb3J5LiBgVDogQXNCeXRlcyArIEZyb21CeXRlc2AgZW5zdXJlcyB0aGVyZSBhcmUgbm8gY29tcGxleCBgRHJvcGBcbisgICAgICAgIC8vICAgYENvaGVyZW50YCdzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG4gICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxuICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuIFxuQEAgLTk0OCw5ICs5NDQsOSBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArIFNlbmQgKyA/U2l6ZWRcdTAwM2UgU2VuZCBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4gLy8gbWV0aG9kcyB0aGF0IGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnRzIChgZmllbGRfcmVhZGAsIGBmaWVsZF93cml0ZWAsIGBhc19zbGljZWAsXG4gLy8gYGFzX3NsaWNlX211dGApIGFyZSBgdW5zYWZlYCwgYW5kIGNhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBubyBkYXRhIHJhY2VzIG9jY3VyLlxuIC8vIFRoZSBzYWZlIG1ldGhvZHMgb25seSByZXR1cm4gbWV0YWRhdGEgb3IgcmF3IHBvaW50ZXJzIHdob3NlIHVzZSByZXF1aXJlcyBgdW5zYWZlYC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZCArIEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXHUwMDNlIFN5bmMgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkICsgSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgU3luY1x1MDAzZSBTeW5jIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge31cbiBcbi1pbXBsXHUwMDNjVDogS25vd25TaXplICsgQXNCeXRlcyArID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuICAgICAgICAgXHUwMDI2c2VsZixcbiAgICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5pbmRleCAyMmVmM2RkZTM2ZmExLi5jM2I1MGRkNTBhNGNlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcbisrKyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5AQCAtMTIsNyArMTIsNiBAQFxuICAgICBhbGxvYzo6e3NlbGYsIEFsbG9jRXJyb3J9LFxuICAgICBlcnJvcjo6dG9fcmVzdWx0LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICB0cmFuc211dGU6OkFzQnl0ZXMsXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsXG4gfTtcbkBAIC04NCw3ICs4Myw3IEBAIGltcGwgR2VubE1zZyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBwdXRcdTAwM2NUXHUwMDNlKFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdFxuICAgICB3aGVyZVxuLSAgICAgICAgVDogP1NpemVkICsgQXNCeXRlcyxcbisgICAgICAgIFQ6ID9TaXplZCArIEludG9CeXRlcyxcbiAgICAge1xuICAgICAgICAgbGV0IHNrYiA9IHNlbGYuc2tiLnNrYi5hc19wdHIoKTtcbiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbmluZGV4IDVmNmM0ZDdhMWE1MTYuLmQ5M2MxYTIxZjMyNGYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXG4rKysgYi9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXG5AQCAtMTMsNyArMTMsNiBAQFxuICAgICBmczo6ZmlsZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4tICAgIHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc30sXG4gfTtcbiB1c2UgY29yZTo6bWVtOjp7c2l6ZV9vZiwgTWF5YmVVbmluaXR9O1xuIFxuQEAgLTUyNSw3ICs1MjQsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2UoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbiAgICAgLy8vICAgICB3cml0ZXIud3JpdGVfZG1hKGFsbG9jLCAwLCAyNTYpXG4gICAgIC8vLyB9XG4gICAgIC8vLyBgYGBcbi0gICAgcHViIGZuIHdyaXRlX2RtYVx1MDAzY1Q6IEtub3duU2l6ZSArIEFzQnl0ZXMgKyA/U2l6ZWRcdTAwM2UoXG4rICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgKyBJbnRvQnl0ZXMgKyA/U2l6ZWRcdTAwM2UoXG4gICAgICAgICBcdTAwMjZtdXQgc2VsZixcbiAgICAgICAgIGFsbG9jOiBcdTAwMjZDb2hlcmVudFx1MDAzY1RcdTAwM2UsXG4gICAgICAgICBvZmZzZXQ6IHVzaXplLFxuQEAgLTU5OSw3ICs1OTgsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2VfZmlsZShcdTAwMjZtdXQgc2VsZiwgZGF0YTogXHUwMDI2W3U4XSwgb2Zmc2V0OiBcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0KSAtXHUwMDNlIFJlXG4gICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG4gICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxuICAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbi0gICAgcHViIGZuIHdyaXRlXHUwMDNjVDogQXNCeXRlc1x1MDAzZShcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0IHtcbisgICAgcHViIGZuIHdyaXRlXHUwMDNjVDogSW50b0J5dGVzXHUwMDNlKFx1MDAyNm11dCBzZWxmLCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHQge1xuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiAgICAgICAgIGlmIGxlbiBcdTAwM2Ugc2VsZi5sZW5ndGgge1xuICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjIxLjU1NzIzNzIzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NTgxODY3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCdzIGFjdHVhbGx5IGNoYW5naW5nLlxuXG4qKkFuYWx5emluZyB0aGUgUnVzdCBLZXJuZWwgUGF0Y2gqKlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gVGhlIGtleSB0aGluZyBJJ20gcGlja2luZyB1cCBpcyB0aGUgc2hpZnQgZnJvbSBgQXNCeXRlc2AgdG8gYEludG9CeXRlc2AgaW4gdHlwZSBjb25zdHJhaW50cyBhbmQgdHJhaXRzLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgKnplcm9jb3B5KiBvciB0cmFuc211dGUtcmVsYXRlZCBjaGFuZ2VzIHRvIG1lIOKAkyBwb3RlbnRpYWxseSBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBoYW5kbGUgYnl0ZSByZXByZXNlbnRhdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IGZhbWlsaWFyIHdpdGggYEludG9CeXRlc2AuIEkgd2lsbCBwcm9iYWJseSBnbyBhbmQgZXhhbWluZSBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AgYW5kIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgLCB0byBkZXRlcm1pbmUgd2hhdCBkZWZpbml0aW9ucyBhbmQgaW1wbGVtZW50YXRpb25zIGFyZSBpbnRyb2R1Y2VkIGFuZCBjaGFuZ2VkLiBJIGNhbiBhbHNvIGZpcmUgdXAgYGdyZXBwZXJgIG9yIGNoZWNrIHRoZSBnaXQgbG9nIGFuZCBvdGhlciBSdXN0IGZpbGVzIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIGJlIHN1cmUgb24gdGhpcyBwb2ludCwgYXMgaXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBUaGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBJJ2xsIGRpdmUgaW4sIGJlY2F1c2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHR5cGUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDUsIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNToyOC4xMTU0MjYxMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3NDY0MDEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJbnRvQnl0ZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzPTc1PSAgICBwdWIoY3JhdGUpIGZuIGRldihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNidncHUgZGV2aWNlOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy04NS0jW3JlcHIoQyldXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5yczo4NjojW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy04Ny1zdHJ1Y3QgUHRlQXJyYXlcXHUwMDNjY29uc3QgTlVNX0VOVFJJRVM6IHVzaXplXFx1MDAzZShbdTY0OyBOVU1fRU5UUklFU10pO1xcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9NzA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzYtXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6Nzc6Ly8gQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYW55IGBUOiBJbW11dGFibGUgKyBJbnRvQnl0ZXNgLlxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjc4OmltcGxcXHUwMDNjVDogSW1tdXRhYmxlICsgSW50b0J5dGVzXFx1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFQge1xcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTc5LSAgICBmbiB3cml0ZV90b19zbGljZShcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTE0Nj1pbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJpbmFyeVdyaXRlciBmb3IgVmVjXFx1MDAzY1QsIEFcXHUwMDNlXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ3LXdoZXJlXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTQ4OiAgICBUOiBJbW11dGFibGUgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ5LSAgICBBOiBBbGxvY2F0b3IsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0yMTc9ICAgIGZuIHJlYWRfZnJvbV9zbGljZV9tdXQoXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yMjMtXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjI0Oi8vIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFueSBgVDogRnJvbUJ5dGVzICsgSW50b0J5dGVzYC5cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyMjU6aW1wbFxcdTAwM2NUOiBGcm9tQnl0ZXMgKyBJbnRvQnl0ZXNcXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVCB7XFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjI2LSAgICBmbiByZWFkX2Zyb21fc2xpY2VfbXV0KFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjQ3PWltcGxcXHUwMDNjVCwgQVxcdTAwM2UgQmluYXJ5UmVhZGVyTXV0IGZvciBWZWNcXHUwMDNjVCwgQVxcdTAwM2VcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNDgtd2hlcmVcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyNDk6ICAgIFQ6IEZyb21CeXRlcyArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNTAtICAgIEE6IEFsbG9jYXRvcixcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz0zNTY9ICAgIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXFx1MDAzZSBTZWxmIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy00MTUtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjW1RdXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQxNy0gICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFxcdTAwM2NFXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcXHUwMDNjVCwgRVxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1Mi0gICAgICAgIC8vIC0gYHB0cmAgaXMgdmFsaWQsIHByb3Blcmx5IGFsaWduZWQsIGFuZCB3aXRoaW4gdGhpcyBhbGxvY2F0aW9uLlxcbnJ1c3Qva2VybmVsL2RtYS5yczo0NTM6ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1NC0gICAgICAgIC8vICAgZXJyb3IgY2Fubm90IGxlYXZlIHRoZSBlbGVtZW50IGluIGFuIGludmFsaWQgc3RhdGUuXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTEwPSAgICBwdWIgZm4gZnJvbV9zbGljZShcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjEtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjUyMjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjMtICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTItXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTU0LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTYzLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NjU2PSAgICBwdWIgdW5zYWZlIGZuIGFzX211dChcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy02NjEtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjY2MjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy02NjMtICAgIC8vLyBBbGxvY2F0ZXMgYSByZWdpb24gb2YgYFRgIG9mIGNvaGVyZW50IG1lbW9yeS5cXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz03Mzc9ICAgIHB1YiBmbiBpbml0X3dpdGhfYXR0cnNcXHUwMDNjRVxcdTAwM2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNzUxLSAgICAgICAgLy8gLSBJZiBgcmF3X3RyeV9pbml0YCBmYWlscywgYHNlbGZgIGlzIGRyb3BwZWQsIHdoaWNoIHNhZmVseSBmcmVlcyB0aGUgdW5kZXJseWluZ1xcbnJ1c3Qva2VybmVsL2RtYS5yczo3NTI6ICAgICAgICAvLyAgIGBDb2hlcmVudGAncyBETUEgbWVtb3J5LiBgVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYFxcbnJ1c3Qva2VybmVsL2RtYS5ycy03NTMtICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTk0MT11bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBTZW5kICsgP1NpemVkXFx1MDAzZSBTZW5kIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTk0Ni0vLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXFxucnVzdC9rZXJuZWwvZG1hLnJzOjk0Nzp1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyA/U2l6ZWQgKyBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbnJ1c3Qva2VybmVsL2RtYS5ycy05NDgtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjk0OTppbXBsXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UgZGVidWdmczo6QmluYXJ5V3JpdGVyIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1MC0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9MTIxNT0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IHplcm9jb3B5OjpGcm9tQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlKSAtXFx1MDAzZSBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy0xMjE5LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM6MTIyMDogICAgZm4gY29weV93cml0ZVxcdTAwM2NUOiB6ZXJvY29weTo6SW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtMTIyMS0gICAgICAgIFN5c01lbUJhY2tlbmQ6OmNvcHlfd3JpdGUodmlldy5jcHVfYWRkciwgdmFsdWUpXFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz05Mj0gICAgZm4gc2l6ZShwOiAqY29uc3QgU2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMTAxLS8vXFxucnVzdC9rZXJuZWwvaW8ucnM6MTAyOi8vIFRoaXMgY2Fubm90IGJlIGRlcml2ZWQgYXMgYGRlcml2ZShJbnRvQnl0ZXMpYCBhcyB0aGUgcGFkZGluZyBmcmVlIHByb3BlcnR5IGNvbWVzIGZyb20gdHlwZVxcbnJ1c3Qva2VybmVsL2lvLnJzLTEwMy0vLyBpbnZhcmlhbnQgd2hpY2ggdGhlIG1hY3JvIGRvZXMgbm90IGtub3cuXFxucnVzdC9rZXJuZWwvaW8ucnM6MTA0OnVuc2FmZSBpbXBsXFx1MDAzY2NvbnN0IFNJWkU6IHVzaXplXFx1MDAzZSBJbnRvQnl0ZXMgZm9yIFJlZ2lvblxcdTAwM2NTSVpFXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvaW8ucnMtMTA1LSAgICAjW2lubGluZV1cXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTMwMD0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IEZyb21CeXRlc1xcdTAwM2UodmlldzogU2VsZjo6Vmlld1xcdTAwM2MnXywgVFxcdTAwM2UpIC1cXHUwMDNlIFQge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMzIzLSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9pby5yczozMjQ6ICAgIGZuIGNvcHlfd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9pby5ycy0zMjUtICAgICAgICAvLyBQcm9qZWN0IGBzZWxmYCB0byBgW3U4XWAuXFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz00MzM9ICAgIGZuIGlzX2VtcHR5XFx1MDAzY1RcXHUwMDNlKHNlbGYpIC1cXHUwMDNlIGJvb2xcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ1NC0gICAgLy8vIH07XFxucnVzdC9rZXJuZWwvaW8ucnM6NDU1OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpXVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ1Ni0gICAgLy8vICNbcmVwcihDKV1cXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTQ2NT0gICAgZm4gdHJ5X2Nhc3RcXHUwMDNjVVxcdTAwM2Uoc2VsZikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1xcdTAwM2NTZWxmOjpCYWNrZW5kIGFzIElvQmFja2VuZFxcdTAwM2U6OlZpZXdcXHUwMDNjJ2EsIFVcXHUwMDNlXFx1MDAzZVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ2Ni0gICAgd2hlcmVcXG5ydXN0L2tlcm5lbC9pby5yczo0Njc6ICAgICAgICBTZWxmOjpUYXJnZXQ6IEZyb21CeXRlcyArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9pby5yczo0Njg6ICAgICAgICBVOiBGcm9tQnl0ZXMgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvaW8ucnMtNDY5LSAgICB7XFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz01NzU9ICAgIGZuIGNvcHlfd3JpdGUoc2VsZiwgdmFsdWU6IFNlbGY6OlRhcmdldClcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTU3Ny0gICAgICAgIFNlbGY6OkJhY2tlbmQ6IElvQ29weWFibGUsXFxucnVzdC9rZXJuZWwvaW8ucnM6NTc4OiAgICAgICAgU2VsZjo6VGFyZ2V0OiBTaXplZCArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9pby5ycy01NzktICAgIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTE0MDU9ICAgIGZuIGNvcHlfcmVhZFxcdTAwM2NUOiBGcm9tQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlKSAtXFx1MDAzZSBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTE0MTUtICAgICNbaW5saW5lXVxcbnJ1c3Qva2VybmVsL2lvLnJzOjE0MTY6ICAgIGZuIGNvcHlfd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9pby5ycy0xNDE3LSAgICAgICAgLy8gU0FGRVRZOlxcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnM9MTU5OT0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IEZyb21CeXRlc1xcdTAwM2UodmlldzogU2VsZjo6Vmlld1xcdTAwM2MnXywgVFxcdTAwM2UpIC1cXHUwMDNlIFQge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMTYwNi0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvaW8ucnM6MTYwNzogICAgZm4gY29weV93cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlLCB2YWx1ZTogVCkge1xcbnJ1c3Qva2VybmVsL2lvLnJzLTE2MDgtICAgICAgICBtYXRjaCB2aWV3IHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzPTg0PSAgICBmbiBwdXRcXHUwMDNjVFxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODUtICAgIHdoZXJlXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6ODY6ICAgICAgICBUOiA/U2l6ZWQgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODctICAgIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnMtNjUtICAgIEZyb21CeXRlcyxcXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzOjY2OiAgICBJbnRvQnl0ZXMsIC8vXFxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02Ny19O1xcbi0tXFxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03MS0gICAgRnJvbUJ5dGVzLFxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnM6NzI6ICAgIEludG9CeXRlcywgLy9cXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTczLX07XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTQ4OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlKFxcdTAwMjZtdXQgc2VsZiwgZGF0YTogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUyNi0gICAgLy8vIGBgYFxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTI3OiAgICBwdWIgZm4gd3JpdGVfZG1hXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UoXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjgtICAgICAgICBcXHUwMDI2bXV0IHNlbGYsXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTU3OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcXHUwMDI2W3U4XSwgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3VzaXplXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo2MDE6ICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFxcdTAwMjZUKSAtXFx1MDAzZSBSZXN1bHQge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNjAyLSAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6OlxcdTAwM2NUXFx1MDAzZSgpO1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MjE9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfc3RydWN0KGN0eDogXFx1MDAyNkN0eCwgc3RyY3Q6IFxcdTAwMjZEYXRhU3RydWN0KSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0zMi0gICAgICAgIC8vICAgc2FtZSBhcyBpdHMgb25seSBub24tWlNUIGZpZWxkIChtZWFuaW5nIHRoZXJlJ3Mgbm8gcGFkZGluZyBvdXRzaWRlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MzM6ICAgICAgICAvLyAgIG9mIHRoYXQgZmllbGQpIGFuZCB3ZSByZXF1aXJlIHRoYXQgZmllbGQgdG8gYmUgYEludG9CeXRlc2AgKG1lYW5pbmdcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0zNC0gICAgICAgIC8vICAgdGhlcmUncyBubyBwYWRkaW5nIGluIHRoYXQgZmllbGQpLlxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzYtICAgICAgICAvLyAgIHRoYXQgYW55IHBhZGRpbmcgYnl0ZXMgd291bGQgbmVlZCB0byBjb21lIGZyb20gdGhlIGZpZWxkcywgYWxsIG9mXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6Mzc6ICAgICAgICAvLyAgIHdoaWNoIHdlIHJlcXVpcmUgdG8gYmUgYEludG9CeXRlc2AgKG1lYW5pbmcgdGhleSBkb24ndCBoYXZlIGFueVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTM4LSAgICAgICAgLy8gICBwYWRkaW5nKS4gTm90ZSB0aGF0IHRoaXMgaG9sZHMgcmVnYXJkbGVzcyBvZiBvdGhlciBgcmVwcmBcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk1LVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzOjk2OiAgICBPayhJbXBsQmxvY2tCdWlsZGVyOjpuZXcoY3R4LCBzdHJjdCwgVHJhaXQ6OkludG9CeXRlcywgZmllbGRfYm91bmRzKVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk3LSAgICAgICAgLnBhZGRpbmdfY2hlY2socGFkZGluZ19jaGVjaylcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzPTEwMT1mbiBkZXJpdmVfaW50b19ieXRlc19lbnVtKGN0eDogXFx1MDAyNkN0eCwgZW5tOiBcXHUwMDI2RGF0YUVudW0pIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NUb2tlblN0cmVhbSwgRXJyb3JcXHUwMDNlIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTExMC0gICAgbGV0IHRhZ190eXBlX2RlZmluaXRpb24gPSBnZW5lcmF0ZV90YWdfZW51bShjdHgsIFxcdTAwMjZyZXByLCBlbm0pO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzOjExMTogICAgT2soSW1wbEJsb2NrQnVpbGRlcjo6bmV3KGN0eCwgZW5tLCBUcmFpdDo6SW50b0J5dGVzLCBGaWVsZEJvdW5kczo6QUxMX1NFTEYpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTEyLSAgICAgICAgLnBhZGRpbmdfY2hlY2soUGFkZGluZ0NoZWNrOjpFbnVtIHsgdGFnX3R5cGVfZGVmaW5pdGlvbiB9KVxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MTE2PWZuIGRlcml2ZV9pbnRvX2J5dGVzX3VuaW9uKGN0eDogXFx1MDAyNkN0eCwgdW5uOiBcXHUwMDI2RGF0YVVuaW9uKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0xNTktXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTYwOiAgICBsZXQgaW1wbF9ibG9jayA9IEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHVubiwgVHJhaXQ6OkludG9CeXRlcywgRmllbGRCb3VuZHM6OkFMTF9TRUxGKVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTE2MS0gICAgICAgIC5wYWRkaW5nX2NoZWNrKFBhZGRpbmdDaGVjazo6VW5pb24pXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTQ0PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6aGFzaDo6SGFzaCBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy00NS0gICAgICAgIHdoZXJlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo0NjogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyArICN6ZXJvY29weV9jcmF0ZTo6SW1tdXRhYmxlLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNDctICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM9NDk9ICAgICAgICAgICAgZm4gaGFzaFxcdTAwM2NIOiAjY29yZTo6aGFzaDo6SGFzaGVyXFx1MDAzZShcXHUwMDI2c2VsZiwgc3RhdGU6IFxcdTAwMjZtdXQgSCkge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTA6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZikpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01MS0gICAgICAgICAgICB9XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTUzPSAgICAgICAgICAgIGZuIGhhc2hfc2xpY2VcXHUwMDNjSDogI2NvcmU6Omhhc2g6Okhhc2hlclxcdTAwM2UoZGF0YTogXFx1MDAyNltTZWxmXSwgc3RhdGU6IFxcdTAwMjZtdXQgSCkge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTQ6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoZGF0YSkpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01NS0gICAgICAgICAgICB9XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTcyPSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpQYXJ0aWFsRXEgZm9yICN0eXBlX2lkZW50ICN0eV9nZW5lcmljc1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzMtICAgICAgICB3aGVyZVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NzQ6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgKyAjemVyb2NvcHlfY3JhdGU6OkltbXV0YWJsZSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTc1LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTc3PSAgICAgICAgICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzgtICAgICAgICAgICAgICAgICNjb3JlOjpjbXA6OlBhcnRpYWxFcTo6ZXEoXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo3OTogICAgICAgICAgICAgICAgICAgICN6ZXJvY29weV9jcmF0ZTo6SW50b0J5dGVzOjphc19ieXRlcyhzZWxmKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjgwOiAgICAgICAgICAgICAgICAgICAgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKG90aGVyKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTgxLSAgICAgICAgICAgICAgICApXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTg1PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpFcSBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy04Ni0gICAgICAgIHdoZXJlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo4NzogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyArICN6ZXJvY29weV9jcmF0ZTo6SW1tdXRhYmxlLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtODgtICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz00Mj1tYWNyb19ydWxlcyEgaWRlbnQge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTY4LS8vIEluc3RlYWQsIHdlIGhhdmUgbW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIGxpa2UgXFxcInVuc3VwcG9ydGVkIHJlcHJlc2VudGF0aW9uXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjY5Oi8vIGZvciBkZXJpdmluZyBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBvciBVbmFsaWduZWQgb24gYW4gZW51bVxcXCJcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtNzAtLy9cXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xMTM9ICAgIGZuIGludG9fdHMoc2VsZikgLVxcdTAwM2UgcHJvY19tYWNybzI6OlRva2VuU3RyZWFtIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjUtZGVyaXZlIShGcm9tQnl0ZXMgPVxcdTAwM2UgZGVyaXZlX2Zyb21fYnl0ZXMgPVxcdTAwM2UgY3JhdGU6OmRlcml2ZTo6ZnJvbV9ieXRlczo6ZGVyaXZlX2Zyb21fYnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxMjY6ZGVyaXZlIShJbnRvQnl0ZXMgPVxcdTAwM2UgZGVyaXZlX2ludG9fYnl0ZXMgPVxcdTAwM2UgY3JhdGU6OmRlcml2ZTo6aW50b19ieXRlczo6ZGVyaXZlX2ludG9fYnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjctZGVyaXZlIShVbmFsaWduZWQgPVxcdTAwM2UgZGVyaXZlX3VuYWxpZ25lZCA9XFx1MDAzZSBjcmF0ZTo6ZGVyaXZlOjp1bmFsaWduZWQ6OmRlcml2ZV91bmFsaWduZWQpO1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTEzND1wdWIgZm4gbW9zdF90cmFpdHModHM6IHByb2NfbWFjcm86OlRva2VuU3RyZWFtKSAtXFx1MDAzZSBwcm9jX21hY3JvOjpUb2tlblN0cmVhbSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ2LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmZyb21fYnl0ZXM6OmRlcml2ZV9mcm9tX2J5dGVzLCBUcmFpdDo6RnJvbUJ5dGVzKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTQ3OiAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmludG9fYnl0ZXM6OmRlcml2ZV9pbnRvX2J5dGVzLCBUcmFpdDo6SW50b0J5dGVzKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ4LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmRlcml2ZV9zcGxpdF9hdCwgVHJhaXQ6OlNwbGl0QXQpLFxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTE3MD1wdWIgZm4gZGVyaXZlX2Zyb21femVyb2VzKHRzOiBwcm9jX21hY3JvOjpUb2tlblN0cmVhbSkgLVxcdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTE3My1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTc0Oi8vLyBEZXByZWNhdGVkOiBwcmVmZXIgW2BJbnRvQnl0ZXNgXSBpbnN0ZWFkLlxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxNzU6I1tkZXByZWNhdGVkKHNpbmNlID0gXFxcIjAuOC4wXFxcIiwgbm90ZSA9IFxcXCJgQXNCeXRlc2Agd2FzIHJlbmFtZWQgdG8gYEludG9CeXRlc2BcXFwiKV1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTc2LSNbZG9jKGhpZGRlbildXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzPTMwMj1wdWIoY3JhdGUpIGVudW0gVHJhaXQge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zMTktICAgIEZyb21CeXRlcyxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzOjMyMDogICAgSW50b0J5dGVzLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzIxLSAgICBVbmFsaWduZWQsXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzPTMyOT0gICAgZm4gdG9fdG9rZW5zKFxcdTAwMjZzZWxmLCB0b2tlbnM6IFxcdTAwMjZtdXQgVG9rZW5TdHJlYW0pIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzQ3LSAgICAgICAgICAgIFRyYWl0OjpGcm9tQnl0ZXMgPVxcdTAwM2UgXFxcIkZyb21CeXRlc1xcXCIsXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozNDg6ICAgICAgICAgICAgVHJhaXQ6OkludG9CeXRlcyA9XFx1MDAzZSBcXFwiSW50b0J5dGVzXFxcIixcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTM0OS0gICAgICAgICAgICBUcmFpdDo6VW5hbGlnbmVkID1cXHUwMDNlIFxcXCJVbmFsaWduZWRcXFwiLFxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNjgtICAgICAgICAgICAgfCBUcmFpdDo6RnJvbUJ5dGVzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozNjk6ICAgICAgICAgICAgfCBUcmFpdDo6SW50b0J5dGVzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNzAtICAgICAgICAgICAgfCBUcmFpdDo6VW5hbGlnbmVkXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycy0zLS8vIFRoZSBvbmx5IHZhbGlkIHZhbHVlIG9mIHRoaXMgdHlwZSBhcmUgdGhlIGJ5dGVzIGAweEMwQzBgLlxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzLTUtI1tyZXByKHUxNildXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XFxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMTEtICAgICgkbmFtZTogaWRlbnQsICR0cmFpdDogaWRlbnQsICRsZWFkaW5nX2ZpZWxkOiB0eSkgPVxcdTAwM2Uge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjEyOiAgICAgICAgI1tkZXJpdmUoJHRyYWl0LCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFNwbGl0QXQpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzLTEzLSAgICAgICAgI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtNS0jW3JlcHIodTE2KV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM9MTA9bWFjcm9fcnVsZXMhIGRlZmluZV9wYWNrZXQge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMTEtICAgICgkbmFtZTogaWRlbnQsICR0cmFpdDogaWRlbnQsICRsZWFkaW5nX2ZpZWxkOiB0eSkgPVxcdTAwM2Uge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM6MTI6ICAgICAgICAjW2Rlcml2ZSgkdHJhaXQsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIEludG9CeXRlcyldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5ycy0xMy0gICAgICAgICNbcmVwcihDLCBhbGlnbigyKSldXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlLnJzLTYtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5yczo3OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5ycy04LSNbcmVwcihDKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy01LVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZV9yZWZfZHluYW1pY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTYtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGUucnM6NzojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTgtI1tyZXByKEMpXVxcbi0tXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy01LVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxcbi0tXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzOjY6I1tkZXJpdmUoSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlKV1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJ5X3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQyLS8vIVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo0MzovLyEgI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQ0LS8vISAjW3JlcHIoQyldXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTEtLy8hXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjUyOi8vISAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTMtLy8hICNbcmVwcihDLCBwYWNrZWQpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTQ3OD1tYWNyb19ydWxlcyEgZGVmaW5lX3R5cGUge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUxMy1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTE0OmBcXFwiLCBzdHJpbmdpZnkhKCRuYW1lKSwgXFxcImAgaW1wbGVtZW50cyBbYEZyb21CeXRlc2BdLCBbYEludG9CeXRlc2BdLCBhbmQgW2BVbmFsaWduZWRgXSxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTE1LW1ha2luZyBpdCB1c2VmdWwgZm9yIHBhcnNpbmcgYW5kIHNlcmlhbGl6YXRpb24uIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIGFuXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTIxLVtgRnJvbUJ5dGVzYF06IGNyYXRlOjpGcm9tQnl0ZXNcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTIyOltgSW50b0J5dGVzYF06IGNyYXRlOjpJbnRvQnl0ZXNcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTIzLVtgVW5hbGlnbmVkYF06IGNyYXRlOjpVbmFsaWduZWRcXFwiKSxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI0LSAgICAgICAgICAgICNbZGVyaXZlKENvcHksIENsb25lLCBFcSwgUGFydGlhbEVxLCBIYXNoKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTI1OiAgICAgICAgICAgICNbY2ZnX2F0dHIoYW55KGZlYXR1cmUgPSBcXFwiZGVyaXZlXFxcIiwgdGVzdCksIGRlcml2ZShLbm93bkxheW91dCwgSW1tdXRhYmxlLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKSldXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUyNi0gICAgICAgICAgICAjW3JlcHIodHJhbnNwYXJlbnQpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzNi0gICAgICAgIC8vIGFyZSBgSW1tdXRhYmxlYCwgYFRyeUZyb21CeXRlc2AsIGBGcm9tWmVyb3NgLCBgRnJvbUJ5dGVzYCxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTM3OiAgICAgICAgLy8gYEludG9CeXRlc2AsIGFuZCBgVW5hbGlnbmVkYC5cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTM4LSAgICAgICAgI1thbGxvdyhjbGlwcHk6Om11bHRpcGxlX3Vuc2FmZV9vcHNfcGVyX2Jsb2NrKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01NDMtICAgICAgICAgICAgaW1wbF9vcl92ZXJpZnkhKE8gPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciAkbmFtZVxcdTAwM2NPXFx1MDAzZSk7XFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjU0NDogICAgICAgICAgICBpbXBsX29yX3ZlcmlmeSEoTyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yICRuYW1lXFx1MDAzY09cXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTQ1LSAgICAgICAgICAgIGltcGxfb3JfdmVyaWZ5IShPID1cXHUwMDNlIFVuYWxpZ25lZCBmb3IgJG5hbWVcXHUwMDNjT1xcdTAwM2UpO1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTEwNDk9ICAgICAgICBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIERpc3RyaWJ1dGlvblxcdTAwM2NUXFx1MDAzZSBmb3IgVSB7fVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTEwNTYtICAgIC8vIEEgbmF0aXZlIGludGVnZXIgdHlwZSAodTE2LCBpMzIsIGV0YykuXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjEwNTc6ICAgIHRyYWl0IE5hdGl2ZTogQXJiaXRyYXJ5ICsgRnJvbUJ5dGVzICsgSW50b0J5dGVzICsgSW1tdXRhYmxlICsgQ29weSArIFBhcnRpYWxFcSArIERlYnVnIHtcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtMTA1OC0gICAgICAgIGNvbnN0IFpFUk86IFNlbGY7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwMT0gICAgdHJhaXQgQnl0ZUFycmF5OlxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczoxMTAyOiAgICAgICAgRnJvbUJ5dGVzICsgSW50b0J5dGVzICsgSW1tdXRhYmxlICsgQ29weSArIEFzUmVmXFx1MDAzY1t1OF1cXHUwMDNlICsgQXNNdXRcXHUwMDNjW3U4XVxcdTAwM2UgKyBEZWJ1ZyArIERlZmF1bHQgKyBFcVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTAzLSAgICB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwOD0gICAgdHJhaXQgQnl0ZU9yZGVyVHlwZTpcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6MTEwOTogICAgICAgIEZyb21CeXRlcyArIEludG9CeXRlcyArIFVuYWxpZ25lZCArIENvcHkgKyBFcSArIERlYnVnICsgSGFzaCArIEZyb21cXHUwMDNjU2VsZjo6TmF0aXZlXFx1MDAzZVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTEwLSAgICB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzPTE1Mj1pbXBsXFx1MDAzYydhLCBCLCBUXFx1MDAzZSBSZWZcXHUwMDNjQiwgW1RdXFx1MDAzZVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5ycy0xNTQtICAgIEI6ICdhICsgSW50b0J5dGVTbGljZU11dFxcdTAwM2MnYVxcdTAwM2UsXFxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5yczoxNTU6ICAgIFQ6IEZyb21CeXRlcyArIEludG9CeXRlcyArIEltbXV0YWJsZSxcXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1Ni17XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycz04MTI9aW1wbFxcdTAwM2NTcmMsIERzdDogP1NpemVkICsgVW5hbGlnbmVkXFx1MDAzZSBGcm9tXFx1MDAzY0Nhc3RFcnJvclxcdTAwM2NTcmMsIERzdFxcdTAwM2VcXHUwMDNlIGZvciBTaXplRXJyb3JcXHUwMDNjU3JjLCBEc3RcXHUwMDNlIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2Vycm9yLnJzLTgyOC0gICAgLy8vXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM6ODI5OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODMwLSAgICAvLy8gI1tyZXByKEMpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM3LSAgICAvLy9cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5yczo4Mzg6ICAgIC8vLyAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MzktICAgIC8vLyAjW3JlcHIoQywgcGFja2VkKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1LS8vICAgb25lIHBvc3NpYmxlIHNlcXVlbmNlIG9mIDAgYnl0ZXMsIGFuZCBgKClgIGlzIGluaGFiaXRlZC5cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyNjovLyAtIGBJbnRvQnl0ZXNgOiBTaW5jZSBgKClgIGhhcyBzaXplIDAsIGl0IGNvbnRhaW5zIG5vIHBhZGRpbmcgYnl0ZXMuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjctLy8gLSBgVW5hbGlnbmVkYDogYCgpYCBoYXMgYWxpZ25tZW50IDEuXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0zMS1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MzI6ICAgIHVuc2FmZV9pbXBsISgoKTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMzMtICAgIGFzc2VydF91bmFsaWduZWQhKCgpKTtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTM5LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBudW1lcmljIHR5cGVzIFsxXVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjQwOi8vIC0gYEludG9CeXRlc2A6IG51bWVyaWMgdHlwZXMgaGF2ZSBubyBwYWRkaW5nIGJ5dGVzIFsxXVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQxLS8vIC0gYFVuYWxpZ25lZGAgKGB1OGAgYW5kIGBpOGAgb25seSk6IFRoZSByZWZlcmVuY2UgWzJdIHNwZWNpZmllcyB0aGUgc2l6ZSBvZlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjctY29uc3QgXzogKCkgPSB1bnNhZmUge1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY4OiAgICB1bnNhZmVfaW1wbCEodTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY5OiAgICB1bnNhZmVfaW1wbCEoaTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTcwLSAgICBhc3NlcnRfdW5hbGlnbmVkISh1OCwgaTgpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjcxOiAgICB1bnNhZmVfaW1wbCEodTE2OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzI6ICAgIHVuc2FmZV9pbXBsIShpMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3MzogICAgdW5zYWZlX2ltcGwhKHUzMjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc0OiAgICB1bnNhZmVfaW1wbCEoaTMyOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzU6ICAgIHVuc2FmZV9pbXBsISh1NjQ6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NjogICAgdW5zYWZlX2ltcGwhKGk2NDogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc3OiAgICB1bnNhZmVfaW1wbCEodTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc4OiAgICB1bnNhZmVfaW1wbCEoaTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc5OiAgICB1bnNhZmVfaW1wbCEodXNpemU6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MDogICAgdW5zYWZlX2ltcGwhKGlzaXplOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODE6ICAgIHVuc2FmZV9pbXBsIShmMzI6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MjogICAgdW5zYWZlX2ltcGwhKGY2NDogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgzLSAgICAjW2NmZyhmZWF0dXJlID0gXFxcImZsb2F0LW5pZ2h0bHlcXFwiKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4NDogICAgdW5zYWZlX2ltcGwhKCNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gXFxcImZsb2F0LW5pZ2h0bHlcXFwiKSkpXSBmMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NS0gICAgI1tjZmcoZmVhdHVyZSA9IFxcXCJmbG9hdC1uaWdodGx5XFxcIildXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODY6ICAgIHVuc2FmZV9pbXBsISgjW2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9IFxcXCJmbG9hdC1uaWdodGx5XFxcIikpKV0gZjEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTg3LX07XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy05MS0vLyAtIGBGcm9tWmVyb3NgOiBWYWxpZCBzaW5jZSBcXFwiW3RdaGUgdmFsdWUgZmFsc2UgaGFzIHRoZSBiaXQgcGF0dGVybiAweDAwXFxcIiBbMV0uXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6OTI6Ly8gLSBgSW50b0J5dGVzYDogU2luY2UgXFxcInRoZSBib29sZWFuIHR5cGUgaGFzIGEgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIDEgZWFjaFxcXCJcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy05My0vLyAgIGFuZCBcXFwiVGhlIHZhbHVlIGZhbHNlIGhhcyB0aGUgYml0IHBhdHRlcm4gMHgwMCBhbmQgdGhlIHZhbHVlIHRydWUgaGFzIHRoZVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTAwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTAxOmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKGJvb2w6IEltbXV0YWJsZSwgRnJvbVplcm9zLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCkgfTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDItYXNzZXJ0X3VuYWxpZ25lZCEoYm9vbCk7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMjQtLy8gICBjb250YWlucyAweDAwMDAuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI1Oi8vIC0gYEludG9CeXRlc2A6IGBjaGFyYCBpcyBwZXIgcmVmZXJlbmNlIFsxXSBcXFwicmVwcmVzZW50ZWQgYXMgYSAzMi1iaXQgdW5zaWduZWRcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxMjY6Ly8gICB3b3JkXFxcIiAoYHUzMmApIHdoaWNoIGlzIGBJbnRvQnl0ZXNgLiBOb3RlIHRoYXQgdW5saWtlIGB1MzJgLCBub3QgYWxsIGJpdFxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTEyNy0vLyAgIHBhdHRlcm5zIGFyZSB2YWxpZCBmb3IgYGNoYXJgLlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTMxOmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKGNoYXI6IEltbXV0YWJsZSwgRnJvbVplcm9zLCBJbnRvQnl0ZXMpIH07XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMyLVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUwLS8vIC0gYEltbXV0YWJsZWA6IGBbdThdYCBkb2VzIG5vdCBjb250YWluIGFueSBgVW5zYWZlQ2VsbGBzLlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE1MTovLyAtIGBGcm9tWmVyb3NgLCBgSW50b0J5dGVzYCwgYFVuYWxpZ25lZGA6IGBbdThdYCBpcyBgRnJvbVplcm9zYCwgYEludG9CeXRlc2AsXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUyLS8vICAgYW5kIGBVbmFsaWduZWRgLlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTU2LS8vXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTU3Oi8vIEZJWE1FKCM0MjkpOiBJbXByb3ZlIHNhZmV0eSBwcm9vZiBmb3IgYEZyb21aZXJvc2AgYW5kIGBJbnRvQnl0ZXNgOyBoYXZpbmcgdGhlIHNhbWVcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xNTgtLy8gbGF5b3V0IGFzIGBbdThdYCBpc24ndCBzdWZmaWNpZW50Llxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTY0LSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTY1OmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKHN0cjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcywgVW5hbGlnbmVkKSB9O1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE2Ni1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTE4Mj1tYWNyb19ydWxlcyEgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8ge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTkyLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE5MzovLyBgTm9uWmVyb1h4eGAgaXMgYEludG9CeXRlc2AsIGJ1dCBub3QgYEZyb21aZXJvc2Agb3IgYEZyb21CeXRlc2AuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk0LS8vXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk1LS8vIFNBRkVUWTpcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxOTY6Ly8gLSBgSW50b0J5dGVzYDogYE5vblplcm9YeHhgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgaXRzIGFzc29jaWF0ZWQgcHJpbWl0aXZlLlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5Ny0vLyAgICBTaW5jZSBpdCBpcyB0aGUgc2FtZSBzaXplLCB0aGlzIGd1YXJhbnRlZXMgaXQgaGFzIG5vIHBhZGRpbmcgLSBpbnRlZ2Vyc1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI2LWNvbnN0IF86ICgpID0gdW5zYWZlIHtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMjc6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTg6IEltbXV0YWJsZSwgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIyODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9JODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI5LSAgICBhc3NlcnRfdW5hbGlnbmVkIShOb25aZXJvVTgsIE5vblplcm9JOCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjMwOiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb1UxNjogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzMTogICAgdW5zYWZlX2ltcGwhKE5vblplcm9JMTY6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzI6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjMzOiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0kzMjogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzNDogICAgdW5zYWZlX2ltcGwhKE5vblplcm9VNjQ6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzU6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM2OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb1UxMjg6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzc6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTEyODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Vc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzOTogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Jc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI0MC0gICAgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8hKFxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjU2LS8vIFNBRkVUWTpcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyNTc6Ly8gLSBgVHJ5RnJvbUJ5dGVzYCAod2l0aCBubyB2YWxpZGF0b3IpLCBgRnJvbVplcm9zYCwgYEZyb21CeXRlc2AsIGBJbnRvQnl0ZXNgOlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1OC0vLyAgIFRoZSBSdXN0IGNvbXBpbGVyIHJldXNlcyBgMGAgdmFsdWUgdG8gcmVwcmVzZW50IGBOb25lYCwgc29cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4MS1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjgyOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9VOFxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODM6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb0k4XFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4NC0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoT3B0aW9uXFx1MDAzY05vblplcm9VOFxcdTAwM2UsIE9wdGlvblxcdTAwM2NOb25aZXJvSThcXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODU6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb1UxNlxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg2OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9JMTZcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4NzogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvVTMyXFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODg6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb0kzMlxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg5OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9VNjRcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MDogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvSTY0XFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTE6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb1UxMjhcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MjogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvSTEyOFxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjkzOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9Vc2l6ZVxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjk0OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9Jc2l6ZVxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjk1LX07XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00MDI9ICAgIG1hY3JvX3J1bGVzISBpbXBsX3RyYWl0c19mb3JfYXRvbWljcyB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MDgtICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XFx1MDAzZSBUcnlGcm9tQnl0ZXMgZm9yICRhdG9taWNzIFskcHJpbWl0aXZlc10pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjQwOTogICAgICAgICAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cXHUwMDNlIEludG9CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNDEwLSAgICAgICAgICAgICkqXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00NTY9ICAgIG1vZCBhdG9taWNfOCB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00NjUtICAgICAgICBpbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoPVxcdTAwM2UgVHJ5RnJvbUJ5dGVzIGZvciBBdG9taWNCb29sIFtib29sXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NDY2OiAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cXHUwMDNlIEludG9CeXRlcyBmb3IgQXRvbWljQm9vbCBbYm9vbF0pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQ2Ny1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTYwMz0gICAgbW9kIGF0b21pY19wdHIge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjA5LVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjYxMDogICAgICAgIC8vIEZJWE1FKCMxNzApOiBJbXBsZW1lbnQgYEZyb21CeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIG9uY2Ugd2UgaW1wbGVtZW50XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjExLSAgICAgICAgLy8gdGhvc2UgdHJhaXRzIGZvciBgKm11dCBUYC5cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY0Ny0vLyAgIG9uZSBwb3NzaWJsZSBzZXF1ZW5jZSBvZiAwIGJ5dGVzLCBhbmQgYFBoYW50b21EYXRhYCBpcyBpbmhhYml0ZWQuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjQ4Oi8vIC0gYEludG9CeXRlc2A6IFNpbmNlIGBQaGFudG9tRGF0YWAgaGFzIHNpemUgMCwgaXQgY29udGFpbnMgbm8gcGFkZGluZyBieXRlcy5cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NDktLy8gLSBgVW5hbGlnbmVkYDogUGVyIHRoZSBwcmVjZWRpbmcgcmVmZXJlbmNlLCBgUGhhbnRvbURhdGFgIGhhcyBhbGlnbm1lbnQgMS5cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1Ny0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XFx1MDAzZSBGcm9tQnl0ZXMgZm9yIFBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2NTg6ICAgIHVuc2FmZV9pbXBsIShUOiA/U2l6ZWQgPVxcdTAwM2UgSW50b0J5dGVzIGZvciBQaGFudG9tRGF0YVxcdTAwM2NUXFx1MDAzZSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjU5LSAgICB1bnNhZmVfaW1wbCEoVDogP1NpemVkID1cXHUwMDNlIFVuYWxpZ25lZCBmb3IgUGhhbnRvbURhdGFcXHUwMDNjVFxcdTAwM2UpO1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY1LWltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiBGcm9tQnl0ZXMgPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciBXcmFwcGluZ1xcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjY2OmltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiBJbnRvQnl0ZXMgPVxcdTAwM2UgSW50b0J5dGVzIGZvciBXcmFwcGluZ1xcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY3LWFzc2VydF91bmFsaWduZWQhKFdyYXBwaW5nXFx1MDAzYygpXFx1MDAzZSwgV3JhcHBpbmdcXHUwMDNjdThcXHUwMDNlKTtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTczOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICsgRnJvbUJ5dGVzID1cXHUwMDNlIEZyb21CeXRlcyBmb3IgTWFudWFsbHlEcm9wXFx1MDAzY1RcXHUwMDNlW1RdKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEludG9CeXRlcyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yIE1hbnVhbGx5RHJvcFxcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzQxLS8vIFNBRkVUWTogYE1hbnVhbGx5RHJvcFxcdTAwM2NUXFx1MDAzZWAgaGFzIHRoZSBzYW1lIGxheW91dCBhcyBgVGAgWzFdLCBhbmQgdGh1cyBoYXMgdGhlXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz04MTM9ICAgICAgICBmbiBwcm9qZWN0KHNsZjogUHRySW5uZXJcXHUwMDNjJ18sIFNlbGZcXHUwMDNlKSAtXFx1MDAzZSAqbXV0IFQge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtODI5LWltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiA/U2l6ZWQgKyBGcm9tQnl0ZXMgPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciBDZWxsXFx1MDAzY1RcXHUwMDNlW1RdKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MzA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEludG9CeXRlcyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yIENlbGxcXHUwMDNjVFxcdTAwM2VbVF0pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgzMS0vLyBTQUZFVFk6IGBDZWxsXFx1MDAzY1RcXHUwMDNlYCBoYXMgdGhlIHNhbWUgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIGFzIGBUYCBbMV0sIGFuZCB0aHVzXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NDAtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEZyb21CeXRlcyA9XFx1MDAzZSBGcm9tQnl0ZXMgZm9yIFVuc2FmZUNlbGxcXHUwMDNjVFxcdTAwM2VbVF0pO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTozMC42OTAwNzA1NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk3NzAzMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlcy5cblxuKipBbmFseXppbmcgYEFzQnl0ZXNgIHZzLiBgSW50b0J5dGVzYCBpbiB0aGUgUnVzdCBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgYSByZWZyZXNoZXIgb24gdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gYEFzQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGhvdyB0aGV5IGFyZSBiZWluZyB1c2VkLiBUaW1lIHRvIGRpdmUgaW50byBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCBhbmQgYHJ1c3Qva2VybmVsL3ByZWx1ZGUucnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGVzZSB0cmFpdHMgd2l0aGluIHRoZSBrZXJuZWwncyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBtZW1vcnkgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWxseSB1bnNhZmUgY29kZS4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGltcGxlbWVudGF0aW9ucywgdXNhZ2UgZXhhbXBsZXMsIGFuZCBhbnkgY29tbWVudHMgdGhhdCBpbGx1bWluYXRlIHRoZSBkZXNpZ24gZGVjaXNpb25zLiBBcmUgd2UgY29uY2VybmVkIGFib3V0IHplcm8tY29weSBjb252ZXJzaW9ucyBoZXJlPyBEb2VzIGBBc0J5dGVzYCBzdWdnZXN0IGEgbW9yZSAqYm9ycm93ZWQqIG9yIHZpZXctbGlrZSBhcHByb2FjaCwgd2hpbGUgYEludG9CeXRlc2AgaW1wbGllcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgb3IgcG90ZW50aWFsbHkgYSBjb3B5aW5nIG9wZXJhdGlvbj8gSSdtIGhvcGluZyB0byBjbGFyaWZ5IGlmIHdlIGFyZSB1c2luZyB0aGVzZSB0byBhY2hpZXZlIG1lbW9yeSBsYXlvdXQgaW50ZXJwcmV0YXRpb25zIG9mIHR5cGVzLCBvciBqdXN0IGdlbmVyYWwgY29udmVyc2lvbnMuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byBpZGVudGlmeSBhbnkgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgcmVnYXJkaW5nIHNhZmV0eSwgYWxpZ25tZW50LCBvciBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIHdoZW4gdXRpbGl6aW5nIHRoZXNlIGNvbnZlcnNpb24gdHJhaXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzIwNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjMyLjc4Nzc3NTU4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODYxOTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdWIgdXNlIHplcm9jb3B5OjpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9rZXJuZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02My0jW2RvYyhub19pbmxpbmUpXVxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnM6NjQ6cHViIHVzZSB6ZXJvY29weTo6e1xcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnMtNjUtICAgIEZyb21CeXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzIuODc2NDAxNDE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNTM1NjExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHJ1c3Qva2VybmVsL3ByZWx1ZGUucnNgIChMaW5lcyA1MC05MCkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhhdCBgcHJlbHVkZS5yc2AgZmlsZSB3aXRoaW4gdGhlIGtlcm5lbCdzIFJ1c3QgY29kZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgNTAgdGhyb3VnaCA5MC4gVGhhdCdzIGEgY3J1Y2lhbCBjaHVuayDigJMgSSBiZXQgaXQncyBkZWZpbmluZyBzb21lIGNvcmUgYWJzdHJhY3Rpb25zIG9yIHR5cGUgYWxpYXNlcyB0aGF0IGFyZSBmb3VuZGF0aW9uYWwgdG8gdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgb3ZlcmFsbCBwcm9qZWN0LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCwgaGFyZHdhcmUgYWNjZXNzLCBvciBwZXJoYXBzIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhhdCByYW5nZS4gSXQncyB0aGUgXCJwcmVsdWRlLFwiIHNvIGl0J3MgbGlrZWx5IHNldHRpbmcgdXAgY29tbW9uIHRyYWl0cyBvciBkYXRhIHN0cnVjdHVyZXMgdG8gYmUgaW4gc2NvcGUgZXZlcnl3aGVyZSBlbHNlLiBJ4oCZbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtYWRlLCBvciBpZiB0aGVyZSBpcyBhbnkgaW50ZXJlc3RpbmcgdXNlIG9mIGB1bnNhZmVgIG9yIGBjb25zdGAgY29udGV4dHMgdGhhdCB3YXJyYW50cyBmdXJ0aGVyIHNjcnV0aW55LiBJIHdhbnQgdG8gcXVpY2tseSBncmFzcCB0aGUgZGVzaWduIGNob2ljZXMgdGhlcmUg4oCTIHRoZSBpbnRlbnQgb2YgdGhlIGF1dGhvci90ZWFtIGJlaGluZCB0aG9zZSBsaW5lcy4gSXMgaXQgaWRpb21hdGljIFJ1c3Q/IEFyZSB0aGV5IGFkaGVyaW5nIHRvIGJlc3QgcHJhY3RpY2VzIGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQsIG9yIG1ha2luZyB0cmFkZW9mZnMgZm9yIHBlcmZvcm1hbmNlIG9yIGhhcmR3YXJlIGNvbnN0cmFpbnRzPyBUaW1lIHRvIGRpc3NlY3QgaXQgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU3MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjM1LjA5MTc1OTU1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL3ByZWx1ZGUucnNcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFxuICA1MTpcXHQjW2RvYyhub19pbmxpbmUpXVxcbiAgNTI6XFx0cHViIHVzZSBwaW5faW5pdDo6e1xcbiAgNTM6XFx0ICAgIGluaXQsXFxuICA1NDpcXHQgICAgcGluX2RhdGEsXFxuICA1NTpcXHQgICAgcGluX2luaXQsXFxuICA1NjpcXHQgICAgcGlubmVkX2Ryb3AsXFxuICA1NzpcXHQgICAgSW5QbGFjZVdyaXRlLFxcbiAgNTg6XFx0ICAgIEluaXQsXFxuICA1OTpcXHQgICAgUGluSW5pdCxcXG4gIDYwOlxcdCAgICBaZXJvYWJsZSwgLy9cXG4gIDYxOlxcdH07XFxuICA2MjpcXHRcXG4gIDYzOlxcdCNbZG9jKG5vX2lubGluZSldXFxuICA2NDpcXHRwdWIgdXNlIHplcm9jb3B5Ojp7XFxuICA2NTpcXHQgICAgRnJvbUJ5dGVzLFxcbiAgNjY6XFx0ICAgIEludG9CeXRlcywgLy9cXG4gIDY3OlxcdH07XFxuICA2ODpcXHRcXG4gIDY5OlxcdCNbZG9jKG5vX2lubGluZSldXFxuICA3MDpcXHRwdWIgdXNlIHplcm9jb3B5X2Rlcml2ZTo6e1xcbiAgNzE6XFx0ICAgIEZyb21CeXRlcyxcXG4gIDcyOlxcdCAgICBJbnRvQnl0ZXMsIC8vXFxuICA3MzpcXHR9O1xcbiAgNzQ6XFx0XFxuICA3NTpcXHQjW2RvYyhub19pbmxpbmUpXVxcbiAgNzY6XFx0cHViIHVzZSBzdXBlcjo6e1xcbiAgNzc6XFx0ICAgIGFsbG9jOjp7XFxuICA3ODpcXHQgICAgICAgIGZsYWdzOjoqLFxcbiAgNzk6XFx0ICAgICAgICBCb3gsXFxuICA4MDpcXHQgICAgICAgIEtCb3gsXFxuICA4MTpcXHQgICAgICAgIEtWQm94LFxcbiAgODI6XFx0ICAgICAgICBLVlZlYyxcXG4gIDgzOlxcdCAgICAgICAgS1ZlYyxcXG4gIDg0OlxcdCAgICAgICAgVkJveCxcXG4gIDg1OlxcdCAgICAgICAgVlZlYyxcXG4gIDg2OlxcdCAgICAgICAgVmVjLCAvL1xcbiAgODc6XFx0ICAgIH0sXFxuICA4ODpcXHQgICAgYnVpbGRfYXNzZXJ0Ojp7XFxuICA4OTpcXHQgICAgICAgIGJ1aWxkX2Fzc2VydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzUuMDkxODI1MzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY5OTkzMzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlY2VudCBgemVyb2NvcHlgIFVwZGF0ZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYHplcm9jb3B5YCB2ZXJzaW9uIDAuOCB0cmlnZ2VyZWQgYSByZW5hbWUg4oCTIGBBc0J5dGVzYCBpcyBub3cgYEludG9CeXRlc2AuIFRoZSBgcHJlbHVkZWAgbm93IGV4cG9zZXMgYEludG9CeXRlc2AgZGlyZWN0bHkgZnJvbSBgemVyb2NvcHlgLCB3aGljaCBpcyBoZWxwZnVsLiBUaGlzIGNvbW1pdCBzcGVjaWZpY2FsbHkgdXBkYXRlcyB0aGUga2VybmVsIGNvZGUuIExldCdzIHNlZS4uLiB0aGUgYGRtYS5yc2AsIGBuZXRsaW5rLnJzYCwgYW5kIGB1YWNjZXNzLnJzYCBmaWxlcyBhbGwgcmVwbGFjZSBgQXNCeXRlc2Agd2l0aCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlaXIgdHJhaXQgYm91bmRzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBnbGFuY2UgYXQgdGhlIEdpdCBsb2cuIElzIHRoaXMgYSBzaW1wbGUgdHJhaXQgcmVuYW1lLCBvciBkaWQgc29tZXRoaW5nIG1vcmUgc2lnbmlmaWNhbnQgY2hhbmdlIGF0IHJ1bnRpbWU/IFBlcmhhcHMgdGhlcmUgaXMgc29tZSBzdWJ0bGUgYmVoYXZpb3IgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGtub3duLiBCZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBjb21taXQgaGlzdG9yeSB0aG91Z2gsIGxldCBtZSBjaGVjayB0aGUgYHRyYW5zbXV0ZS5yc2AgbW9kdWxlIGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRyYW5zbXV0ZSBmdW5jdGlvbmFsaXR5IGlzIHN0aWxsIGF2YWlsYWJsZSBhbmQgaGFzbid0IGNoYW5nZWQgaXRzIGZ1bmN0aW9uLiBUaGlzIHJlbmFtZSBjb3VsZCBoYXZlIGFmZmVjdGVkIHRoYXQgc29tZWhvdy4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiB0aGVyZSB0byBjaGVjayBpdHMgY3VycmVudCBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyOTQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTozNy43OTE3NjEzMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTcwNDU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdWIgbW9kIHRyYW5zbXV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJydXN0L2tlcm5lbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJydXN0L2tlcm5lbC9saWIucnMtMTQwLXB1YiBtb2QgdHJhY2Vwb2ludDtcXG5ydXN0L2tlcm5lbC9saWIucnM6MTQxOnB1YiBtb2QgdHJhbnNtdXRlO1xcbnJ1c3Qva2VybmVsL2xpYi5ycy0xNDItcHViIG1vZCB0eXBlcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzguMTkxNDcxMTIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzU4MDkwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkncmUgaGFuZGxpbmcgdGhpcyBhdCB0aGUga2VybmVsIGxldmVsLiBUcmFuc211dGF0aW9uIGlzIGEgbm90b3Jpb3VzbHkgdHJpY2t5IGFyZWEsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW1zIGxhbmd1YWdlIGxpa2UgUnVzdCB3aGVyZSB5b3UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBkaXJlY3RseS4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgYHVuc2FmZWAgYmxvY2tzLCBvZiBjb3Vyc2UuIFRoZSBjb3JlIHF1ZXN0aW9ucyBhcmU6IFdoYXQgYXJlIHRoZSBjb25zdHJhaW50cyBiZWluZyBwbGFjZWQgb24gdHJhbnNtdXRlcz8gQXJlIHRoZXkgcmVseWluZyBoZWF2aWx5IG9uIGFsaWdubWVudCBndWFyYW50ZWVzPyBXaGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIOKAkyBhcmUgdGhleSB1c2luZyBjb21waWxlLXRpbWUgY2hlY2tzLCBydW50aW1lIGFzc2VydGlvbnMsIG9yIGEgY29tYmluYXRpb24/IEFuZCBhcmUgdGhleSBiZWluZyBvdmVybHkgcmVzdHJpY3RpdmUsIG9yIGNsZXZlcmx5IGV4cGxvaXRpbmcgZXZlcnkgcG9zc2libGUgb3B0aW1pemF0aW9uPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHVzZSBvZiBgI1tyZXByXWAgYXR0cmlidXRlcyBhbmQgaG93IHRob3NlIGFmZmVjdCB0aGUgdHJhbnNtdXRlJ3Mgc2FmZXR5IGFuZCBlZmZlY3RpdmVuZXNzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgZ29vZCBleGVyY2lzZSwgSSBjYW4gZmVlbCBpdC4gVGltZSB0byBnZXQgZG93biB0byB0aGUgbml0dHktZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgxMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQwLjI2NzI4NDQyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwicnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Ly8hIFRyYWl0cyBmb3IgdHJhbnNtdXRpbmcgdHlwZXMuXFxuICAgNDpcXHRcXG4gICA1OlxcdHVzZSBjb3JlOjptZW06OnNpemVfb2Y7XFxuICAgNjpcXHRcXG4gICA3OlxcdC8vLyBUeXBlcyBmb3Igd2hpY2ggYW55IGJpdCBwYXR0ZXJuIGlzIHZhbGlkLlxcbiAgIDg6XFx0Ly8vXFxuICAgOTpcXHQvLy8gTm90IGFsbCB0eXBlcyBhcmUgdmFsaWQgZm9yIGFsbCB2YWx1ZXMuIEZvciBleGFtcGxlLCBhIGBib29sYCBtdXN0IGJlIGVpdGhlciB6ZXJvIG9yIG9uZSwgc29cXG4gIDEwOlxcdC8vLyByZWFkaW5nIGFyYml0cmFyeSBieXRlcyBpbnRvIHNvbWV0aGluZyB0aGF0IGNvbnRhaW5zIGEgYGJvb2xgIGlzIG5vdCBva2F5LlxcbiAgMTE6XFx0Ly8vXFxuICAxMjpcXHQvLy8gSXQncyBva2F5IGZvciB0aGUgdHlwZSB0byBoYXZlIHBhZGRpbmcsIGFzIGluaXRpYWxpemluZyB0aG9zZSBieXRlcyBoYXMgbm8gZWZmZWN0LlxcbiAgMTM6XFx0Ly8vXFxuICAxNDpcXHQvLy8gIyBFeGFtcGxlc1xcbiAgMTU6XFx0Ly8vXFxuICAxNjpcXHQvLy8gYGBgXFxuICAxNzpcXHQvLy8gdXNlIGtlcm5lbDo6dHJhbnNtdXRlOjpGcm9tQnl0ZXM7XFxuICAxODpcXHQvLy9cXG4gIDE5OlxcdC8vLyAjIGZuIHRlc3QoKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjKClcXHUwMDNlIHtcXG4gIDIwOlxcdC8vLyBsZXQgcmF3ID0gWzEsIDIsIDMsIDRdO1xcbiAgMjE6XFx0Ly8vXFxuICAyMjpcXHQvLy8gbGV0IHJlc3VsdCA9IHUzMjo6ZnJvbV9ieXRlcyhcXHUwMDI2cmF3KT87XFxuICAyMzpcXHQvLy9cXG4gIDI0OlxcdC8vLyAjW2NmZyh0YXJnZXRfZW5kaWFuID0gXFxcImxpdHRsZVxcXCIpXVxcbiAgMjU6XFx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHg0MDMwMjAxKTtcXG4gIDI2OlxcdC8vL1xcbiAgMjc6XFx0Ly8vICNbY2ZnKHRhcmdldF9lbmRpYW4gPSBcXFwiYmlnXFxcIildXFxuICAyODpcXHQvLy8gYXNzZXJ0X2VxISgqcmVzdWx0LCAweDEwMjAzMDQpO1xcbiAgMjk6XFx0Ly8vXFxuICAzMDpcXHQvLy8gIyBTb21lKCgpKSB9XFxuICAzMTpcXHQvLy8gIyB0ZXN0KCkub2tfb3IoRUlOVkFMKT87XFxuICAzMjpcXHQvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuICAzMzpcXHQvLy8gYGBgXFxuICAzNDpcXHQvLy9cXG4gIDM1OlxcdC8vLyAjIFNhZmV0eVxcbiAgMzY6XFx0Ly8vXFxuICAzNzpcXHQvLy8gQWxsIGJpdC1wYXR0ZXJucyBtdXN0IGJlIHZhbGlkIGZvciB0aGlzIHR5cGUuIFRoaXMgdHlwZSBtdXN0IG5vdCBoYXZlIGludGVyaW9yIG11dGFiaWxpdHkuXFxuICAzODpcXHRwdWIgdW5zYWZlIHRyYWl0IEZyb21CeXRlcyB7XFxuICAzOTpcXHQgICAgLy8vIENvbnZlcnRzIGEgc2xpY2Ugb2YgYnl0ZXMgdG8gYSByZWZlcmVuY2UgdG8gYFNlbGZgLlxcbiAgNDA6XFx0ICAgIC8vL1xcbiAgNDE6XFx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcXG4gIDQyOlxcdCAgICAvLy8gYFRgIGFuZCBkaWZmZXJlbnQgZnJvbSB6ZXJvLlxcbiAgNDM6XFx0ICAgIC8vL1xcbiAgNDQ6XFx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXFxuICA0NTpcXHQgICAgZm4gZnJvbV9ieXRlcyhieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2U2VsZlxcdTAwM2VcXG4gIDQ2OlxcdCAgICB3aGVyZVxcbiAgNDc6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gIDQ4OlxcdCAgICB7XFxuICA0OTpcXHQgICAgICAgIGxldCBzbGljZV9wdHIgPSBieXRlcy5hc19wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDUwOlxcdCAgICAgICAgbGV0IHNpemUgPSBzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDUxOlxcdFxcbiAgNTI6XFx0ICAgICAgICBpZiBieXRlcy5sZW4oKSA9PSBzaXplIFxcdTAwMjZcXHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xcbiAgNTM6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiBTaXplIGFuZCBhbGlnbm1lbnQgd2VyZSBqdXN0IGNoZWNrZWQuXFxuICA1NDpcXHQgICAgICAgICAgICB1bnNhZmUgeyBTb21lKFxcdTAwMjYqc2xpY2VfcHRyKSB9XFxuICA1NTpcXHQgICAgICAgIH0gZWxzZSB7XFxuICA1NjpcXHQgICAgICAgICAgICBOb25lXFxuICA1NzpcXHQgICAgICAgIH1cXG4gIDU4OlxcdCAgICB9XFxuICA1OTpcXHRcXG4gIDYwOlxcdCAgICAvLy8gQ29udmVydHMgdGhlIGJlZ2lubmluZyBvZiBgYnl0ZXNgIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cXG4gIDYxOlxcdCAgICAvLy9cXG4gIDYyOlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNgXSwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IGBieXRlc2AgZG9lcyBub3RcXG4gIDYzOlxcdCAgICAvLy8gbmVlZCB0byBiZSB0aGUgc2FtZSBzaXplIG9mIGBTZWxmYCAtIHRoZSBhcHByb3ByaWF0ZSBwb3J0aW9uIGlzIGN1dCBmcm9tIHRoZSBiZWdpbm5pbmcgb2ZcXG4gIDY0OlxcdCAgICAvLy8gYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cXG4gIDY1OlxcdCAgICBmbiBmcm9tX2J5dGVzX3ByZWZpeChieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2MoXFx1MDAyNlNlbGYsIFxcdTAwMjZbdThdKVxcdTAwM2VcXG4gIDY2OlxcdCAgICB3aGVyZVxcbiAgNjc6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gIDY4OlxcdCAgICB7XFxuICA2OTpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfY2hlY2tlZChzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKSk/O1xcbiAgNzA6XFx0XFxuICA3MTpcXHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXMocHJlZml4KS5tYXAofHN8IChzLCByZW1haW5kZXIpKVxcbiAgNzI6XFx0ICAgIH1cXG4gIDczOlxcdFxcbiAgNzQ6XFx0ICAgIC8vLyBDb252ZXJ0cyBhIG11dGFibGUgc2xpY2Ugb2YgYnl0ZXMgdG8gYSByZWZlcmVuY2UgdG8gYFNlbGZgLlxcbiAgNzU6XFx0ICAgIC8vL1xcbiAgNzY6XFx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcXG4gIDc3OlxcdCAgICAvLy8gYFRgIGFuZCBkaWZmZXJlbnQgZnJvbSB6ZXJvLlxcbiAgNzg6XFx0ICAgIC8vL1xcbiAgNzk6XFx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXFxuICA4MDpcXHQgICAgZm4gZnJvbV9ieXRlc19tdXQoYnl0ZXM6IFxcdTAwMjZtdXQgW3U4XSkgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1xcdTAwMjZtdXQgU2VsZlxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NDAuMjY3NDI5MDA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODQ1MDI3MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0J3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhlIGNvZGUsIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYHJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYHRyYW5zbXV0ZS5yc2Agd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC4gSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYgaGVyZSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIHJlaW50ZXJwcmV0YXRpb25zIG9mIG1lbW9yeSBhbmQgcG9zc2libHkgc29tZSB1bmNoZWNrZWQgdHlwZSBjb252ZXJzaW9ucy4gSSdtIGhvcGluZyB0byBzZWUgd2VsbC1jb21tZW50ZWQgY29kZSwgZ2l2ZW4gdGhlIGluaGVyZW50IGRhbmdlcnMgb2YgdW5jaGVja2VkIHRyYW5zbXV0YXRpb24uIEknbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlcyBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gSSB3YW50IHRvIHNwb3QgYW55IHBsYWNlcyB3aGVyZSB0aGUgY29tcGlsZXIgbWlnaHQgYmUgbGVhbmluZyBvbiBvcHRpbWl6YXRpb25zLCBhbmQgaG93IHRoZSBjb2RlIGd1YXJkcyBhZ2FpbnN0IHRoYXQuIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkncmUgbWFuYWdpbmcgbGlmZXRpbWVzIGlmIHBvaW50ZXJzIGFyZSBpbnZvbHZlZCBpbiB0cmFuc211dGF0aW9uLiBJJ20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYHVuc2FmZWAgYmxvY2tzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIGludmFyaWFudHMgYXJlIHZlcnkgZXhwbGljaXRseSBkb2N1bWVudGVkLiBMZXQncyBzZWUgaWYgaXQncyB1c2luZyB0aGUgc3RhbmRhcmQgbGlicmFyeSBgdHJhbnNtdXRlYCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBmb3Iga2VybmVsLWxldmVsIG9wZXJhdGlvbnMuLi4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGFsaWFzaW5nIGFuZCBkYXRhIHJhY2VzIGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudC4gSSdtIGFsc28gaG9waW5nIHRoZXkncmUgYXZvaWRpbmcgYW55IHVuZGVmaW5lZCBiZWhhdmlvciwgb2YgY291cnNlISBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjI4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTo0Mi45NTE5MzU0NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHQgICAgd2hlcmVcXG4gIDgyOlxcdCAgICAgICAgU2VsZjogQXNCeXRlcyArIFNpemVkLFxcbiAgODM6XFx0ICAgIHtcXG4gIDg0OlxcdCAgICAgICAgbGV0IHNsaWNlX3B0ciA9IGJ5dGVzLmFzX211dF9wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDg1OlxcdCAgICAgICAgbGV0IHNpemUgPSBzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0ICAgICAgICBpZiBieXRlcy5sZW4oKSA9PSBzaXplIFxcdTAwMjZcXHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xcbiAgODg6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiBTaXplIGFuZCBhbGlnbm1lbnQgd2VyZSBqdXN0IGNoZWNrZWQuXFxuICA4OTpcXHQgICAgICAgICAgICB1bnNhZmUgeyBTb21lKFxcdTAwMjZtdXQgKnNsaWNlX3B0cikgfVxcbiAgOTA6XFx0ICAgICAgICB9IGVsc2Uge1xcbiAgOTE6XFx0ICAgICAgICAgICAgTm9uZVxcbiAgOTI6XFx0ICAgICAgICB9XFxuICA5MzpcXHQgICAgfVxcbiAgOTQ6XFx0XFxuICA5NTpcXHQgICAgLy8vIENvbnZlcnRzIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYCB0byBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGBTZWxmYC5cXG4gIDk2OlxcdCAgICAvLy9cXG4gIDk3OlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfbXV0YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcXG4gIDk4OlxcdCAgICAvLy8gbm90IG5lZWQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBvZiBgU2VsZmAgLSB0aGUgYXBwcm9wcmlhdGUgcG9ydGlvbiBpcyBjdXQgZnJvbSB0aGUgYmVnaW5uaW5nXFxuICA5OTpcXHQgICAgLy8vIG9mIGBieXRlc2AsIGFuZCB0aGUgcmVtYWluZGVyIHJldHVybmVkIGFsb25nc2lkZSBgU2VsZmAuXFxuIDEwMDpcXHQgICAgZm4gZnJvbV9ieXRlc19tdXRfcHJlZml4KGJ5dGVzOiBcXHUwMDI2bXV0IFt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2MoXFx1MDAyNm11dCBTZWxmLCBcXHUwMDI2bXV0IFt1OF0pXFx1MDAzZVxcbiAxMDE6XFx0ICAgIHdoZXJlXFxuIDEwMjpcXHQgICAgICAgIFNlbGY6IEFzQnl0ZXMgKyBTaXplZCxcXG4gMTAzOlxcdCAgICB7XFxuIDEwNDpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfbXV0X2NoZWNrZWQoc2l6ZV9vZjo6XFx1MDAzY1NlbGZcXHUwMDNlKCkpPztcXG4gMTA1OlxcdFxcbiAxMDY6XFx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzX211dChwcmVmaXgpLm1hcCh8c3wgKHMsIHJlbWFpbmRlcikpXFxuIDEwNzpcXHQgICAgfVxcbiAxMDg6XFx0XFxuIDEwOTpcXHQgICAgLy8vIENyZWF0ZXMgYW4gb3duZWQgaW5zdGFuY2Ugb2YgYFNlbGZgIGJ5IGNvcHlpbmcgYGJ5dGVzYC5cXG4gMTEwOlxcdCAgICAvLy9cXG4gMTExOlxcdCAgICAvLy8gVW5saWtlIFtgRnJvbUJ5dGVzOjpmcm9tX2J5dGVzYF0sIHdoaWNoIHJlcXVpcmVzIGFsaWduZWQgaW5wdXQsIHRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uXFxuIDExMjpcXHQgICAgLy8vIG5vbi1hbGlnbmVkIGRhdGEgYXQgdGhlIGNvc3Qgb2YgYSBjb3B5LlxcbiAxMTM6XFx0ICAgIGZuIGZyb21fYnl0ZXNfY29weShieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NTZWxmXFx1MDAzZVxcbiAxMTQ6XFx0ICAgIHdoZXJlXFxuIDExNTpcXHQgICAgICAgIFNlbGY6IFNpemVkLFxcbiAxMTY6XFx0ICAgIHtcXG4gMTE3OlxcdCAgICAgICAgaWYgYnl0ZXMubGVuKCkgPT0gc2l6ZV9vZjo6XFx1MDAzY1NlbGZcXHUwMDNlKCkge1xcbiAxMTg6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiB3ZSBqdXN0IHZlcmlmaWVkIHRoYXQgYGJ5dGVzYCBoYXMgdGhlIHNhbWUgc2l6ZSBhcyBgU2VsZmAsIGFuZCBwZXIgdGhlXFxuIDExOTpcXHQgICAgICAgICAgICAvLyBpbnZhcmlhbnRzIG9mIGBGcm9tQnl0ZXNgLCBhbnkgYnl0ZSBzZXF1ZW5jZSBvZiB0aGUgY29ycmVjdCBsZW5ndGggaXMgYSB2YWxpZCB2YWx1ZVxcbiAxMjA6XFx0ICAgICAgICAgICAgLy8gZm9yIGBTZWxmYC5cXG4gMTIxOlxcdCAgICAgICAgICAgIFNvbWUodW5zYWZlIHsgY29yZTo6cHRyOjpyZWFkX3VuYWxpZ25lZChieXRlcy5hc19wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKSkgfSlcXG4gMTIyOlxcdCAgICAgICAgfSBlbHNlIHtcXG4gMTIzOlxcdCAgICAgICAgICAgIE5vbmVcXG4gMTI0OlxcdCAgICAgICAgfVxcbiAxMjU6XFx0ICAgIH1cXG4gMTI2OlxcdFxcbiAxMjc6XFx0ICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIGluc3RhbmNlIG9mIGBTZWxmYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYC5cXG4gMTI4OlxcdCAgICAvLy9cXG4gMTI5OlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfY29weWBdLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgYGJ5dGVzYCBkb2VzXFxuIDEzMDpcXHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xcbiAxMzE6XFx0ICAgIC8vLyBvZiBgYnl0ZXNgLCBhbmQgdGhlIHJlbWFpbmRlciByZXR1cm5lZCBhbG9uZ3NpZGUgYFNlbGZgLlxcbiAxMzI6XFx0ICAgIGZuIGZyb21fYnl0ZXNfY29weV9wcmVmaXgoYnl0ZXM6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjKFNlbGYsIFxcdTAwMjZbdThdKVxcdTAwM2VcXG4gMTMzOlxcdCAgICB3aGVyZVxcbiAxMzQ6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gMTM1OlxcdCAgICB7XFxuIDEzNjpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfY2hlY2tlZChzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKSk/O1xcbiAxMzc6XFx0XFxuIDEzODpcXHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXNfY29weShwcmVmaXgpLm1hcCh8c3wgKHMsIHJlbWFpbmRlcikpXFxuIDEzOTpcXHQgICAgfVxcbiAxNDA6XFx0fVxcbiAxNDE6XFx0XFxuIDE0MjpcXHRtYWNyb19ydWxlcyEgaW1wbF9mcm9tYnl0ZXMge1xcbiAxNDM6XFx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XFx1MDAzZSB7XFxuIDE0NDpcXHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXFxuIDE0NTpcXHQgICAgICAgICQodW5zYWZlIGltcGwkKCQoJGdlbmVyaWNzKSopPyBGcm9tQnl0ZXMgZm9yICR0IHt9KSpcXG4gMTQ2OlxcdCAgICB9O1xcbiAxNDc6XFx0fVxcbiAxNDg6XFx0XFxuIDE0OTpcXHRpbXBsX2Zyb21ieXRlcyEge1xcbiAxNTA6XFx0ICAgIC8vIFNBRkVUWTogSW5oYWJpdGVkIFpTVHMgb25seSBoYXZlIG9uZSBwb3NzaWJsZSBiaXQgcGF0dGVybiwgYW5kIHRoZXNlIHR3byBoYXZlIG5vIGludmFyaWFudC5cXG4gMTUxOlxcdCAgICAoKSxcXG4gMTUyOlxcdCAgICB7XFx1MDAzY1RcXHUwMDNlfSBjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlLFxcbiAxNTM6XFx0XFxuIDE1NDpcXHQgICAgLy8gU0FGRVRZOiBBbGwgYml0IHBhdHRlcm5zIGFyZSBhY2NlcHRhYmxlIHZhbHVlcyBvZiB0aGUgdHlwZXMgYmVsb3cuXFxuIDE1NTpcXHQgICAgdTgsIHUxNiwgdTMyLCB1NjQsIHVzaXplLFxcbiAxNTY6XFx0ICAgIGk4LCBpMTYsIGkzMiwgaTY0LCBpc2l6ZSxcXG4gMTU3OlxcdFxcbiAxNTg6XFx0ICAgIC8vIFNBRkVUWTogSWYgYWxsIGJpdCBwYXR0ZXJucyBhcmUgYWNjZXB0YWJsZSBmb3IgaW5kaXZpZHVhbCB2YWx1ZXMgaW4gYW4gYXJyYXksIHRoZW4gYWxsIGJpdFxcbiAxNTk6XFx0ICAgIC8vIHBhdHRlcm5zIGFyZSBhbHNvIGFjY2VwdGFibGUgZm9yIGFycmF5cyBvZiB0aGF0IHR5cGUuXFxuIDE2MDpcXHQgICAge1xcdTAwM2NUOiBGcm9tQnl0ZXNcXHUwMDNlfSBbVF0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQyLjk1MjA2MzA0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDA0Njk5Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiB0aGlzIHBhcnRpY3VsYXIgYXJlYSBvZiB0aGUga2VybmVsLCBhbmQgbm93IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIGNvbnRleHQgSSdtIG9wZXJhdGluZyB3aXRoaW4gZGVtYW5kcyBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcsIHNvIEknbSBub3QganVzdCBnb2luZyB0byBzdG9wIGhlcmUuIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIHJlZ2FyZGluZyBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIHJldmlldyB0aGUgZW50aXJlIGZpbGUuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMsIGFuZCwgb2YgY291cnNlLCBhbnkgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSBpbXByb3BlciB1c2Ugb3IgaW1wbGVtZW50YXRpb24gb2YgYHRyYW5zbXV0ZWAuIEl0J3MgZXNzZW50aWFsIHRvIGNvbnNpZGVyIHRoZSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBtb2R1bGVzIGFuZCBob3cgdGhpcyBtZWNoYW5pc20gZml0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBkZXNpZ24uIEknbSBhbnRpY2lwYXRpbmcgdGhhdCB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCBtb3JlIGluc2lnaHRzIGludG8gdGhlIGRlc2lnbiB0cmFkZS1vZmZzIGFuZCBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIGJlIHByZXBhcmVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyB3aGVyZSBmdXJ0aGVyIHNjcnV0aW55IGlzIHdhcnJhbnRlZC4gTGV0J3Mgc2VlIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkyNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NDQuOTU2NzY1MjExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC90cmFuc211dGUucnNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYxOlxcdCAgICB7XFx1MDAzY1Q6IEZyb21CeXRlcywgY29uc3QgTjogdXNpemVcXHUwMDNlfSBbVDsgTl0sXFxuIDE2MjpcXHR9XFxuIDE2MzpcXHRcXG4gMTY0OlxcdC8vLyBUeXBlcyB0aGF0IGNhbiBiZSB2aWV3ZWQgYXMgYW4gaW1tdXRhYmxlIHNsaWNlIG9mIGluaXRpYWxpemVkIGJ5dGVzLlxcbiAxNjU6XFx0Ly8vXFxuIDE2NjpcXHQvLy8gSWYgYSBzdHJ1Y3QgaW1wbGVtZW50cyB0aGlzIHRyYWl0LCB0aGVuIGl0IGlzIG9rYXkgdG8gY29weSBpdCBieXRlLWZvci1ieXRlIHRvIHVzZXJzcGFjZS4gVGhpc1xcbiAxNjc6XFx0Ly8vIG1lYW5zIHRoYXQgaXQgc2hvdWxkIG5vdCBoYXZlIGFueSBwYWRkaW5nLCBhcyBwYWRkaW5nIGJ5dGVzIGFyZSB1bmluaXRpYWxpemVkLiBSZWFkaW5nXFxuIDE2ODpcXHQvLy8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm90IGp1c3QgdW5kZWZpbmVkIGJlaGF2aW9yLCBpdCBtYXkgZXZlbiBsZWFkIHRvIGxlYWtpbmcgc2Vuc2l0aXZlXFxuIDE2OTpcXHQvLy8gaW5mb3JtYXRpb24gb24gdGhlIHN0YWNrIHRvIHVzZXJzcGFjZS5cXG4gMTcwOlxcdC8vL1xcbiAxNzE6XFx0Ly8vIFRoZSBzdHJ1Y3Qgc2hvdWxkIGFsc28gbm90IGhvbGQga2VybmVsIHBvaW50ZXJzLCBhcyBrZXJuZWwgcG9pbnRlciBhZGRyZXNzZXMgYXJlIGFsc28gY29uc2lkZXJlZFxcbiAxNzI6XFx0Ly8vIHNlbnNpdGl2ZS4gSG93ZXZlciwgbGVha2luZyBrZXJuZWwgcG9pbnRlcnMgaXMgbm90IGNvbnNpZGVyZWQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ5IFJ1c3QsIHNvXFxuIDE3MzpcXHQvLy8gdGhpcyBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBidXQgbm90IGEgc2FmZXR5IHJlcXVpcmVtZW50LlxcbiAxNzQ6XFx0Ly8vXFxuIDE3NTpcXHQvLy8gIyBTYWZldHlcXG4gMTc2OlxcdC8vL1xcbiAxNzc6XFx0Ly8vIFZhbHVlcyBvZiB0aGlzIHR5cGUgbWF5IG5vdCBjb250YWluIGFueSB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGlzIHR5cGUgbXVzdCBub3QgaGF2ZSBpbnRlcmlvclxcbiAxNzg6XFx0Ly8vIG11dGFiaWxpdHkuXFxuIDE3OTpcXHRwdWIgdW5zYWZlIHRyYWl0IEFzQnl0ZXMge1xcbiAxODA6XFx0ICAgIC8vLyBSZXR1cm5zIGBzZWxmYCBhcyBhIHNsaWNlIG9mIGJ5dGVzLlxcbiAxODE6XFx0ICAgIGZuIGFzX2J5dGVzKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2W3U4XSB7XFxuIDE4MjpcXHQgICAgICAgIC8vIENBU1Q6IGBTZWxmYCBpbXBsZW1lbnRzIGBBc0J5dGVzYCB0aHVzIGFsbCBieXRlcyBvZiBgc2VsZmAgYXJlIGluaXRpYWxpemVkLlxcbiAxODM6XFx0ICAgICAgICBsZXQgZGF0YSA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikuY2FzdDo6XFx1MDAzY3U4XFx1MDAzZSgpO1xcbiAxODQ6XFx0ICAgICAgICBsZXQgbGVuID0gY29yZTo6bWVtOjpzaXplX29mX3ZhbChzZWxmKTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0ICAgICAgICAvLyBTQUZFVFk6IGBkYXRhYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHJlYWRzIG9mIGBsZW4gKiBzaXplb2Y6OlxcdTAwM2N1OFxcdTAwM2UoKWAgYnl0ZXMuXFxuIDE4NzpcXHQgICAgICAgIHVuc2FmZSB7IGNvcmU6OnNsaWNlOjpmcm9tX3Jhd19wYXJ0cyhkYXRhLCBsZW4pIH1cXG4gMTg4OlxcdCAgICB9XFxuIDE4OTpcXHRcXG4gMTkwOlxcdCAgICAvLy8gUmV0dXJucyBgc2VsZmAgYXMgYSBtdXRhYmxlIHNsaWNlIG9mIGJ5dGVzLlxcbiAxOTE6XFx0ICAgIGZuIGFzX2J5dGVzX211dChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFxcdTAwMjZtdXQgW3U4XVxcbiAxOTI6XFx0ICAgIHdoZXJlXFxuIDE5MzpcXHQgICAgICAgIFNlbGY6IEZyb21CeXRlcyxcXG4gMTk0OlxcdCAgICB7XFxuIDE5NTpcXHQgICAgICAgIC8vIENBU1Q6IGBTZWxmYCBpbXBsZW1lbnRzIGJvdGggYEFzQnl0ZXNgIGFuZCBgRnJvbUJ5dGVzYCB0aHVzIG1ha2luZyBgU2VsZmBcXG4gMTk2OlxcdCAgICAgICAgLy8gYmktZGlyZWN0aW9uYWxseSB0cmFuc211dGFibGUgdG8gYFt1ODsgc2l6ZV9vZl92YWwoc2VsZildYC5cXG4gMTk3OlxcdCAgICAgICAgbGV0IGRhdGEgPSBjb3JlOjpwdHI6OmZyb21fbXV0KHNlbGYpLmNhc3Q6OlxcdTAwM2N1OFxcdTAwM2UoKTtcXG4gMTk4OlxcdCAgICAgICAgbGV0IGxlbiA9IGNvcmU6Om1lbTo6c2l6ZV9vZl92YWwoc2VsZik7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdCAgICAgICAgLy8gU0FGRVRZOiBgZGF0YWAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciByZWFkIGFuZCB3cml0ZXMgb2YgYGxlbiAqIHNpemVvZjo6XFx1MDAzY3U4XFx1MDAzZSgpYFxcbiAyMDE6XFx0ICAgICAgICAvLyBieXRlcy5cXG4gMjAyOlxcdCAgICAgICAgdW5zYWZlIHsgY29yZTo6c2xpY2U6OmZyb21fcmF3X3BhcnRzX211dChkYXRhLCBsZW4pIH1cXG4gMjAzOlxcdCAgICB9XFxuIDIwNDpcXHR9XFxuIDIwNTpcXHRcXG4gMjA2OlxcdG1hY3JvX3J1bGVzISBpbXBsX2FzYnl0ZXMge1xcbiAyMDc6XFx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XFx1MDAzZSB7XFxuIDIwODpcXHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXFxuIDIwOTpcXHQgICAgICAgICQodW5zYWZlIGltcGwkKCQoJGdlbmVyaWNzKSopPyBBc0J5dGVzIGZvciAkdCB7fSkqXFxuIDIxMDpcXHQgICAgfTtcXG4gMjExOlxcdH1cXG4gMjEyOlxcdFxcbiAyMTM6XFx0aW1wbF9hc2J5dGVzISB7XFxuIDIxNDpcXHQgICAgLy8gU0FGRVRZOiBJbmhhYml0ZWQgWlNUcyBvbmx5IGhhdmUgb25lIHBvc3NpYmxlIGJpdCBwYXR0ZXJuLCBhbmQgdGhlc2UgdHdvIGhhdmUgbm8gaW52YXJpYW50LlxcbiAyMTU6XFx0ICAgICgpLFxcbiAyMTY6XFx0ICAgIHtcXHUwMDNjVFxcdTAwM2V9IGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGFcXHUwMDNjVFxcdTAwM2UsXFxuIDIxNzpcXHRcXG4gMjE4OlxcdCAgICAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucy5cXG4gMjE5OlxcdCAgICB1OCwgdTE2LCB1MzIsIHU2NCwgdXNpemUsXFxuIDIyMDpcXHQgICAgaTgsIGkxNiwgaTMyLCBpNjQsIGlzaXplLFxcbiAyMjE6XFx0ICAgIGJvb2wsXFxuIDIyMjpcXHQgICAgY2hhcixcXG4gMjIzOlxcdCAgICBzdHIsXFxuIDIyNDpcXHRcXG4gMjI1OlxcdCAgICAvLyBTQUZFVFk6IElmIGluZGl2aWR1YWwgdmFsdWVzIGluIGFuIGFycmF5IGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucywgdGhlbiB0aGUgYXJyYXlcXG4gMjI2OlxcdCAgICAvLyBpdHNlbGYgZG9lcyBub3QgaGF2ZSBhbnkgdW5pbml0aWFsaXplZCBwb3J0aW9ucyBlaXRoZXIuXFxuIDIyNzpcXHQgICAge1xcdTAwM2NUOiBBc0J5dGVzXFx1MDAzZX0gW1RdLFxcbiAyMjg6XFx0ICAgIHtcXHUwMDNjVDogQXNCeXRlcywgY29uc3QgTjogdXNpemVcXHUwMDNlfSBbVDsgTl0sXFxuIDIyOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQ0Ljk1NjkwMzc1MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NzE1MTc5Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWmVyb2NvcHkgTWlncmF0aW9uIGluIHRoZSBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgaGFwcGVuaW5nLiBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdoZXJlIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgYXdheSBmcm9tIGB0cmFuc211dGVgJ3MgYEFzQnl0ZXNgIGFuZCBgRnJvbUJ5dGVzYCB0cmFpdHMsIGFuZCBpbnN0ZWFkLCBpdCdzIGxldmVyYWdpbmcgYHplcm9jb3B5YCdzIGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB0cmFpdHMuIFRoZSBjb3JlIGlkZWEgaXMgdG8gc2ltcGxpZnkgYW5kIHBvdGVudGlhbGx5IGltcHJvdmUgbWVtb3J5IHNhZmV0eSBhbmQgZWZmaWNpZW5jeSBieSB1c2luZyBgemVyb2NvcHlgIGZvciBzYWZlLCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgYmV0d2VlbiBSdXN0IGRhdGEgc3RydWN0dXJlcyBhbmQgYnl0ZSByZXByZXNlbnRhdGlvbnMsIGEgd2VsbCBlc3RhYmxpc2hlZCBwYXR0ZXJuLlxuXG5TcGVjaWZpY2FsbHksIGluIGBydXN0L2tlcm5lbC9kbWEucnNgLCBgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgLCBhbmQgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgLCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgaW1wb3J0aW5nIGB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9YC4gVGhlIHBhdGNoIHJlbW92ZXMgdGhlIHVudXNlZCBpbXBvcnRzIGFuZCB1cGRhdGVzIHRvIGBJbnRvQnl0ZXNgIGFuZCB0aGUgYEZyb21CeXRlc2AgdGhhdCBpcyBwYXJ0IG9mIHRoZSBgcHJlbHVkZWAsIHdoaWNoLCBpbiB0aGlzIGNvbnRleHQsIG9yaWdpbmF0ZXMgZnJvbSBgemVyb2NvcHlgLlxuXG5BIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmIHJldmVhbHMgdGhlIGNoYW5nZXMgaW4gYHJ1c3Qva2VybmVsL2RtYS5yc2A6ICBgQ29oZXJlbnRCb3hgIGFuZCBgQ29oZXJlbnRgIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZWQgdG8gcmVxdWlyZSBgQXNCeXRlcyArIEZyb21CeXRlc2Agbm93IHJlcXVpcmUgYEludG9CeXRlcyArIEZyb21CeXRlc2AsIGluZGljYXRpbmcgdGhlIHNoaWZ0LiBBZGRpdGlvbmFsbHksIHRoZSBgd3JpdGVfZG1hYCBmdW5jdGlvbiBhbmQgYHdyaXRlYCBtZXRob2RzIGluIGBVc2VyU2xpY2VXcml0ZXJgIGFyZSBhbHNvIHVwZGF0ZWQgdG8gdXNlIGBJbnRvQnl0ZXNgLiBTaW1pbGFybHksIHRoZSBgR2VubE1zZzo6cHV0YCBtZXRob2QgaW4gYG5ldGxpbmsucnNgIG5vdyB1c2VzIGBJbnRvQnl0ZXNgIGluc3RlYWQgb2YgYEFzQnl0ZXNgLlxuXG5NeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gcmV2aWV3IHRoZSBgZ2l0IGxvZ2AgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgb2YgdGhlIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBtb3RpdmF0aW9ucyBhbmQgYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEknZCBhbHNvIHNlYXJjaCBmb3IgcGxhY2VzIHdoZXJlIGBDb2hlcmVudEJveGAsIGB3cml0ZV9kbWFgLCBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAsIGFuZCBgR2VubE1zZzo6cHV0YCBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgY29kZWJhc2UgaXMgY29uc2lzdGVudCBhbmQgdGhhdCB0aGUgY2hhbmdlIGhhc24ndCBpbnRyb2R1Y2VkIGFueSByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gRE1BIGFuZCB1c2VyIHNwYWNlIG1lbW9yeSBhY2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDE1LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjUyLjY3MjA4NTQxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMTIyMDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDb2hlcmVudEJveFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2ZhbGNvbi5yczoxMTogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnMtMTItICAgICAgICBEbWFBZGRyZXNzLCAvL1xcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2ZhbGNvbi5ycz01OTY9ICAgIGZuIGRtYV9sb2FkXFx1MDAzY0Y6IEZhbGNvbkZpcm13YXJlXFx1MDAzY1RhcmdldCA9IEVcXHUwMDNlICsgRmFsY29uRG1hTG9hZGFibGVcXHUwMDNlKFxcdTAwMjZzZWxmLCBmdzogXFx1MDAyNkYpIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwMi0gICAgICAgICAgICAvLyBhY2NvcmRpbmdseSBhbmQgZmlsbCB3aXRoIGAwYC5cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzOjYwMzogICAgICAgICAgICBsZXQgbXV0IGRtYV9vYmogPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnMtNjA0LSAgICAgICAgICAgICAgICBzZWxmLmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtNi0gICAgICAgIENvaGVyZW50LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6NzogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtOC0gICAgICAgIERhdGFEaXJlY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzPTcwPSAgICBwdWIoY3JhdGUpIGZuIG5ld1xcdTAwM2MnYVxcdTAwM2UoXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzLTEyMi0gICAgICAgICAgICAgICAgICAgIC8vIHRhYmxlLlxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6MTIzOiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsZXZlbDAgPSBDb2hlcmVudEJveDo6XFx1MDAzY1t1NjRdXFx1MDAzZTo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtMTI0LSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtMTAtICAgICAgICBDb2hlcmVudCxcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy0xMi0gICAgICAgIENvaGVyZW50VmlldyxcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM9MTY0PSAgICBwdWIoY3JhdGUpIGZuIG5ldyhwZGV2OiBcXHUwMDI2cGNpOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmLCBFcnJvclxcdTAwM2UgKyAnXyB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE3OC0gICAgICAgICAgICAgICAgbGlib3M6IHtcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjE3OTogICAgICAgICAgICAgICAgICAgIGxldCBtdXQgbGlib3MgPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtMTgwLSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xNi0gICAgICAgIENvaGVyZW50LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5yczoxNzogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xOC0gICAgICAgIERtYUFkZHJlc3MsIC8vXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM9MjM3PSAgICBmbiBuZXcoZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnMtMjQwLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5yczoyNDE6ICAgICAgICBsZXQgbXV0IGdzcF9tZW0gPSBDb2hlcmVudEJveDo6XFx1MDAzY0dzcE1lbVxcdTAwM2U6Onplcm9lZChkZXYsIEdGUF9LRVJORUwpPztcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnMtMjQyLSAgICAgICAgZ3NwX21lbS5jcHVxLnR4ID0gTXNncVR4SGVhZGVyOjpuZXcoTVNHUV9TSVpFLCBSWF9IRFJfT0ZGLCBNU0dRX05VTV9QQUdFUyk7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9MzU2PSAgICBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVxcdTAwM2UgU2VsZiB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzY2LS8vL1xcbnJ1c3Qva2VybmVsL2RtYS5yczozNjc6Ly8vIFVubGlrZSBbYENvaGVyZW50YF0sIGEgW2BDb2hlcmVudEJveGBdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZnVsbHkgb3duZWQgYnkgdGhlIENQVSAtLSBpdHMgRE1BXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM2OC0vLy8gYWRkcmVzcyBpcyBub3QgZXhwb3NlZCBhbmQgaXQgY2Fubm90IGJlIGFjY2Vzc2VkIGJ5IGEgZGV2aWNlLiBUaGlzIG1lYW5zIGl0IGNhbiBzYWZlbHkgYmUgdXNlZFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM3MC0vLy9cXG5ydXN0L2tlcm5lbC9kbWEucnM6MzcxOi8vLyBBIHR5cGljYWwgdXNlIGlzIHRvIGFsbG9jYXRlIGEgW2BDb2hlcmVudEJveGBdLCBwb3B1bGF0ZSBpdCB3aXRoIG5vcm1hbCBDUFUgYWNjZXNzLCBhbmQgdGhlblxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzItLy8vIGNvbnZlcnQgaXQgaW50byBhIFtgQ29oZXJlbnRgXSBvYmplY3QgdG8gc2hhcmUgaXQgd2l0aCB0aGUgZGV2aWNlLlxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM3NS0vLy9cXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzc2Oi8vLyBgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VgOlxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzctLy8vXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg0LS8vLyAgICAgQ29oZXJlbnQsXFxucnVzdC9rZXJuZWwvZG1hLnJzOjM4NTovLy8gICAgIENvaGVyZW50Qm94LFxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zODYtLy8vIH07XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg4LS8vLyAjIGZuIHRlc3QoZGV2OiBcXHUwMDI2RGV2aWNlXFx1MDAzY0JvdW5kXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg5Oi8vLyBsZXQgbXV0IGRtZW06IENvaGVyZW50Qm94XFx1MDAzY3U2NFxcdTAwM2UgPSBDb2hlcmVudEJveDo6emVyb2VkKGRldiwgR0ZQX0tFUk5FTCk/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy0zOTAtLy8vICpkbWVtID0gNDI7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzk0LS8vL1xcbnJ1c3Qva2VybmVsL2RtYS5yczozOTU6Ly8vIGBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlYDpcXG5ydXN0L2tlcm5lbC9kbWEucnMtMzk2LS8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQwNC0vLy8gICAgIENvaGVyZW50LFxcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDU6Ly8vICAgICBDb2hlcmVudEJveCxcXG5ydXN0L2tlcm5lbC9kbWEucnMtNDA2LS8vLyB9O1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQwOC0vLy8gIyBmbiB0ZXN0KGRldjogXFx1MDAyNkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdCB7XFxucnVzdC9rZXJuZWwvZG1hLnJzOjQwOTovLy8gbGV0IG11dCBkbWVtOiBDb2hlcmVudEJveFxcdTAwM2NbdTY0XVxcdTAwM2UgPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKGRldiwgNCwgR0ZQX0tFUk5FTCk/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy00MTAtLy8vIGRtZW0uZmlsbCg0Mik7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDEzLS8vLyBgYGBcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE0OnB1YiBzdHJ1Y3QgQ29oZXJlbnRCb3hcXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkXFx1MDAzZShDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSk7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQxNS1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE2OmltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzXFx1MDAzZSBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE3OiAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE4LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDE5PSAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDI3LVxcbnJ1c3Qva2VybmVsL2RtYS5yczo0Mjg6ICAgIC8vLyBTYW1lIGFzIFtDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNdLCBidXQgd2l0aCBgZG1hOjpBdHRycygwKWAuXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQyOS0gICAgI1tpbmxpbmVdXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFxcdTAwM2NFXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcXHUwMDNjVCwgRVxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ2My0gICAgLy8vXFxucnVzdC9rZXJuZWwvZG1hLnJzOjQ2NDogICAgLy8vIFRoaXMgaXMgdGhlIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6OmZyb21fc2xpY2Vfd2l0aF9hdHRyc2BdLlxcbnJ1c3Qva2VybmVsL2RtYS5ycy00NjUtICAgIC8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3My0gICAgLy8vICAgICBhdHRyczo6KixcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDc0OiAgICAvLy8gICAgIENvaGVyZW50Qm94XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3NS0gICAgLy8vIH07XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDc4LSAgICAvLy8gbGV0IGRhdGEgPSBbMHU4LCAxdTgsIDJ1OCwgM3U4XTtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDc5OiAgICAvLy8gbGV0IGM6IENvaGVyZW50Qm94XFx1MDAzY1t1OF1cXHUwMDNlID1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NDgwOiAgICAvLy8gICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBcXHUwMDI2ZGF0YSwgR0ZQX0tFUk5FTCwgRE1BX0FUVFJfTk9fV0FSTik/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy00ODEtICAgIC8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTQ4NT0gICAgcHViIGZuIGZyb21fc2xpY2Vfd2l0aF9hdHRycyhcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MDYtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjUwNzogICAgLy8vIFBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgW2BDb2hlcmVudEJveDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0sIGV4Y2VwdCB0aGVcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTA4LSAgICAvLy8gYGRtYV9hdHRyc2AgaXMgMCBieSBkZWZhdWx0Llxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTUxMD0gICAgcHViIGZuIGZyb21fc2xpY2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTIxLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1MjI6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NTIzOiAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUyNC0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvZG1hLnJzPTUyNT0gICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUzMi1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NTMzOiAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2VgXSwgYnV0IGZvciBhIHNpbmdsZSBlbGVtZW50LlxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MzQtICAgICNbaW5saW5lXVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01MzU9ICAgIHB1YiBmbiB6ZXJvZWQoZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQm91bmRcXHUwMDNlLCBnZnBfZmxhZ3M6IGtlcm5lbDo6YWxsb2M6OkZsYWdzKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUzOS1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NTQwOmltcGxcXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBEZXJlZiBmb3IgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01NDEtICAgIHR5cGUgVGFyZ2V0ID0gVDtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTItXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTU0LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTYzLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU2NjogICAgZm4gZnJvbSh2YWx1ZTogQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01NjctICAgICAgICB2YWx1ZS4wXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9ODgxPSAgICBwdWIgZm4gZnJvbV9zbGljZV93aXRoX2F0dHJzKFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTg4OS0gICAge1xcbnJ1c3Qva2VybmVsL2RtYS5yczo4OTA6ICAgICAgICBDb2hlcmVudEJveDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzKGRldiwgZGF0YSwgZ2ZwX2ZsYWdzLCBkbWFfYXR0cnMpLm1hcChJbnRvOjppbnRvKVxcbnJ1c3Qva2VybmVsL2RtYS5ycy04OTEtICAgIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NTQuOTkzMzExNjAyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NDIxMTcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBhcm91bmQgYENvaGVyZW50Qm94YCwgc3BlY2lmaWNhbGx5IHdoZXJlIGl0J3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBgbm92YS1jb3JlYCBkcml2ZXIuIFRoYXQgaW1wbGllcyBpdCdzIGVpdGhlciBhbiBvdXQtb2YtdHJlZSwgc3RhZ2luZywgb3IgZXhwZXJpbWVudGFsIEdQVSBkcml2ZXIuIFNvLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9ncHUvbm92YS1jb3JlL2AgZGlyZWN0b3J5IGFuZCBsb29rIGZvciBhbnkgZGlyZWN0IHVzZXMgdGhlcmUuIEknbGwgYWxzbyBkbyBhIGJyb2FkZXIgc2NhbiBvZiBvdGhlciBsaWtlbHkgbG9jYXRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5UaGVuLCB3YWl0IGEgc2Vjb25kLCBJIHNob3VsZCBjaGVjayB0aGUgUnVzdCBrZXJuZWwgY29kZS4gSSdtIHRoaW5raW5nIG9mIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgYmVjYXVzZSB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IHNwb3RzIHdoZXJlIHNvbWV0aGluZyBsaWtlIGBDb2hlcmVudEJveGAgbWlnaHQgYmUgdXRpbGl6ZWQsIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IG9yIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBoZXJlOyBpdCdzIGVhc3kgdG8gZ2V0IHR1bm5lbCB2aXNpb24uXG5cbkZpbmFsbHksIHdoaWxlIEknbSBpbiBzZWFyY2ggbW9kZSwgSSdsbCBzd2l0Y2ggZ2VhcnMgdG8gZXhhbWluZSB0aGUgYnJvYWRlciBrZXJuZWwgdG8gc2VlIHdoZXJlIGBVc2VyU2xpY2VXcml0ZXJgIGFuZCBgR2VubE1zZ2AgYXJlIGJlaW5nIHVzZWQuIFRoZXNlIG1pZ2h0IHBvaW50IHRvIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyB0aGF0IEkgbWlnaHQgd2FudCB0byBleGFtaW5lLiBLZWVwaW5nIHRyYWNrIG9mIHRob3NlIHJlZmVyZW5jZXMgaXMga2V5IHRvIHNlZWluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDMyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NTcuNDM1NDMxMjk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU2MjkxNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkdlbmxNc2dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzLTctICAgICAgICBGYW1pbHksXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzOjg6ICAgICAgICBHZW5sTXNnLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy05LSAgICAgICAgTXVsdGljYXN0R3JvdXAsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM9Mjg9cHViIHN0cnVjdCBSZXBvcnQge1xcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5yczoyOTogICAgc2tiOiBHZW5sTXNnLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy0zMC19XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycz00OT0gICAgcHViIGZuIGdlbmxtc2dfcHV0KFxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTQtICAgICAgICBjbWQ6IHU4LFxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjU1OiAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NHZW5sTXNnLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTYtICAgICAgICBsZXQgc2tiID0gc2VsZi5za2IuYXNfcHRyKCk7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy01OS0gICAgICAgIGxldCBoZHIgPSBOb25OdWxsOjpuZXcoaGRyKS5va19vcihBbGxvY0Vycm9yKT87XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NjA6ICAgICAgICBPayhHZW5sTXNnIHsgc2tiOiBzZWxmLCBoZHIgfSlcXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy02MS0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NjU9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy03NS0vLy8gYGhkcmAgcmVmZXJlbmNlcyB0aGUgaGVhZGVyIGluIHRoaXMgbmV0bGluayBtZXNzYWdlLlxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjc2OnB1YiBzdHJ1Y3QgR2VubE1zZyB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNzctICAgIHNrYjogTmV0bGlua1NrQnVmZixcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTgwLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjgxOmltcGwgR2VubE1zZyB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODItICAgIC8vLyBQdXRzIGFuIGF0dHJpYnV0ZSBpbnRvIHRoZSBtZXNzYWdlLlxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9MTE5PSAgICBwdWIgZm4gbXVsdGljYXN0KFxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtMTQwLX1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczoxNDE6aW1wbCBEcm9wIGZvciBHZW5sTXNnIHtcXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDItICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NDYxPWRlZiBfZ2VubF9sb2FkX2ZhbWlsaWVzKCk6XFxuLS1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNDgyLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weTo0ODM6ICAgICAgICAgICAgICAgIGdtID0gR2VubE1zZyhubF9tc2cpXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTQ4NC0gICAgICAgICAgICAgICAgZmFtID0ge31cXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weT01MDk9ZGVmIF9nZW5sX3BvbGljeV9kdW1wKGZhbWlseV9pZCwgb3ApOlxcbi0tXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTUzMy1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTM0OiAgICAgICAgICAgICAgICBnbSA9IEdlbmxNc2cobmxfbXNnKVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01MzUtICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIE5sQXR0cnMoZ20ucmF3KTpcXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTMtXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5OjU1NDpjbGFzcyBHZW5sTXNnOlxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTUtICAgIGRlZiBfX2luaXRfXyhzZWxmLCBubF9tc2cpOlxcbi0tXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5PTYwNj1jbGFzcyBHZW5sUHJvdG9jb2woTmV0bGlua1Byb3RvY29sKTpcXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS02MjMtICAgIGRlZiBfZGVjb2RlKHNlbGYsIG5sX21zZyk6XFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5OjYyNDogICAgICAgIHJldHVybiBHZW5sTXNnKG5sX21zZylcXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNjI1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTo1OS42OTE3Mjc2ODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkzNjM3Mzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRob3NlIGNvZGUgc25pcHBldHM6XG5cbioqRGlnZ2luZyBpbnRvIE5ldGxpbmsgYW5kIFVzZXIgTWVtb3J5IEFjY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSdyZSBoYW5kbGluZyBuZXR3b3JrIGludGVyZmFjZXMgYW5kIHVzZXItc3BhY2UgbWVtb3J5IGFjY2Vzcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnNgIGJlY2F1c2UgSSByZWNhbGwgdGhhdCB1c2luZyBgR2VubE1zZ2AgaXMgcmVsZXZhbnQgaGVyZS4gTmV4dCwgSSB3YW50IHRvIHBpdm90IHRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGRhdGEgdHJhbnNmZXJzLiBJJ2xsIGZvY3VzIG9uIGB1YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAgYW5kIGB3cml0ZV9kbWFgIGFyZSBiZWluZyBjYWxsZWQsIGFzIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhvbGQgdGhlIGNyaXRpY2FsIG9wZXJhdGlvbnMgZm9yIHdyaXRpbmcgaW50byB1c2VyIG1lbW9yeSBzcGFjZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBzaGVkIGxpZ2h0IG9uIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkgcmlza3Mgb3IgYXJlYXMgd2hlcmUgd2UgbWlnaHQgYmUgc2VlaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIG5ldHdvcmsgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NDYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjowMS42MjgxMDU0MzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMxNjY3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVXNlclNsaWNlV3JpdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0yMy0gICAgdHlwZXM6OkZvcmVpZ25Pd25hYmxlLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoyNDogICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0yNS19O1xcbi0tXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzPTk4PWZuIG5leHRfZGVidWdfaWQoKSAtXFx1MDAzZSB1c2l6ZSB7XFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA0LS8vLyBQcm92aWRlcyBhIHNpbmdsZSBwbGFjZSB0byB3cml0ZSBCaW5kZXIgcmV0dXJuIHZhbHVlcyB2aWEgdGhlXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzOjEwNTovLy8gc3VwcGxpZWQgYFVzZXJTbGljZVdyaXRlcmAuXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTEwNi1wdWIoY3JhdGUpIHN0cnVjdCBCaW5kZXJSZXR1cm5Xcml0ZXJcXHUwMDNjJ2FcXHUwMDNlIHtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM6MTA3OiAgICB3cml0ZXI6IFVzZXJTbGljZVdyaXRlcixcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA4LSAgICB0aHJlYWQ6IFxcdTAwMjYnYSBUaHJlYWQsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM9MTExPWltcGxcXHUwMDNjJ2FcXHUwMDNlIEJpbmRlclJldHVybldyaXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoxMTI6ICAgIGZuIG5ldyh3cml0ZXI6IFVzZXJTbGljZVdyaXRlciwgdGhyZWFkOiBcXHUwMDI2J2EgVGhyZWFkKSAtXFx1MDAzZSBTZWxmIHtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTEzLSAgICAgICAgQmluZGVyUmV0dXJuV3JpdGVyIHsgd3JpdGVyLCB0aHJlYWQgfVxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjItICAgICAgICBVc2VyU2xpY2VSZWFkZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjM6ICAgICAgICBVc2VyU2xpY2VXcml0ZXIsIC8vXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjQtICAgIH0sXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz03MD0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzEtICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3MjogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzMtICAgICAgICBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9Nzk9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgwLSAgICAgICAgXFx1MDAyNnNlbGYsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6ODE6ICAgICAgICB3cml0ZXI6IFxcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgyLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTkwPSAgICBmbiB3cml0ZV90b19zbGljZShcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05MS0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjkyOiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05My0gICAgICAgIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMDc9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEwOC0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEwOTogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTEwLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTEyMj0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTIzLSAgICAgICAgXFx1MDAyNnNlbGYsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTI0OiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0xMjUtICAgICAgICBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MTM2PSAgICBmbiB3cml0ZV90b19zbGljZShcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0xMzctICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoxMzg6ICAgICAgICB3cml0ZXI6IFxcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEzOS0gICAgICAgIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xNTE9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE1Mi0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjE1MzogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTU0LSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy0yNy0gICAgc3luYzo6YXJlZjo6QVJlZixcXG5ydXN0L2tlcm5lbC9kbWEucnM6Mjg6ICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cXG5ydXN0L2tlcm5lbC9kbWEucnMtMjktfTtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz05NTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RtYS5ycy05NTEtICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kbWEucnM6OTUyOiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kbWEucnMtOTUzLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NjA9ICAgIHB1YiBmbiB3cmFwcGluZ19ieXRlX2FkZChzZWxmLCBhZGQ6IHVzaXplKSAtXFx1MDAzZSBVc2VyUHRyIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtODAtLy8vXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo4MTovLy8gQ3JlYXRpbmcgYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZC9vciBbYFVzZXJTbGljZVdyaXRlcmBdIGNvbnN1bWVzIHRoZSBgVXNlclNsaWNlYCwgaGVscGluZ1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtODItLy8vIGVuc3VyZSB0aGF0IHRoZXJlIGFyZW4ndCBtdWx0aXBsZSByZWFkZXJzIG9yIHdyaXRlcnMgdG8gdGhlIHNhbWUgbG9jYXRpb24uXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTE3OD0gICAgcHViIGZuIHJlYWRlcihzZWxmKSAtXFx1MDAzZSBVc2VyU2xpY2VSZWFkZXIge1xcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xODQtXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxODU6ICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE4NjogICAgcHViIGZuIHdyaXRlcihzZWxmKSAtXFx1MDAzZSBVc2VyU2xpY2VXcml0ZXIge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg3OiAgICAgICAgVXNlclNsaWNlV3JpdGVyIHtcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTE4OC0gICAgICAgICAgICBwdHI6IHNlbGYucHRyLFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTItXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxOTM6ICAgIC8vLyBDb25zdHJ1Y3RzIGJvdGggYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZCBhIFtgVXNlclNsaWNlV3JpdGVyYF0uXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTQtICAgIC8vL1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk1LSAgICAvLy8gVXN1YWxseSB3aGVuIHRoaXMgaXMgdXNlZCwgeW91IHdpbGwgZmlyc3QgcmVhZCB0aGUgZGF0YSwgYW5kIHRoZW4gb3ZlcndyaXRlIGl0IGFmdGVyd2FyZHMuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxOTY6ICAgIHB1YiBmbiByZWFkZXJfd3JpdGVyKHNlbGYpIC1cXHUwMDNlIChVc2VyU2xpY2VSZWFkZXIsIFVzZXJTbGljZVdyaXRlcikge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk3LSAgICAgICAgKFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0yMDEtICAgICAgICAgICAgfSxcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjIwMjogICAgICAgICAgICBVc2VyU2xpY2VXcml0ZXIge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMjAzLSAgICAgICAgICAgICAgICBwdHI6IHNlbGYucHRyLFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0zOTE9ICAgIHB1YiBmbiBzdHJjcHlfaW50b19idWZcXHUwMDNjJ2J1ZlxcdTAwM2Uoc2VsZiwgYnVmOiBcXHUwMDI2J2J1ZiBtdXQgW3U4XSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1xcdTAwMjYnYnVmIENTdHJcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ0LS8vLyBVc2VkIHRvIGluY3JlbWVudGFsbHkgd3JpdGUgaW50byB0aGUgdXNlciBzbGljZS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjQ0NTpwdWIgc3RydWN0IFVzZXJTbGljZVdyaXRlciB7XFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00NDYtICAgIHB0cjogVXNlclB0cixcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ5LVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDUwOmltcGwgVXNlclNsaWNlV3JpdGVyIHtcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ1MS0gICAgLy8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSByZW1haW5pbmcgaW4gdGhpcyBidWZmZXIuXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTQ2OD0gICAgdW5zYWZlIGZuIHdyaXRlX3JhdyhcXHUwMDI2bXV0IHNlbGYsIGZyb206ICpjb25zdCB1OCwgbGVuOiB1c2l6ZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDg2LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDg3OiAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ4OC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00ODk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZShcXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MDQtICAgIC8vLyAtIFtgRUZBVUxUYF06IHRoZSB3cml0ZSBoaXRzIGEgYmFkIGFkZHJlc3Mgb3IgZ29lcyBvdXQgb2YgYm91bmRzIG9mIHRoaXNcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUwNTogICAgLy8vICAgW2BVc2VyU2xpY2VXcml0ZXJgXS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUwNi0gICAgLy8vXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxNi0gICAgLy8vIGBgYG5vX3J1blxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTE3OiAgICAvLy8gdXNlIGtlcm5lbDo6dWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyO1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTE4LSAgICAvLy8gdXNlIGtlcm5lbDo6ZG1hOjpDb2hlcmVudDtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTIwLSAgICAvLy8gZm4gY29weV9kbWFfdG9fdXNlcihcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUyMTogICAgLy8vICAgICBtdXQgd3JpdGVyOiBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjItICAgIC8vLyAgICAgYWxsb2M6IFxcdTAwMjZDb2hlcmVudFxcdTAwM2NbdThdXFx1MDAzZSxcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NTc5PSAgICBwdWIgZm4gd3JpdGVfc2xpY2VfZmlsZShcXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFxcdTAwMjZbdThdLCBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0KSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdXNpemVcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTk4LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTk5OiAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9taXNjX2RldmljZS5ycy0xMjctICAgICAgICBVc2VyU2xpY2VSZWFkZXIsXFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MTI4OiAgICAgICAgVXNlclNsaWNlV3JpdGVyLCAvL1xcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTEyOS0gICAgfSxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzPTI1NT0gICAgZm4gc2V0X3ZhbHVlKFxcdTAwMjZzZWxmLCBtdXQgcmVhZGVyOiBVc2VyU2xpY2VSZWFkZXIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2Npc2l6ZVxcdTAwM2Uge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMjY4LVxcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzOjI2OTogICAgZm4gZ2V0X3ZhbHVlKFxcdTAwMjZzZWxmLCBtdXQgd3JpdGVyOiBVc2VyU2xpY2VXcml0ZXIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2Npc2l6ZVxcdTAwM2Uge1xcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTI3MC0gICAgICAgIGxldCBndWFyZCA9IHNlbGYuaW5uZXIubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjowNC4wMTEyNzg2ODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2MDQ4MjUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgbG90IG9mIGNoYW5nZXMgdGhhdCBzZWVtIHJlbGF0ZWQuIEZpcnN0LCBJIHNlZSBtb2RpZmljYXRpb25zIGFjcm9zcyBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCB0aGUgdHJhaXQgYm91bmRzIGludm9sdmluZyBgQXNCeXRlc2AgYXJlIGJlaW5nIHJlcGxhY2VkIHdpdGggYEludG9CeXRlc2AuIEkgc2VlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczpcblxuKiAgIEluIGBydXN0L2tlcm5lbC9kbWEucnNgLCBpdCBsb29rcyBsaWtlIGluc3RhbmNlcyBvZiBgVDogQXNCeXRlc2AgaGF2ZSBjaGFuZ2VkIHRvIGBUOiBJbnRvQnl0ZXNgLCBhbmQgc2ltaWxhciBjaGFuZ2VzIGFyZSBhcHBsaWVkIHdoZXJlIGBBc0J5dGVzYCBpcyBwcmVzZW50LlxuKiAgIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYWxzbyBzaG93cyBhIHNpbWlsYXIgc3dhcCB3aXRoIGBHZW5sTXNnOjpwdXRcdTAwM2NUXHUwMDNlYC5cbiogICBGaW5hbGx5LCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AgaGFzIGFsc28gcmVwbGFjZWQgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgZm9yIGB3cml0ZV9kbWFgIGFuZCBgd3JpdGVgLlxuXG5XYWl0LCB0aGlzIHNlZW1zIGZhbWlsaWFyLi4uIHdoYXQncyB0aGUgZGVhbCB3aXRoIGBJbnRvQnl0ZXNgIHZlcnN1cyBgQXNCeXRlc2A/IE9oIHJpZ2h0ISBJbiB6ZXJvY29weSAwLjgrLCB0aGUgYEFzQnl0ZXNgIHRyYWl0IHdhcyByZW5hbWVkIHRvIGBJbnRvQnl0ZXNgLiBCZWZvcmUgdGhpcyBjb21taXQsIHRoZSBrZXJuZWwncyBjb2RlIHNlZW1zIHRvIGhhdmUgYmVlbiBlaXRoZXIgdXNpbmcgaXRzIG93biBgdHJhbnNtdXRlOjpBc0J5dGVzYCAvIGB0cmFuc211dGU6OkZyb21CeXRlc2AgaW1wbGVtZW50YXRpb24gb3IsIGl0IGxvb2tzIGxpa2UsIHdhcyBhZG9wdGluZyB0aGUgemVyb2NvcHkgbGlicmFyeS4gTGV0IG1lIGRvdWJsZS1jaGVjayBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSB6ZXJvY29weSBjb2RlLiBBaCwgeWVzLCBiZWZvcmUgdGhpcyBjb21taXQsIHRoZXNlIGZpbGVzIHdlcmUgaW1wb3J0aW5nIGB0cmFuc211dGU6OkFzQnl0ZXNgLCBidXQgbm93IHRoZXkgYXJlIGltcG9ydGluZyBgemVyb2NvcHk6OkludG9CeXRlc2AgdGhyb3VnaCB0aGUgcHJlbHVkZS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGp1c3QgcmVwcmVzZW50IGEgcmVuYW1lIG9mIHRoZSB0cmFpdCwgb3IgaXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZD8gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbiBib2RpZXMgdGhlbXNlbHZlczogYHdyaXRlYCwgYHdyaXRlX2RtYWAsIGBwdXRgLCBhbmQgdGhlIGBDb2hlcmVudEJveGAgbWV0aG9kcywgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCBsaW5lcyA1OTUtNjEwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHJlbWFpbnMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjg1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM2OjA3Ljc3MTc2NDUzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC91YWNjZXNzLnJzXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU5NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU5NTpcXHRcXG4gNTk2OlxcdCAgICAvLy8gV3JpdGVzIHRoZSBwcm92aWRlZCBSdXN0IHZhbHVlIHRvIHRoaXMgdXNlcnNwYWNlIHBvaW50ZXIuXFxuIDU5NzpcXHQgICAgLy8vXFxuIDU5ODpcXHQgICAgLy8vIEZhaWxzIHdpdGggW2BFRkFVTFRgXSBpZiB0aGUgd3JpdGUgaGFwcGVucyBvbiBhIGJhZCBhZGRyZXNzLCBvciBpZiB0aGUgd3JpdGUgZ29lcyBvdXQgb2ZcXG4gNTk5OlxcdCAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG4gNjAwOlxcdCAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cXG4gNjAxOlxcdCAgICBwdWIgZm4gd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gNjAyOlxcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6OlxcdTAwM2NUXFx1MDAzZSgpO1xcbiA2MDM6XFx0ICAgICAgICBpZiBsZW4gXFx1MDAzZSBzZWxmLmxlbmd0aCB7XFxuIDYwNDpcXHQgICAgICAgICAgICByZXR1cm4gRXJyKEVGQVVMVCk7XFxuIDYwNTpcXHQgICAgICAgIH1cXG4gNjA2OlxcdCAgICAgICAgLy8gU0FGRVRZOiBUaGUgcmVmZXJlbmNlIHBvaW50cyB0byBhIHZhbHVlIG9mIHR5cGUgYFRgLCBzbyBpdCBpcyB2YWxpZCBmb3IgcmVhZGluZ1xcbiA2MDc6XFx0ICAgICAgICAvLyBgc2l6ZV9vZjo6XFx1MDAzY1RcXHUwMDNlKClgIGJ5dGVzLlxcbiA2MDg6XFx0ICAgICAgICAvL1xcbiA2MDk6XFx0ICAgICAgICAvLyBCeSB1c2luZyB0aGUgX2NvcHlfdG9fdXNlciB2YXJpYW50LCB3ZSBza2lwIHRoZSBjaGVja19vYmplY3Rfc2l6ZSBjaGVjayB0aGF0IHZlcmlmaWVzIHRoZVxcbiA2MTA6XFx0ICAgICAgICAvLyBrZXJuZWwgcG9pbnRlci4gVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBvbiB0aGUgQyBzaWRlIHRoYXQgc2tpcHMgdGhlIGNoZWNrIHdoZW4gdGhlIGxlbmd0aFxcbiA2MTE6XFx0ICAgICAgICAvLyBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC5cXG4gNjEyOlxcdCAgICAgICAgbGV0IHJlcyA9IHVuc2FmZSB7XFxuIDYxMzpcXHQgICAgICAgICAgICBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcihcXG4gNjE0OlxcdCAgICAgICAgICAgICAgICBzZWxmLnB0ci5hc19tdXRfcHRyKCksXFxuIDYxNTpcXHQgICAgICAgICAgICAgICAgY29yZTo6cHRyOjpmcm9tX3JlZih2YWx1ZSkuY2FzdDo6XFx1MDAzY2Nfdm9pZFxcdTAwM2UoKSxcXG4gNjE2OlxcdCAgICAgICAgICAgICAgICBsZW4sXFxuIDYxNzpcXHQgICAgICAgICAgICApXFxuIDYxODpcXHQgICAgICAgIH07XFxuIDYxOTpcXHQgICAgICAgIGlmIHJlcyAhPSAwIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MDcuNzcxODU2MjAyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NTczNTgxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFJ1c3QgS2VybmVsIERhdGEgVHJhbnNmZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJJ20gdGFraW5nIGEgbG9vayBhdCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AsIHNwZWNpZmljYWxseSB0aGUgYHdyaXRlYCBmdW5jdGlvbi4gSXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCBhY2NlcHRzIGEgcmVmZXJlbmNlIHRvIGEgdmFsdWUsIGB2YWx1ZTogXHUwMDI2VGAsIGFuZCB0aGVuIGNhbGxzIGBfY29weV90b191c2VyYCB3aXRoIGEgc2l6ZSBkZXRlcm1pbmVkIGJ5IGBzaXplX29mOjpcdTAwM2NUXHUwMDNlKClgLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBgVDogSW50b0J5dGVzYCB0cmFpdCBib3VuZC4gVGhpcyBpcyBlc3NlbnRpYWxseSBhIGNvbXBpbGUtdGltZSBzYWZldHkgY2hlY2ssIGVuc3VyaW5nIHRoYXQgd2hhdGV2ZXIgZGF0YSB0eXBlIGBUYCBpcywgaXQgY2FuIGJlIHNhZmVseSB0cmVhdGVkIGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMuIEkgYXBwcmVjaWF0ZSB0aGlzIOKAkyBhdm9pZGluZyBwYWRkaW5nIGlzc3VlcyBhbmQgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMgYXQgcnVudGltZSBpcyBjcnVjaWFsIGZvciBrZXJuZWwtbGV2ZWwgbWVtb3J5IG1hbmlwdWxhdGlvbi4gSXQgaGVscHMgZW5zdXJlIHRoYXQgYW55IHR5cGUgdGhhdCBpcyBzZW50IGlzIGluIHRoZSBtb3N0IGlkZWFsIGZvcm1hdC5cblxuTmV4dCwgSSdsbCBzd2l0Y2ggZ2VhcnMgYW5kIGV4YW1pbmUgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgbGluZXMgODAtMTAwLiBMZXQncyBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgZGF0YSBtb3ZlbWVudCBpbiB0aGUgbmV0d29yayBsYXllci4gSSdtIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZSBgSW50b0J5dGVzYCBmdW5jdGlvbmFsaXR5IGluIHRoaXMgbW9yZSBjb21wbGV4IGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MTAuNTI5MjE3MDQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXG4gIDgxOlxcdGltcGwgR2VubE1zZyB7XFxuICA4MjpcXHQgICAgLy8vIFB1dHMgYW4gYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXFxuICA4MzpcXHQgICAgI1tpbmxpbmVdXFxuICA4NDpcXHQgICAgZm4gcHV0XFx1MDAzY1RcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXFx1MDAyNlQpIC1cXHUwMDNlIFJlc3VsdFxcbiAgODU6XFx0ICAgIHdoZXJlXFxuICA4NjpcXHQgICAgICAgIFQ6ID9TaXplZCArIEludG9CeXRlcyxcXG4gIDg3OlxcdCAgICB7XFxuICA4ODpcXHQgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7XFxuICA4OTpcXHQgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7XFxuICA5MDpcXHQgICAgICAgIGxldCBwdHIgPSBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcXHUwMDNjY192b2lkXFx1MDAzZSgpO1xcbiAgOTE6XFx0ICAgICAgICAvLyBTQUZFVFk6IGBza2JgIGlzIHZhbGlkIGJ5IGBOZXRsaW5rU2tCdWZmYCB0eXBlIGludmFyaWFudHMsIGFuZCB0aGUgcHJvdmlkZWQgdmFsdWUgaXNcXG4gIDkyOlxcdCAgICAgICAgLy8gcmVhZGFibGUgYW5kIGluaXRpYWxpemVkIGZvciBpdHMgYHNpemVfb2ZgIGJ5dGVzLlxcbiAgOTM6XFx0ICAgICAgICB0b19yZXN1bHQodW5zYWZlIHsgYmluZGluZ3M6Om5sYV9wdXQoc2tiLCBhdHRydHlwZSwgbGVuIGFzIGNfaW50LCBwdHIpIH0pXFxuICA5NDpcXHQgICAgfVxcbiAgOTU6XFx0XFxuICA5NjpcXHQgICAgLy8vIFB1dHMgYSBgdTMyYCBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cXG4gIDk3OlxcdCAgICAjW2lubGluZV1cXG4gIDk4OlxcdCAgICBwdWIgZm4gcHV0X3UzMihcXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IHUzMikgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDk5OlxcdCAgICAgICAgc2VsZi5wdXQoYXR0cnR5cGUsIFxcdTAwMjZ2YWx1ZSlcXG4gMTAwOlxcdCAgICB9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdCAgICAvLy8gUHV0cyBhIHN0cmluZyBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cXG4gMTAzOlxcdCAgICAjW2lubGluZV1cXG4gMTA0OlxcdCAgICBwdWIgZm4gcHV0X3N0cmluZyhcXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFxcdTAwMjZDU3RyKSAtXFx1MDAzZSBSZXN1bHQge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoxMC41MjkzMzUzOTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ0MTAxNjU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgRE1BIEltcGxlbWVudGF0aW9uIGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBETUEgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgc2VjdGlvbnMgb2YgdGhlIERNQSBjb2RlLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBydXN0L2tlcm5lbC9kbWEucnNgLiBJIHdhbnQgdG8gc3BlY2lmaWNhbGx5IGV4YW1pbmUgbGluZXMgNDEwIHRocm91Z2ggNDYwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gbGluZXMgNTIwIHRocm91Z2ggNTcwLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBsb2dpYyBoZXJlOyB0aGVzZSByYW5nZXMgdXN1YWxseSBjb250YWluIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBmb3IgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBETUEgdHJhbnNmZXJzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGludGVyYWN0aW9uIHdpdGhpbiB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoxMS45NzAzNTUwNzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL2RtYS5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MTU6XFx0XFxuIDQxNjpcXHRpbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjW1RdXFx1MDAzZSB7XFxuIDQxNzpcXHQgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuIDQxODpcXHQgICAgI1tpbmxpbmVdXFxuIDQxOTpcXHQgICAgcHViIGZuIHplcm9lZF9zbGljZV93aXRoX2F0dHJzKFxcbiA0MjA6XFx0ICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuIDQyMTpcXHQgICAgICAgIGNvdW50OiB1c2l6ZSxcXG4gNDIyOlxcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcXG4gNDIzOlxcdCAgICAgICAgZG1hX2F0dHJzOiBBdHRycyxcXG4gNDI0OlxcdCAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuIDQyNTpcXHQgICAgICAgIENvaGVyZW50Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhkZXYsIGNvdW50LCBnZnBfZmxhZ3MsIGRtYV9hdHRycykubWFwKFNlbGYpXFxuIDQyNjpcXHQgICAgfVxcbiA0Mjc6XFx0XFxuIDQyODpcXHQgICAgLy8vIFNhbWUgYXMgW0NvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc10sIGJ1dCB3aXRoIGBkbWE6OkF0dHJzKDApYC5cXG4gNDI5OlxcdCAgICAjW2lubGluZV1cXG4gNDMwOlxcdCAgICBwdWIgZm4gemVyb2VkX3NsaWNlKFxcbiA0MzE6XFx0ICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuIDQzMjpcXHQgICAgICAgIGNvdW50OiB1c2l6ZSxcXG4gNDMzOlxcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcXG4gNDM0OlxcdCAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuIDQzNTpcXHQgICAgICAgIFNlbGY6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzKGRldiwgY291bnQsIGdmcF9mbGFncywgQXR0cnMoMCkpXFxuIDQzNjpcXHQgICAgfVxcbiA0Mzc6XFx0XFxuIDQzODpcXHQgICAgLy8vIEluaXRpYWxpemVzIHRoZSBlbGVtZW50IGF0IGBpYCB1c2luZyB0aGUgZ2l2ZW4gaW5pdGlhbGl6ZXIuXFxuIDQzOTpcXHQgICAgLy8vXFxuIDQ0MDpcXHQgICAgLy8vIFJldHVybnMgYEVJTlZBTGAgaWYgYGlgIGlzIG91dCBvZiBib3VuZHMuXFxuIDQ0MTpcXHQgICAgcHViIGZuIGluaXRfYXRcXHUwMDNjRVxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBpOiB1c2l6ZSwgaW5pdDogaW1wbCBJbml0XFx1MDAzY1QsIEVcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXG4gNDQyOlxcdCAgICB3aGVyZVxcbiA0NDM6XFx0ICAgICAgICBFcnJvcjogRnJvbVxcdTAwM2NFXFx1MDAzZSxcXG4gNDQ0OlxcdCAgICB7XFxuIDQ0NTpcXHQgICAgICAgIGlmIGkgXFx1MDAzZT0gc2VsZi4wLmxlbigpIHtcXG4gNDQ2OlxcdCAgICAgICAgICAgIHJldHVybiBFcnIoRUlOVkFMKTtcXG4gNDQ3OlxcdCAgICAgICAgfVxcbiA0NDg6XFx0XFxuIDQ0OTpcXHQgICAgICAgIGxldCBwdHIgPSBcXHUwMDI2cmF3IG11dCBzZWxmW2ldO1xcbiA0NTA6XFx0XFxuIDQ1MTpcXHQgICAgICAgIC8vIFNBRkVUWTpcXG4gNDUyOlxcdCAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXFxuIDQ1MzpcXHQgICAgICAgIC8vIC0gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cXG4gNDU0OlxcdCAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cXG4gNDU1OlxcdCAgICAgICAgLy8gLSBUaGUgRE1BIGFkZHJlc3MgaGFzIG5vdCBiZWVuIGV4cG9zZWQgeWV0LCBzbyB0aGVyZSBpcyBubyBjb25jdXJyZW50IGRldmljZSBhY2Nlc3MuXFxuIDQ1NjpcXHQgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG4gNDU3OlxcdFxcbiA0NTg6XFx0ICAgICAgICBPaygoKSlcXG4gNDU5OlxcdCAgICB9XFxuIDQ2MDpcXHRcXG4gNDYxOlxcdCAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGNvaGVyZW50IG1lbW9yeSBvZiB0aGUgc2FtZSBzaXplIGFzIGBkYXRhYCBhbmQgaW5pdGlhbGl6ZXMgaXQgd2l0aCBhXFxuIDQ2MjpcXHQgICAgLy8vIGNvcHkgb2YgaXRzIGNvbnRlbnRzLlxcbiA0NjM6XFx0ICAgIC8vL1xcbiA0NjQ6XFx0ICAgIC8vLyBUaGlzIGlzIHRoZSBbYENvaGVyZW50Qm94YF0gdmFyaWFudCBvZiBbYENvaGVyZW50Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnNgXS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MTEuOTcwNTA4NDU0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkyMzAzNTk4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFRyYWl0IEJvdW5kIENoYW5nZTogTm8gRnV6emluZyBOZWVkZWQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB1cGRhdGluZyB0cmFpdCBib3VuZHMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgYWNyb3NzIHNvbWUgUnVzdCBrZXJuZWwgaGVscGVyIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuRmlyc3QsIGxldCdzIGNvbmZpcm0gdGhlIHNjb3BlLiBJIGtub3cgdGhhdCBgQXNCeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIGFyZSBtYXJrZXIgdHJhaXRzIGluIFJ1c3QsIHNwZWNpZmljYWxseSB1bnNhZmUgbWFya2VyIHRyYWl0cyBmcm9tIHRoZSBgemVyb2NvcHlgIGNyYXRlLiBUaGVzZSB0cmFpdHMgaW5kaWNhdGUgYSB0eXBlIGlzIHN1aXRhYmxlIGZvciBkaXJlY3QgbWVtb3J5IGludGVycHJldGF0aW9uLCBtZWFuaW5nIGl0IGNvbnRhaW5zIG5vIHBhZGRpbmcgYW5kIGNhbiBiZSB0cmVhdGVkIGFzIGEgYFx1MDAyNlt1OF1gLiBUaGUgZmFjdCB0aGF0IHRoZXNlIGFyZSBtYXJrZXIgdHJhaXRzIHRoYXQgYXJlIHplcm8tc2l6ZWQsIGFuZCB0aGF0IHRoZSBjaGFuZ2UgaXMgb24gZ2VuZXJpYyBmdW5jdGlvbnMvbWV0aG9kcyAod2hlcmUgVDogSW50b0J5dGVzKSB0ZWxscyBtZSB0aGlzIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0cmFpbnQsIG5vdCBzb21ldGhpbmcgdGhhdCBnZW5lcmF0ZXMgYW55IGFjdHVhbCBtYWNoaW5lIGNvZGUuIFNvLCB0aGUgdHJhaXQgYm91bmQgY2hhbmdlIHNob3VsZG4ndCBiZSBhbHRlcmluZyBhbnkgcnVudGltZSBsb2dpYywgd2hpY2ggaXMgdGhlIGtleSB0aGluZy5cblxuTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcnVudGltZSBpbXBsaWNhdGlvbnMuIEFyZSB3ZSBjaGFuZ2luZyB3aGF0IHR5cGVzIGNhbiBiZSBwYXNzZWQ/IElzIGFueSBpbXBsZW1lbnRhdGlvbiBsb2dpYyBhbHRlcmVkPyBJdCBsb29rcyBsaWtlIGBBc0J5dGVzYCB3YXMgdGhlIG9sZCBuYW1lIGZvciBgSW50b0J5dGVzYCDigJMgb3IgcmF0aGVyLCB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoZSB0cmFuc211dGUgdHJhaXQuIFRoZSBtZXRob2Qgc2lnbmF0dXJlcyB1c2UgdGhlIGBcdTAwMjZUYCwgY2FsY3VsYXRlIHRoZSBgc2l6ZV9vZjo6XHUwMDNjVFx1MDAzZSgpYCwgYW5kIGNhbGwgYGJpbmRpbmdzOjpfY29weV90b191c2VyYC4gVGhlIHVzZSBvZiBgVDogSW50b0J5dGVzYCBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgdHJhaXQgYm91bmQuIFRoZXJlJ3Mgbm8gcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRyYWl0LlxuXG5JJ2xsIHJldmlldyB0aGUgaW5zdHJ1Y3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGBXb3J0aEZ1enppbmdgIGNyaXRlcmlhLiBTZWN0aW9uIDIgY2xlYXJseSBzdGF0ZXMgdGhhdCBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXNcIiBkb24ndCB3YXJyYW50IGZ1enppbmcsIHdoaWNoIGluY2x1ZGVzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBldGMuIFNvIGlmIHRoaXMgaXMgYSBwdXJlbHkgY29tcGlsZS10aW1lIGNoYW5nZSwgaXQncyBub24tZXhlY3V0YWJsZS5cblxuVGltZSB0byBjb25maXJtIHRoaXMgcGF0Y2ggaXMgbm9uLWV4ZWN1dGFibGUuIEknbGwgbWV0aWN1bG91c2x5IGdvIHRocm91Z2ggdGhlIGRpZmYsIGxpbmUgYnkgbGluZS5cblxuQWxyaWdodCwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzpcblxuKiAgICoqYHJ1c3Qva2VybmVsL2RtYS5yc2AqKjogSSdtIG5vdGluZyB0aGUgcmVtb3ZhbCBvZiB1bnVzZWQgaW1wb3J0cyAoYHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc31gKS4gVGhlbiwgaXQncyBhbGwgdHJhaXQgYm91bmQgdXBkYXRlcyBmcm9tIGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYCBhbmQgYXNzb2NpYXRlZCBjb21tZW50IGFkanVzdG1lbnRzIGluIGBpbXBsYCBibG9ja3MuXG4qICAgKipgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgKio6IFNpbWlsYXIgcGF0dGVybjogYW4gdW51c2VkIGltcG9ydCBpcyByZW1vdmVkLCBhbmQgdGhlbiB0aGUgdHJhaXQgYm91bmQgb24gYSBmdW5jdGlvbiBpcyB1cGRhdGVkIGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgLlxuKiAgICoqYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgKio6IEFnYWluLCB1bnVzZWQgaW1wb3J0cyBhcmUgcmVtb3ZlZCwgZm9sbG93ZWQgYnkgbW9yZSB0cmFpdCBib3VuZCByZXBsYWNlbWVudHMgYW5kIGNvbW1lbnQgZWRpdHMuXG5cbkknbSBub3Qgc2VlaW5nIGFueSBjaGFuZ2VzIHRvIGV4ZWN1dGFibGUgY29kZSwgcnVudGltZSBjaGVja3MsIG9yIGRhdGEgc3RydWN0dXJlcy4gRXZlcnl0aGluZyBpcyBlaXRoZXIgYW4gaW1wb3J0IGNsZWFudXAsIHRyYWl0IGJvdW5kIHVwZGF0ZSwgb3IgYSBjb21tZW50IGFkanVzdG1lbnQuIFRoZSB0cmFpdCBib3VuZCB1cGRhdGVzIGFyZSAqcHVyZWx5KiBjb21waWxlLXRpbWUgbWFya2VyIHRyYWl0cywgbWVhbmluZyB0aGUgY2hhbmdlIGlzIGVudGlyZWx5IG5vbi1leGVjdXRhYmxlLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGxvb2sgZ29vZDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuKiAgIGBFbmFibGVDb25maWdzYDogbnVsbFxuKiAgIGBGb2N1c1N5bWJvbHNgOiBudWxsXG4qICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGZyb20gemVyb2NvcHkpIGFuZCB1cGRhdGVzIGNvbW1lbnRzIGFuZCBpbXBvcnRzLCB3aXRoIG5vIGNoYW5nZXMgdG8gZXhlY3V0YWJsZSBsb2dpYywgcnVudGltZSBhc3NlcnRpb25zLCBvciBjb250cm9sIGZsb3cuXG5cbk9rYXksIEknbSBjb25maWRlbnQuIFRoaXMgY2hhbmdlIGlzIG5vbi1leGVjdXRhYmxlIGFuZCBoYXMgbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGNvZGUuIEZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC4gSSdsbCBkb3VibGUtY2hlY2sgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjExLCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM2OjIxLjIwMDg3MTE1NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoyMS4yMDA5MTY2NzZaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4czwh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 20:48:41 +0000 UTC FinishedAt: 2026-09-06 21:36:22 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzY2YTE4NWUzMjk1MTY3NzRmYTk3NmU0ZTc1Yjc0Nzk4MzBiYjcxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjE6MzU6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZG1hLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kbWEucnNcbkBAIC0yNSwxMCAmIzQzOzI1LDYgQEBcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4tICAgIHRyYW5zbXV0ZTo6e1xuLSAgICAgICAgQXNCeXRlcyxcbi0gICAgICAgIEZyb21CeXRlcywgLy9cbi0gICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLCAvL1xuIH07XG4gdXNlIGNvcmU6OntcbkBAIC00MTcsNyAmIzQzOzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXHUwMDNlIFNlbGYge1xuIC8vLyBgYGBcbiBwdWIgc3RydWN0IENvaGVyZW50Qm94XHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXG5AQCAtNDU0LDcgJiM0Mzs0NTAsNyBAQCBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuIFxuICAgICAgICAgLy8gU0FGRVRZOlxuICAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXG4tICAgICAgICAvLyAtIGBUOiBBc0J5dGVzICYjNDM7IEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cbiYjNDM7ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxuICAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cbiAgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxuICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuQEAgLTUyMyw3ICYjNDM7NTE5LDcgQEAgcHViIGZuIGZyb21fc2xpY2UoXG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cbiAgICAgI1tpbmxpbmVdXG4gICAgIHB1YiBmbiB6ZXJvZWRfd2l0aF9hdHRycyhcbkBAIC01NTQsNyAmIzQzOzU1MCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGRlcmVmX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgU2VsZjo6VGFyZ2V0IHtcbiAgICAgICAgIC8vIFNBRkVUWTpcbkBAIC01NjUsNyAmIzQzOzU2MSw3IEBAIGZuIGRlcmVmX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgU2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBGcm9tXHUwMDNjQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xuJiM0MztpbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIEZyb21cdTAwM2NDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICB2YWx1ZS4wXG5AQCAtNjYzLDcgJiM0Mzs2NTksNyBAQCBwdWIgdW5zYWZlIGZuIGFzX211dChcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBUIHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbiAgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBgVGAgb2YgY29oZXJlbnQgbWVtb3J5LlxuICAgICBmbiBhbGxvY193aXRoX2F0dHJzKFxuICAgICAgICAgZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLFxuQEAgLTc1Myw3ICYjNDM7NzQ5LDcgQEAgcHViIGZuIGluaXRfd2l0aF9hdHRyc1x1MDAzY0VcdTAwM2UoXG4gICAgICAgICAvLyBTQUZFVFk6XG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS5cbiAgICAgICAgIC8vIC0gSWYgYHJhd190cnlfaW5pdGAgZmFpbHMsIGBzZWxmYCBpcyBkcm9wcGVkLCB3aGljaCBzYWZlbHkgZnJlZXMgdGhlIHVuZGVybHlpbmdcbi0gICAgICAgIC8vICAgYENvaGVyZW50YCYjMzk7cyBETUEgbWVtb3J5LiBgVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG4mIzQzOyAgICAgICAgLy8gICBgQ29oZXJlbnRgJiMzOTtzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYFxuICAgICAgICAgLy8gICByZXF1aXJlbWVudHMgd2UgYXJlIGJ5cGFzc2luZy5cbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcbiBcbkBAIC05NDgsOSAmIzQzOzk0NCw5IEBAIHVuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkXHUwMDNlIFNlbmQgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuIC8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIGJ1ZmZlciBjb250ZW50cyAoYGZpZWxkX3JlYWRgLCBgZmllbGRfd3JpdGVgLCBgYXNfc2xpY2VgLFxuIC8vIGBhc19zbGljZV9tdXRgKSBhcmUgYHVuc2FmZWAsIGFuZCBjYWxsZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgbm8gZGF0YSByYWNlcyBvY2N1ci5cbiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgP1NpemVkICYjNDM7IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4gXG4taW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyBBc0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgSW50b0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuICAgICAgICAgXHUwMDI2c2VsZixcbiAgICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5pbmRleCAyMmVmM2RkZTM2ZmExLi5jM2I1MGRkNTBhNGNlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5AQCAtMTIsNyAmIzQzOzEyLDYgQEBcbiAgICAgYWxsb2M6OntzZWxmLCBBbGxvY0Vycm9yfSxcbiAgICAgZXJyb3I6OnRvX3Jlc3VsdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgdHJhbnNtdXRlOjpBc0J5dGVzLFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLFxuIH07XG5AQCAtODQsNyAmIzQzOzgzLDcgQEAgaW1wbCBHZW5sTXNnIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIHB1dFx1MDAzY1RcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0XG4gICAgIHdoZXJlXG4tICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgQXNCeXRlcyxcbiYjNDM7ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxuICAgICB7XG4gICAgICAgICBsZXQgc2tiID0gc2VsZi5za2Iuc2tiLmFzX3B0cigpO1xuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzIGIvcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc1xuaW5kZXggNWY2YzRkN2ExYTUxNi4uZDkzYzFhMjFmMzI0ZiAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbkBAIC0xMyw3ICYjNDM7MTMsNiBAQFxuICAgICBmczo6ZmlsZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4tICAgIHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc30sXG4gfTtcbiB1c2UgY29yZTo6bWVtOjp7c2l6ZV9vZiwgTWF5YmVVbmluaXR9O1xuIFxuQEAgLTUyNSw3ICYjNDM7NTI0LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlKFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4gICAgIC8vLyAgICAgd3JpdGVyLndyaXRlX2RtYShhbGxvYywgMCwgMjU2KVxuICAgICAvLy8gfVxuICAgICAvLy8gYGBgXG4tICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgQXNCeXRlcyAmIzQzOyA/U2l6ZWRcdTAwM2UoXG4mIzQzOyAgICBwdWIgZm4gd3JpdGVfZG1hXHUwMDNjVDogS25vd25TaXplICYjNDM7IEludG9CeXRlcyAmIzQzOyA/U2l6ZWRcdTAwM2UoXG4gICAgICAgICBcdTAwMjZtdXQgc2VsZixcbiAgICAgICAgIGFsbG9jOiBcdTAwMjZDb2hlcmVudFx1MDAzY1RcdTAwM2UsXG4gICAgICAgICBvZmZzZXQ6IHVzaXplLFxuQEAgLTU5OSw3ICYjNDM7NTk4LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0sIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVx1MDAzZSBSZVxuICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxuICAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cbiAgICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXG4tICAgIHB1YiBmbiB3cml0ZVx1MDAzY1Q6IEFzQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG4mIzQzOyAgICBwdWIgZm4gd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG4gICAgICAgICBsZXQgbGVuID0gc2l6ZV9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuICAgICAgICAgaWYgbGVuIFx1MDAzZSBzZWxmLmxlbmd0aCB7XG4gICAgICAgICAgICAgcmV0dXJuIEVycihFRkFVTFQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDIxOjM1OjE4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzCmluZGV4IDJjZTA5ZjhlOTBjNjkuLjliZDQ3ZjIwYzc4NDIgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RtYS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kbWEucnMKQEAgLTI1LDEwICYjNDM7MjUsNiBAQAogICAgIHByZWx1ZGU6OiosCiAgICAgcHRyOjpLbm93blNpemUsCiAgICAgc3luYzo6YXJlZjo6QVJlZiwKLSAgICB0cmFuc211dGU6OnsKLSAgICAgICAgQXNCeXRlcywKLSAgICAgICAgRnJvbUJ5dGVzLCAvLwotICAgIH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLCAvLwogfTsKIHVzZSBjb3JlOjp7CkBAIC00MTcsNyAmIzQzOzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtJmd0OyBTZWxmIHsKIC8vLyBgYGAKIHB1YiBzdHJ1Y3QgQ29oZXJlbnRCb3gmbHQ7VDogS25vd25TaXplICYjNDM7ID9TaXplZCZndDsoQ29oZXJlbnQmbHQ7VCZndDspOwogCi1pbXBsJmx0O1Q6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzJmd0OyBDb2hlcmVudEJveCZsdDtbVF0mZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1tUXSZndDsgewogICAgIC8vLyBbYENvaGVyZW50Qm94YF0gdmFyaWFudCBvZiBbYENvaGVyZW50Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLgogICAgICNbaW5saW5lXQogICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycygKQEAgLTQ1NCw3ICYjNDM7NDUwLDcgQEAgcHViIGZuIGluaXRfYXQmbHQ7RSZndDsoJmFtcDttdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdCZsdDtULCBFJmd0OykgLSZndDsgUmVzdWx0CiAKICAgICAgICAgLy8gU0FGRVRZOgogICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi4KLSAgICAgICAgLy8gLSBgVDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uCiYjNDM7ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvbgogICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLgogICAgICAgICAvLyAtIFRoZSBETUEgYWRkcmVzcyBoYXMgbm90IGJlZW4gZXhwb3NlZCB5ZXQsIHNvIHRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgZGV2aWNlIGFjY2Vzcy4KICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9OwpAQCAtNTIzLDcgJiM0Mzs1MTksNyBAQCBwdWIgZm4gZnJvbV9zbGljZSgKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKICAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuCiAgICAgI1tpbmxpbmVdCiAgICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKApAQCAtNTU0LDcgJiM0Mzs1NTAsNyBAQCBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94Jmx0O1QmZ3Q7IHsKICAgICAjW2lubGluZV0KICAgICBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKICAgICAgICAgLy8gU0FGRVRZOgpAQCAtNTY1LDcgJiM0Mzs1NjEsNyBAQCBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRnJvbSZsdDtDb2hlcmVudEJveCZsdDtUJmd0OyZndDsgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZCZndDsgRnJvbSZsdDtDb2hlcmVudEJveCZsdDtUJmd0OyZndDsgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICAjW2lubGluZV0KICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiAgICAgICAgIHZhbHVlLjAKQEAgLTY2Myw3ICYjNDM7NjU5LDcgQEAgcHViIHVuc2FmZSBmbiBhc19tdXQoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO211dCBUIHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQXNCeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMmZ3Q7IENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuCiAgICAgZm4gYWxsb2Nfd2l0aF9hdHRycygKICAgICAgICAgZGV2OiAmYW1wO2RldmljZTo6RGV2aWNlJmx0O0JvdW5kJmd0OywKQEAgLTc1Myw3ICYjNDM7NzQ5LDcgQEAgcHViIGZuIGluaXRfd2l0aF9hdHRycyZsdDtFJmd0OygKICAgICAgICAgLy8gU0FGRVRZOgogICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS4KICAgICAgICAgLy8gLSBJZiBgcmF3X3RyeV9pbml0YCBmYWlscywgYHNlbGZgIGlzIGRyb3BwZWQsIHdoaWNoIHNhZmVseSBmcmVlcyB0aGUgdW5kZXJseWluZwotICAgICAgICAvLyAgIGBDb2hlcmVudGAmIzM5O3MgRE1BIG1lbW9yeS4gYFQ6IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYAomIzQzOyAgICAgICAgLy8gICBgQ29oZXJlbnRgJiMzOTtzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYAogICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLgogICAgICAgICB1bnNhZmUgeyBwaW5faW5pdDo6cmF3X3RyeV9pbml0KHB0ciwgaW5pdCk/IH07CiAKQEAgLTk0OCw5ICYjNDM7OTQ0LDkgQEAgdW5zYWZlIGltcGwmbHQ7VDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkJmd0OyBTZW5kIGZvciBDb2hlcmVudCZsdDtUJmd0OyB7fQogLy8gbWV0aG9kcyB0aGF0IGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnRzIChgZmllbGRfcmVhZGAsIGBmaWVsZF93cml0ZWAsIGBhc19zbGljZWAsCiAvLyBgYXNfc2xpY2VfbXV0YCkgYXJlIGB1bnNhZmVgLCBhbmQgY2FsbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG5vIGRhdGEgcmFjZXMgb2NjdXIuCiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBLbm93blNpemUgJiM0MzsgP1NpemVkICYjNDM7IEFzQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogS25vd25TaXplICYjNDM7ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHt9CiAKLWltcGwmbHQ7VDogS25vd25TaXplICYjNDM7IEFzQnl0ZXMgJiM0MzsgP1NpemVkJmd0OyBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IEtub3duU2l6ZSAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgP1NpemVkJmd0OyBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50Jmx0O1QmZ3Q7IHsKICAgICBmbiB3cml0ZV90b19zbGljZSgKICAgICAgICAgJmFtcDtzZWxmLAogICAgICAgICB3cml0ZXI6ICZhbXA7bXV0IFVzZXJTbGljZVdyaXRlciwKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzIGIvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKaW5kZXggMjJlZjNkZGUzNmZhMS4uYzNiNTBkZDUwYTRjZSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMKQEAgLTEyLDcgJiM0MzsxMiw2IEBACiAgICAgYWxsb2M6OntzZWxmLCBBbGxvY0Vycm9yfSwKICAgICBlcnJvcjo6dG9fcmVzdWx0LAogICAgIHByZWx1ZGU6OiosCi0gICAgdHJhbnNtdXRlOjpBc0J5dGVzLAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwKIH07CkBAIC04NCw3ICYjNDM7ODMsNyBAQCBpbXBsIEdlbmxNc2cgewogICAgICNbaW5saW5lXQogICAgIGZuIHB1dCZsdDtUJmd0OygmYW1wO211dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiAmYW1wO1QpIC0mZ3Q7IFJlc3VsdAogICAgIHdoZXJlCi0gICAgICAgIFQ6ID9TaXplZCAmIzQzOyBBc0J5dGVzLAomIzQzOyAgICAgICAgVDogP1NpemVkICYjNDM7IEludG9CeXRlcywKICAgICB7CiAgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7CiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzIGIvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycwppbmRleCA1ZjZjNGQ3YTFhNTE2Li5kOTNjMWEyMWYzMjRmIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnMKQEAgLTEzLDcgJiM0MzsxMyw2IEBACiAgICAgZnM6OmZpbGUsCiAgICAgcHJlbHVkZTo6KiwKICAgICBwdHI6Oktub3duU2l6ZSwKLSAgICB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9LAogfTsKIHVzZSBjb3JlOjptZW06OntzaXplX29mLCBNYXliZVVuaW5pdH07CiAKQEAgLTUyNSw3ICYjNDM7NTI0LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlKCZhbXA7bXV0IHNlbGYsIGRhdGE6ICZhbXA7W3U4XSkgLSZndDsgUmVzdWx0IHsKICAgICAvLy8gICAgIHdyaXRlci53cml0ZV9kbWEoYWxsb2MsIDAsIDI1NikKICAgICAvLy8gfQogICAgIC8vLyBgYGAKLSAgICBwdWIgZm4gd3JpdGVfZG1hJmx0O1Q6IEtub3duU2l6ZSAmIzQzOyBBc0J5dGVzICYjNDM7ID9TaXplZCZndDsoCiYjNDM7ICAgIHB1YiBmbiB3cml0ZV9kbWEmbHQ7VDogS25vd25TaXplICYjNDM7IEludG9CeXRlcyAmIzQzOyA/U2l6ZWQmZ3Q7KAogICAgICAgICAmYW1wO211dCBzZWxmLAogICAgICAgICBhbGxvYzogJmFtcDtDb2hlcmVudCZsdDtUJmd0OywKICAgICAgICAgb2Zmc2V0OiB1c2l6ZSwKQEAgLTU5OSw3ICYjNDM7NTk4LDcgQEAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoJmFtcDttdXQgc2VsZiwgZGF0YTogJmFtcDtbdThdLCBvZmZzZXQ6ICZhbXA7bXV0IGZpbGU6Ok9mZnNldCkgLSZndDsgUmUKICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZgogICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlbgogICAgIC8vLyBpZiBpdCByZXR1cm5zIGFuIGVycm9yLgotICAgIHB1YiBmbiB3cml0ZSZsdDtUOiBBc0J5dGVzJmd0OygmYW1wO211dCBzZWxmLCB2YWx1ZTogJmFtcDtUKSAtJmd0OyBSZXN1bHQgewomIzQzOyAgICBwdWIgZm4gd3JpdGUmbHQ7VDogSW50b0J5dGVzJmd0OygmYW1wO211dCBzZWxmLCB2YWx1ZTogJmFtcDtUKSAtJmd0OyBSZXN1bHQgewogICAgICAgICBsZXQgbGVuID0gc2l6ZV9vZjo6Jmx0O1QmZ3Q7KCk7CiAgICAgICAgIGlmIGxlbiAmZ3Q7IHNlbGYubGVuZ3RoIHsKICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwNQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2luZy4KCioqQW5hbHl6aW5nIHRoZSBSdXN0IEtlcm5lbCBQYXRjaCoqCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gVGhlIGtleSB0aGluZyBJJiMzOTttIHBpY2tpbmcgdXAgaXMgdGhlIHNoaWZ0IGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGluIHR5cGUgY29uc3RyYWludHMgYW5kIHRyYWl0cy4gUmlnaHQgYXdheSwgdGhpcyBzY3JlYW1zICp6ZXJvY29weSogb3IgdHJhbnNtdXRlLXJlbGF0ZWQgY2hhbmdlcyB0byBtZSDigJMgcG90ZW50aWFsbHkgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gaGFuZGxlIGJ5dGUgcmVwcmVzZW50YXRpb25zLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgZmFtaWxpYXIgd2l0aCBgSW50b0J5dGVzYC4gSSB3aWxsIHByb2JhYmx5IGdvIGFuZCBleGFtaW5lIGBydXN0L2tlcm5lbC9wcmVsdWRlLnJzYCBhbmQgYHJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc2AsIHRvIGRldGVybWluZSB3aGF0IGRlZmluaXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJlIGludHJvZHVjZWQgYW5kIGNoYW5nZWQuIEkgY2FuIGFsc28gZmlyZSB1cCBgZ3JlcHBlcmAgb3IgY2hlY2sgdGhlIGdpdCBsb2cgYW5kIG90aGVyIFJ1c3QgZmlsZXMgdG8gc2VlIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIG5lZWQgdG8gYmUgc3VyZSBvbiB0aGlzIHBvaW50LCBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBUaGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtsbCBkaXZlIGluLCBiZWNhdXNlIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0eXBlIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ludG9CeXRlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg3NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycz03NT0gICAgcHViKGNyYXRlKSBmbiBkZXYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjYmIzM5O2dwdSBkZXZpY2U6OkRldmljZVx1MDAzY2RldmljZTo6Qm91bmRcdTAwM2Uge1xuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtODUtI1tyZXByKEMpXVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5yczo4NjojW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTg3LXN0cnVjdCBQdGVBcnJheVx1MDAzY2NvbnN0IE5VTV9FTlRSSUVTOiB1c2l6ZVx1MDAzZShbdTY0OyBOVU1fRU5UUklFU10pO1xuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTcwPSAgICBmbiB3cml0ZV90b19zbGljZShcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy03Ni1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjc3Oi8vIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFueSBgVDogSW1tdXRhYmxlICYjNDM7IEludG9CeXRlc2AuXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3ODppbXBsXHUwMDNjVDogSW1tdXRhYmxlICYjNDM7IEludG9CeXRlc1x1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFQge1xucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzktICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTE0Nj1pbXBsXHUwMDNjVCwgQVx1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFZlY1x1MDAzY1QsIEFcdTAwM2VcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE0Ny13aGVyZVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTQ4OiAgICBUOiBJbW11dGFibGUgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ5LSAgICBBOiBBbGxvY2F0b3IsXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjE3PSAgICBmbiByZWFkX2Zyb21fc2xpY2VfbXV0KFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTIyMy1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjIyNDovLyBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBhbnkgYFQ6IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXNgLlxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjI1OmltcGxcdTAwM2NUOiBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVCB7XG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yMjYtICAgIGZuIHJlYWRfZnJvbV9zbGljZV9tdXQoXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjQ3PWltcGxcdTAwM2NULCBBXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVmVjXHUwMDNjVCwgQVx1MDAzZVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjQ4LXdoZXJlXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyNDk6ICAgIFQ6IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXMsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNTAtICAgIEE6IEFsbG9jYXRvcixcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9MzU2PSAgICBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVx1MDAzZSBTZWxmIHtcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE1LVxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNjppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNDE3LSAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00NTItICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cbnJ1c3Qva2VybmVsL2RtYS5yczo0NTM6ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1NC0gICAgICAgIC8vICAgZXJyb3IgY2Fubm90IGxlYXZlIHRoZSBlbGVtZW50IGluIGFuIGludmFsaWQgc3RhdGUuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzPTUxMD0gICAgcHViIGZuIGZyb21fc2xpY2UoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTUyMS1cbnJ1c3Qva2VybmVsL2RtYS5yczo1MjI6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjMtICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NTQ0PSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTU1Mi1cbnJ1c3Qva2VybmVsL2RtYS5yczo1NTM6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTQtICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvZG1hLnJzPTU1NT0gICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01NjMtXG5ydXN0L2tlcm5lbC9kbWEucnM6NTY0OmltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzICYjNDM7IEtub3duU2l6ZSAmIzQzOyA/U2l6ZWRcdTAwM2UgRnJvbVx1MDAzY0NvaGVyZW50Qm94XHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy01NjUtICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz02NTY9ICAgIHB1YiB1bnNhZmUgZm4gYXNfbXV0KFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFQge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy02NjEtXG5ydXN0L2tlcm5lbC9kbWEucnM6NjYyOmltcGxcdTAwM2NUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNjYzLSAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzPTczNz0gICAgcHViIGZuIGluaXRfd2l0aF9hdHRyc1x1MDAzY0VcdTAwM2UoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTc1MS0gICAgICAgIC8vIC0gSWYgYHJhd190cnlfaW5pdGAgZmFpbHMsIGBzZWxmYCBpcyBkcm9wcGVkLCB3aGljaCBzYWZlbHkgZnJlZXMgdGhlIHVuZGVybHlpbmdcbnJ1c3Qva2VybmVsL2RtYS5yczo3NTI6ICAgICAgICAvLyAgIGBDb2hlcmVudGAmIzM5O3MgRE1BIG1lbW9yeS4gYFQ6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG5ydXN0L2tlcm5lbC9kbWEucnMtNzUzLSAgICAgICAgLy8gICByZXF1aXJlbWVudHMgd2UgYXJlIGJ5cGFzc2luZy5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9OTQxPXVuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICYjNDM7IFNlbmQgJiM0MzsgP1NpemVkXHUwMDNlIFNlbmQgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy05NDYtLy8gVGhlIHNhZmUgbWV0aG9kcyBvbmx5IHJldHVybiBtZXRhZGF0YSBvciByYXcgcG9pbnRlcnMgd2hvc2UgdXNlIHJlcXVpcmVzIGB1bnNhZmVgLlxucnVzdC9rZXJuZWwvZG1hLnJzOjk0Nzp1bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBTeW5jXHUwMDNlIFN5bmMgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxucnVzdC9rZXJuZWwvZG1hLnJzLTk0OC1cbnJ1c3Qva2VybmVsL2RtYS5yczo5NDk6aW1wbFx1MDAzY1Q6IEtub3duU2l6ZSAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgP1NpemVkXHUwMDNlIGRlYnVnZnM6OkJpbmFyeVdyaXRlciBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2RtYS5ycy05NTAtICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz0xMjE1PSAgICBmbiBjb3B5X3JlYWRcdTAwM2NUOiB6ZXJvY29weTo6RnJvbUJ5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UpIC1cdTAwM2UgVCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTEyMTktICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvZG1hLnJzOjEyMjA6ICAgIGZuIGNvcHlfd3JpdGVcdTAwM2NUOiB6ZXJvY29weTo6SW50b0J5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UsIHZhbHVlOiBUKSB7XG5ydXN0L2tlcm5lbC9kbWEucnMtMTIyMS0gICAgICAgIFN5c01lbUJhY2tlbmQ6OmNvcHlfd3JpdGUodmlldy5jcHVfYWRkciwgdmFsdWUpXG4tLVxucnVzdC9rZXJuZWwvaW8ucnM9OTI9ICAgIGZuIHNpemUocDogKmNvbnN0IFNlbGYpIC1cdTAwM2UgdXNpemUge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTEwMS0vL1xucnVzdC9rZXJuZWwvaW8ucnM6MTAyOi8vIFRoaXMgY2Fubm90IGJlIGRlcml2ZWQgYXMgYGRlcml2ZShJbnRvQnl0ZXMpYCBhcyB0aGUgcGFkZGluZyBmcmVlIHByb3BlcnR5IGNvbWVzIGZyb20gdHlwZVxucnVzdC9rZXJuZWwvaW8ucnMtMTAzLS8vIGludmFyaWFudCB3aGljaCB0aGUgbWFjcm8gZG9lcyBub3Qga25vdy5cbnJ1c3Qva2VybmVsL2lvLnJzOjEwNDp1bnNhZmUgaW1wbFx1MDAzY2NvbnN0IFNJWkU6IHVzaXplXHUwMDNlIEludG9CeXRlcyBmb3IgUmVnaW9uXHUwMDNjU0laRVx1MDAzZSB7XG5ydXN0L2tlcm5lbC9pby5ycy0xMDUtICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTMwMD0gICAgZm4gY29weV9yZWFkXHUwMDNjVDogRnJvbUJ5dGVzXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcdTAwM2MmIzM5O18sIFRcdTAwM2UpIC1cdTAwM2UgVCB7XG4tLVxucnVzdC9rZXJuZWwvaW8ucnMtMzIzLSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2lvLnJzOjMyNDogICAgZm4gY29weV93cml0ZVx1MDAzY1Q6IEludG9CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlLCB2YWx1ZTogVCkge1xucnVzdC9rZXJuZWwvaW8ucnMtMzI1LSAgICAgICAgLy8gUHJvamVjdCBgc2VsZmAgdG8gYFt1OF1gLlxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTQzMz0gICAgZm4gaXNfZW1wdHlcdTAwM2NUXHUwMDNlKHNlbGYpIC1cdTAwM2UgYm9vbFxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTQ1NC0gICAgLy8vIH07XG5ydXN0L2tlcm5lbC9pby5yczo0NTU6ICAgIC8vLyAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXG5ydXN0L2tlcm5lbC9pby5ycy00NTYtICAgIC8vLyAjW3JlcHIoQyldXG4tLVxucnVzdC9rZXJuZWwvaW8ucnM9NDY1PSAgICBmbiB0cnlfY2FzdFx1MDAzY1VcdTAwM2Uoc2VsZikgLVx1MDAzZSBSZXN1bHRcdTAwM2NcdTAwM2NTZWxmOjpCYWNrZW5kIGFzIElvQmFja2VuZFx1MDAzZTo6Vmlld1x1MDAzYyYjMzk7YSwgVVx1MDAzZVx1MDAzZVxucnVzdC9rZXJuZWwvaW8ucnMtNDY2LSAgICB3aGVyZVxucnVzdC9rZXJuZWwvaW8ucnM6NDY3OiAgICAgICAgU2VsZjo6VGFyZ2V0OiBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvaW8ucnM6NDY4OiAgICAgICAgVTogRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ2OS0gICAge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTU3NT0gICAgZm4gY29weV93cml0ZShzZWxmLCB2YWx1ZTogU2VsZjo6VGFyZ2V0KVxuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTU3Ny0gICAgICAgIFNlbGY6OkJhY2tlbmQ6IElvQ29weWFibGUsXG5ydXN0L2tlcm5lbC9pby5yczo1Nzg6ICAgICAgICBTZWxmOjpUYXJnZXQ6IFNpemVkICYjNDM7IEludG9CeXRlcyxcbnJ1c3Qva2VybmVsL2lvLnJzLTU3OS0gICAge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzPTE0MDU9ICAgIGZuIGNvcHlfcmVhZFx1MDAzY1Q6IEZyb21CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlKSAtXHUwMDNlIFQge1xuLS1cbnJ1c3Qva2VybmVsL2lvLnJzLTE0MTUtICAgICNbaW5saW5lXVxucnVzdC9rZXJuZWwvaW8ucnM6MTQxNjogICAgZm4gY29weV93cml0ZVx1MDAzY1Q6IEludG9CeXRlc1x1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XHUwMDNjJiMzOTtfLCBUXHUwMDNlLCB2YWx1ZTogVCkge1xucnVzdC9rZXJuZWwvaW8ucnMtMTQxNy0gICAgICAgIC8vIFNBRkVUWTpcbi0tXG5ydXN0L2tlcm5lbC9pby5ycz0xNTk5PSAgICBmbiBjb3B5X3JlYWRcdTAwM2NUOiBGcm9tQnl0ZXNcdTAwM2UodmlldzogU2VsZjo6Vmlld1x1MDAzYyYjMzk7XywgVFx1MDAzZSkgLVx1MDAzZSBUIHtcbi0tXG5ydXN0L2tlcm5lbC9pby5ycy0xNjA2LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2lvLnJzOjE2MDc6ICAgIGZuIGNvcHlfd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UodmlldzogU2VsZjo6Vmlld1x1MDAzYyYjMzk7XywgVFx1MDAzZSwgdmFsdWU6IFQpIHtcbnJ1c3Qva2VybmVsL2lvLnJzLTE2MDgtICAgICAgICBtYXRjaCB2aWV3IHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycz04ND0gICAgZm4gcHV0XHUwMDNjVFx1MDAzZShcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHRcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTg1LSAgICB3aGVyZVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6ODY6ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODctICAgIHtcbi0tXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY1LSAgICBGcm9tQnl0ZXMsXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzOjY2OiAgICBJbnRvQnl0ZXMsIC8vXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY3LX07XG4tLVxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03MS0gICAgRnJvbUJ5dGVzLFxucnVzdC9rZXJuZWwvcHJlbHVkZS5yczo3MjogICAgSW50b0J5dGVzLCAvL1xucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03My19O1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NDg5PSAgICBwdWIgZm4gd3JpdGVfc2xpY2UoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUyNi0gICAgLy8vIGBgYFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1Mjc6ICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgSW50b0J5dGVzICYjNDM7ID9TaXplZFx1MDAzZShcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTI4LSAgICAgICAgXHUwMDI2bXV0IHNlbGYsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz01Nzk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZV9maWxlKFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcdTAwMjZbdThdLCBvZmZzZXQ6IFx1MDAyNm11dCBmaWxlOjpPZmZzZXQpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdXNpemVcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNjAwLSAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NjAxOiAgICBwdWIgZm4gd3JpdGVcdTAwM2NUOiBJbnRvQnl0ZXNcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdCB7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMi0gICAgICAgIGxldCBsZW4gPSBzaXplX29mOjpcdTAwM2NUXHUwMDNlKCk7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MjE9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfc3RydWN0KGN0eDogXHUwMDI2Q3R4LCBzdHJjdDogXHUwMDI2RGF0YVN0cnVjdCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NUb2tlblN0cmVhbSwgRXJyb3JcdTAwM2Uge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTMyLSAgICAgICAgLy8gICBzYW1lIGFzIGl0cyBvbmx5IG5vbi1aU1QgZmllbGQgKG1lYW5pbmcgdGhlcmUmIzM5O3Mgbm8gcGFkZGluZyBvdXRzaWRlXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5yczozMzogICAgICAgIC8vICAgb2YgdGhhdCBmaWVsZCkgYW5kIHdlIHJlcXVpcmUgdGhhdCBmaWVsZCB0byBiZSBgSW50b0J5dGVzYCAobWVhbmluZ1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzQtICAgICAgICAvLyAgIHRoZXJlJiMzOTtzIG5vIHBhZGRpbmcgaW4gdGhhdCBmaWVsZCkuXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzYtICAgICAgICAvLyAgIHRoYXQgYW55IHBhZGRpbmcgYnl0ZXMgd291bGQgbmVlZCB0byBjb21lIGZyb20gdGhlIGZpZWxkcywgYWxsIG9mXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5yczozNzogICAgICAgIC8vICAgd2hpY2ggd2UgcmVxdWlyZSB0byBiZSBgSW50b0J5dGVzYCAobWVhbmluZyB0aGV5IGRvbiYjMzk7dCBoYXZlIGFueVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzgtICAgICAgICAvLyAgIHBhZGRpbmcpLiBOb3RlIHRoYXQgdGhpcyBob2xkcyByZWdhcmRsZXNzIG9mIG90aGVyIGByZXByYFxuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk1LVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6OTY6ICAgIE9rKEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHN0cmN0LCBUcmFpdDo6SW50b0J5dGVzLCBmaWVsZF9ib3VuZHMpXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy05Ny0gICAgICAgIC5wYWRkaW5nX2NoZWNrKHBhZGRpbmdfY2hlY2spXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MTAxPWZuIGRlcml2ZV9pbnRvX2J5dGVzX2VudW0oY3R4OiBcdTAwMjZDdHgsIGVubTogXHUwMDI2RGF0YUVudW0pIC1cdTAwM2UgUmVzdWx0XHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXHUwMDNlIHtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0xMTAtICAgIGxldCB0YWdfdHlwZV9kZWZpbml0aW9uID0gZ2VuZXJhdGVfdGFnX2VudW0oY3R4LCBcdTAwMjZyZXByLCBlbm0pO1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTExOiAgICBPayhJbXBsQmxvY2tCdWlsZGVyOjpuZXcoY3R4LCBlbm0sIFRyYWl0OjpJbnRvQnl0ZXMsIEZpZWxkQm91bmRzOjpBTExfU0VMRilcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTExMi0gICAgICAgIC5wYWRkaW5nX2NoZWNrKFBhZGRpbmdDaGVjazo6RW51bSB7IHRhZ190eXBlX2RlZmluaXRpb24gfSlcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycz0xMTY9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfdW5pb24oY3R4OiBcdTAwMjZDdHgsIHVubjogXHUwMDI2RGF0YVVuaW9uKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1Rva2VuU3RyZWFtLCBFcnJvclx1MDAzZSB7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTU5LVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTYwOiAgICBsZXQgaW1wbF9ibG9jayA9IEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHVubiwgVHJhaXQ6OkludG9CeXRlcywgRmllbGRCb3VuZHM6OkFMTF9TRUxGKVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTYxLSAgICAgICAgLnBhZGRpbmdfY2hlY2soUGFkZGluZ0NoZWNrOjpVbmlvbilcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTQ0PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6aGFzaDo6SGFzaCBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTQ1LSAgICAgICAgd2hlcmVcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NDY6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgJiM0MzsgI3plcm9jb3B5X2NyYXRlOjpJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTQ3LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycz00OT0gICAgICAgICAgICBmbiBoYXNoXHUwMDNjSDogI2NvcmU6Omhhc2g6Okhhc2hlclx1MDAzZShcdTAwMjZzZWxmLCBzdGF0ZTogXHUwMDI2bXV0IEgpIHtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTA6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZikpXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTUxLSAgICAgICAgICAgIH1cbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTUzPSAgICAgICAgICAgIGZuIGhhc2hfc2xpY2VcdTAwM2NIOiAjY29yZTo6aGFzaDo6SGFzaGVyXHUwMDNlKGRhdGE6IFx1MDAyNltTZWxmXSwgc3RhdGU6IFx1MDAyNm11dCBIKSB7XG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjU0OiAgICAgICAgICAgICAgICAjY29yZTo6aGFzaDo6SGFzaGVyOjp3cml0ZShzdGF0ZSwgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKGRhdGEpKVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01NS0gICAgICAgICAgICB9XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycz03Mj0gICAgICAgIGltcGwgI2ltcGxfZ2VuZXJpY3MgI2NvcmU6OmNtcDo6UGFydGlhbEVxIGZvciAjdHlwZV9pZGVudCAjdHlfZ2VuZXJpY3NcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzMtICAgICAgICB3aGVyZVxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo3NDogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyAmIzQzOyAjemVyb2NvcHlfY3JhdGU6OkltbXV0YWJsZSxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzUtICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTc3PSAgICAgICAgICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy03OC0gICAgICAgICAgICAgICAgI2NvcmU6OmNtcDo6UGFydGlhbEVxOjplcShcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6Nzk6ICAgICAgICAgICAgICAgICAgICAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZiksXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjgwOiAgICAgICAgICAgICAgICAgICAgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKG90aGVyKSxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtODEtICAgICAgICAgICAgICAgIClcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTg1PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpFcSBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTg2LSAgICAgICAgd2hlcmVcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6ODc6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgJiM0MzsgI3plcm9jb3B5X2NyYXRlOjpJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTg4LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTQyPW1hY3JvX3J1bGVzISBpZGVudCB7XG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTY4LS8vIEluc3RlYWQsIHdlIGhhdmUgbW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIGxpa2UgXCYjMzQ7dW5zdXBwb3J0ZWQgcmVwcmVzZW50YXRpb25cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczo2OTovLyBmb3IgZGVyaXZpbmcgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgb3IgVW5hbGlnbmVkIG9uIGFuIGVudW1cJiMzNDtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy03MC0vL1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xMTM9ICAgIGZuIGludG9fdHMoc2VsZikgLVx1MDAzZSBwcm9jX21hY3JvMjo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjUtZGVyaXZlIShGcm9tQnl0ZXMgPVx1MDAzZSBkZXJpdmVfZnJvbV9ieXRlcyA9XHUwMDNlIGNyYXRlOjpkZXJpdmU6OmZyb21fYnl0ZXM6OmRlcml2ZV9mcm9tX2J5dGVzKTtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxMjY6ZGVyaXZlIShJbnRvQnl0ZXMgPVx1MDAzZSBkZXJpdmVfaW50b19ieXRlcyA9XHUwMDNlIGNyYXRlOjpkZXJpdmU6OmludG9fYnl0ZXM6OmRlcml2ZV9pbnRvX2J5dGVzKTtcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjctZGVyaXZlIShVbmFsaWduZWQgPVx1MDAzZSBkZXJpdmVfdW5hbGlnbmVkID1cdTAwM2UgY3JhdGU6OmRlcml2ZTo6dW5hbGlnbmVkOjpkZXJpdmVfdW5hbGlnbmVkKTtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM9MTM0PXB1YiBmbiBtb3N0X3RyYWl0cyh0czogcHJvY19tYWNybzo6VG9rZW5TdHJlYW0pIC1cdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xNDYtICAgICAgICAoY3JhdGU6OmRlcml2ZTo6ZnJvbV9ieXRlczo6ZGVyaXZlX2Zyb21fYnl0ZXMsIFRyYWl0OjpGcm9tQnl0ZXMpLFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjE0NzogICAgICAgIChjcmF0ZTo6ZGVyaXZlOjppbnRvX2J5dGVzOjpkZXJpdmVfaW50b19ieXRlcywgVHJhaXQ6OkludG9CeXRlcyksXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ4LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmRlcml2ZV9zcGxpdF9hdCwgVHJhaXQ6OlNwbGl0QXQpLFxuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xNzA9cHViIGZuIGRlcml2ZV9mcm9tX3plcm9lcyh0czogcHJvY19tYWNybzo6VG9rZW5TdHJlYW0pIC1cdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xNzMtXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTc0Oi8vLyBEZXByZWNhdGVkOiBwcmVmZXIgW2BJbnRvQnl0ZXNgXSBpbnN0ZWFkLlxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjE3NTojW2RlcHJlY2F0ZWQoc2luY2UgPSBcJiMzNDswLjguMFwmIzM0Oywgbm90ZSA9IFwmIzM0O2BBc0J5dGVzYCB3YXMgcmVuYW1lZCB0byBgSW50b0J5dGVzYFwmIzM0OyldXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTc2LSNbZG9jKGhpZGRlbildXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycz0zMDI9cHViKGNyYXRlKSBlbnVtIFRyYWl0IHtcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTMxOS0gICAgRnJvbUJ5dGVzLFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozMjA6ICAgIEludG9CeXRlcyxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzIxLSAgICBVbmFsaWduZWQsXG4tLVxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycz0zMjk9ICAgIGZuIHRvX3Rva2VucyhcdTAwMjZzZWxmLCB0b2tlbnM6IFx1MDAyNm11dCBUb2tlblN0cmVhbSkge1xuLS1cbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzQ3LSAgICAgICAgICAgIFRyYWl0OjpGcm9tQnl0ZXMgPVx1MDAzZSBcJiMzNDtGcm9tQnl0ZXNcJiMzNDssXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzOjM0ODogICAgICAgICAgICBUcmFpdDo6SW50b0J5dGVzID1cdTAwM2UgXCYjMzQ7SW50b0J5dGVzXCYjMzQ7LFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNDktICAgICAgICAgICAgVHJhaXQ6OlVuYWxpZ25lZCA9XHUwMDNlIFwmIzM0O1VuYWxpZ25lZFwmIzM0Oyxcbi0tXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTM2OC0gICAgICAgICAgICB8IFRyYWl0OjpGcm9tQnl0ZXNcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnM6MzY5OiAgICAgICAgICAgIHwgVHJhaXQ6OkludG9CeXRlc1xucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNzAtICAgICAgICAgICAgfCBUcmFpdDo6VW5hbGlnbmVkXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtNS0jW3JlcHIodTE2KV1cbi0tXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycy0xMS0gICAgKCRuYW1lOiBpZGVudCwgJHRyYWl0OiBpZGVudCwgJGxlYWRpbmdfZmllbGQ6IHR5KSA9XHUwMDNlIHtcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjEyOiAgICAgICAgI1tkZXJpdmUoJHRyYWl0LCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFNwbGl0QXQpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMTMtICAgICAgICAjW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM6NDojW2Rlcml2ZShUcnlGcm9tQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIEludG9CeXRlcyldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzLTUtI1tyZXByKHUxNildXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzLTExLSAgICAoJG5hbWU6IGlkZW50LCAkdHJhaXQ6IGlkZW50LCAkbGVhZGluZ19maWVsZDogdHkpID1cdTAwM2Uge1xucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5yczoxMjogICAgICAgICNbZGVyaXZlKCR0cmFpdCwgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgSW50b0J5dGVzKV1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMTMtICAgICAgICAjW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGUucnMtNi1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGUucnM6NzojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5ycy04LSNbcmVwcihDKV1cbi0tXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9zdGF0aWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlX3JlZl9zdGF0aWNfc2l6ZS5ycy03LSNbcmVwcihDLCBhbGlnbigyKSldXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGUucnMtNi1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzOjc6I1tkZXJpdmUoSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlKV1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTgtI1tyZXByKEMpXVxuLS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNS1cbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy03LSNbcmVwcihDLCBhbGlnbigyKSldXG4tLVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJ5X3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNDItLy8hXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NDM6Ly8hICNbZGVyaXZlKEZyb21CeXRlcywgSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBVbmFsaWduZWQpXVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQ0LS8vISAjW3JlcHIoQyldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUxLS8vIVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjUyOi8vISAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01My0vLyEgI1tyZXByKEMsIHBhY2tlZCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTQ3OD1tYWNyb19ydWxlcyEgZGVmaW5lX3R5cGUge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01MTMtXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTE0OmBcJiMzNDssIHN0cmluZ2lmeSEoJG5hbWUpLCBcJiMzNDtgIGltcGxlbWVudHMgW2BGcm9tQnl0ZXNgXSwgW2BJbnRvQnl0ZXNgXSwgYW5kIFtgVW5hbGlnbmVkYF0sXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTE1LW1ha2luZyBpdCB1c2VmdWwgZm9yIHBhcnNpbmcgYW5kIHNlcmlhbGl6YXRpb24uIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIGFuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUyMS1bYEZyb21CeXRlc2BdOiBjcmF0ZTo6RnJvbUJ5dGVzXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTIyOltgSW50b0J5dGVzYF06IGNyYXRlOjpJbnRvQnl0ZXNcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01MjMtW2BVbmFsaWduZWRgXTogY3JhdGU6OlVuYWxpZ25lZFwmIzM0OyksXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI0LSAgICAgICAgICAgICNbZGVyaXZlKENvcHksIENsb25lLCBFcSwgUGFydGlhbEVxLCBIYXNoKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1MjU6ICAgICAgICAgICAgI1tjZmdfYXR0cihhbnkoZmVhdHVyZSA9IFwmIzM0O2Rlcml2ZVwmIzM0OywgdGVzdCksIGRlcml2ZShLbm93bkxheW91dCwgSW1tdXRhYmxlLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKSldXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI2LSAgICAgICAgICAgICNbcmVwcih0cmFuc3BhcmVudCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzNi0gICAgICAgIC8vIGFyZSBgSW1tdXRhYmxlYCwgYFRyeUZyb21CeXRlc2AsIGBGcm9tWmVyb3NgLCBgRnJvbUJ5dGVzYCxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1Mzc6ICAgICAgICAvLyBgSW50b0J5dGVzYCwgYW5kIGBVbmFsaWduZWRgLlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzOC0gICAgICAgICNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTU0My0gICAgICAgICAgICBpbXBsX29yX3ZlcmlmeSEoTyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgJG5hbWVcdTAwM2NPXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo1NDQ6ICAgICAgICAgICAgaW1wbF9vcl92ZXJpZnkhKE8gPVx1MDAzZSBJbnRvQnl0ZXMgZm9yICRuYW1lXHUwMDNjT1x1MDAzZSk7XG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTQ1LSAgICAgICAgICAgIGltcGxfb3JfdmVyaWZ5IShPID1cdTAwM2UgVW5hbGlnbmVkIGZvciAkbmFtZVx1MDAzY09cdTAwM2UpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycz0xMDQ5PSAgICAgICAgaW1wbFx1MDAzY1QsIFVcdTAwM2UgRGlzdHJpYnV0aW9uXHUwMDNjVFx1MDAzZSBmb3IgVSB7fVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMDU2LSAgICAvLyBBIG5hdGl2ZSBpbnRlZ2VyIHR5cGUgKHUxNiwgaTMyLCBldGMpLlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjEwNTc6ICAgIHRyYWl0IE5hdGl2ZTogQXJiaXRyYXJ5ICYjNDM7IEZyb21CeXRlcyAmIzQzOyBJbnRvQnl0ZXMgJiM0MzsgSW1tdXRhYmxlICYjNDM7IENvcHkgJiM0MzsgUGFydGlhbEVxICYjNDM7IERlYnVnIHtcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMDU4LSAgICAgICAgY29uc3QgWkVSTzogU2VsZjtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwMT0gICAgdHJhaXQgQnl0ZUFycmF5OlxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjExMDI6ICAgICAgICBGcm9tQnl0ZXMgJiM0MzsgSW50b0J5dGVzICYjNDM7IEltbXV0YWJsZSAmIzQzOyBDb3B5ICYjNDM7IEFzUmVmXHUwMDNjW3U4XVx1MDAzZSAmIzQzOyBBc011dFx1MDAzY1t1OF1cdTAwM2UgJiM0MzsgRGVidWcgJiM0MzsgRGVmYXVsdCAmIzQzOyBFcVxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTExMDMtICAgIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwOD0gICAgdHJhaXQgQnl0ZU9yZGVyVHlwZTpcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczoxMTA5OiAgICAgICAgRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyAmIzQzOyBVbmFsaWduZWQgJiM0MzsgQ29weSAmIzQzOyBFcSAmIzQzOyBEZWJ1ZyAmIzQzOyBIYXNoICYjNDM7IEZyb21cdTAwM2NTZWxmOjpOYXRpdmVcdTAwM2VcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTEwLSAgICB7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5ycz0xNTI9aW1wbFx1MDAzYyYjMzk7YSwgQiwgVFx1MDAzZSBSZWZcdTAwM2NCLCBbVF1cdTAwM2Vcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1NC0gICAgQjogJiMzOTthICYjNDM7IEludG9CeXRlU2xpY2VNdXRcdTAwM2MmIzM5O2FcdTAwM2UsXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzOjE1NTogICAgVDogRnJvbUJ5dGVzICYjNDM7IEludG9CeXRlcyAmIzQzOyBJbW11dGFibGUsXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1Ni17XG4tLVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM9ODEyPWltcGxcdTAwM2NTcmMsIERzdDogP1NpemVkICYjNDM7IFVuYWxpZ25lZFx1MDAzZSBGcm9tXHUwMDNjQ2FzdEVycm9yXHUwMDNjU3JjLCBEc3RcdTAwM2VcdTAwM2UgZm9yIFNpemVFcnJvclx1MDAzY1NyYywgRHN0XHUwMDNlIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MjgtICAgIC8vL1xucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM6ODI5OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MzAtICAgIC8vLyAjW3JlcHIoQyldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM3LSAgICAvLy9cbnJ1c3QvemVyb2NvcHkvc3JjL2Vycm9yLnJzOjgzODogICAgLy8vICNbZGVyaXZlKEZyb21CeXRlcywgSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBVbmFsaWduZWQpXVxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM5LSAgICAvLy8gI1tyZXByKEMsIHBhY2tlZCldXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjUtLy8gICBvbmUgcG9zc2libGUgc2VxdWVuY2Ugb2YgMCBieXRlcywgYW5kIGAoKWAgaXMgaW5oYWJpdGVkLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjY6Ly8gLSBgSW50b0J5dGVzYDogU2luY2UgYCgpYCBoYXMgc2l6ZSAwLCBpdCBjb250YWlucyBubyBwYWRkaW5nIGJ5dGVzLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjctLy8gLSBgVW5hbGlnbmVkYDogYCgpYCBoYXMgYWxpZ25tZW50IDEuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMzEtY29uc3QgXzogKCkgPSB1bnNhZmUge1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MzI6ICAgIHVuc2FmZV9pbXBsISgoKTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0zMy0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoKCkpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTM5LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBudW1lcmljIHR5cGVzIFsxXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NDA6Ly8gLSBgSW50b0J5dGVzYDogbnVtZXJpYyB0eXBlcyBoYXZlIG5vIHBhZGRpbmcgYnl0ZXMgWzFdXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MS0vLyAtIGBVbmFsaWduZWRgIChgdThgIGFuZCBgaThgIG9ubHkpOiBUaGUgcmVmZXJlbmNlIFsyXSBzcGVjaWZpZXMgdGhlIHNpemUgb2Zcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02Ny1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2ODogICAgdW5zYWZlX2ltcGwhKHU4OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY5OiAgICB1bnNhZmVfaW1wbCEoaTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzAtICAgIGFzc2VydF91bmFsaWduZWQhKHU4LCBpOCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3MTogICAgdW5zYWZlX2ltcGwhKHUxNjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzI6ICAgIHVuc2FmZV9pbXBsIShpMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjczOiAgICB1bnNhZmVfaW1wbCEodTMyOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDogICAgdW5zYWZlX2ltcGwhKGkzMjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzU6ICAgIHVuc2FmZV9pbXBsISh1NjQ6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc2OiAgICB1bnNhZmVfaW1wbCEoaTY0OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NzogICAgdW5zYWZlX2ltcGwhKHUxMjg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc4OiAgICB1bnNhZmVfaW1wbCEoaTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Nzk6ICAgIHVuc2FmZV9pbXBsISh1c2l6ZTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODA6ICAgIHVuc2FmZV9pbXBsIShpc2l6ZTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODE6ICAgIHVuc2FmZV9pbXBsIShmMzI6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjgyOiAgICB1bnNhZmVfaW1wbCEoZjY0OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04My0gICAgI1tjZmcoZmVhdHVyZSA9IFwmIzM0O2Zsb2F0LW5pZ2h0bHlcJiMzNDspXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODQ6ICAgIHVuc2FmZV9pbXBsISgjW2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9IFwmIzM0O2Zsb2F0LW5pZ2h0bHlcJiMzNDspKSldIGYxNjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtODUtICAgICNbY2ZnKGZlYXR1cmUgPSBcJiMzNDtmbG9hdC1uaWdodGx5XCYjMzQ7KV1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjg2OiAgICB1bnNhZmVfaW1wbCEoI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSBcJiMzNDtmbG9hdC1uaWdodGx5XCYjMzQ7KSkpXSBmMTI4OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04Ny19O1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTkxLS8vIC0gYEZyb21aZXJvc2A6IFZhbGlkIHNpbmNlIFwmIzM0O1t0XWhlIHZhbHVlIGZhbHNlIGhhcyB0aGUgYml0IHBhdHRlcm4gMHgwMFwmIzM0OyBbMV0uXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo5MjovLyAtIGBJbnRvQnl0ZXNgOiBTaW5jZSBcJiMzNDt0aGUgYm9vbGVhbiB0eXBlIGhhcyBhIHNpemUgYW5kIGFsaWdubWVudCBvZiAxIGVhY2hcJiMzNDtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTkzLS8vICAgYW5kIFwmIzM0O1RoZSB2YWx1ZSBmYWxzZSBoYXMgdGhlIGJpdCBwYXR0ZXJuIDB4MDAgYW5kIHRoZSB2YWx1ZSB0cnVlIGhhcyB0aGVcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDAtI1thbGxvdyhjbGlwcHk6Om11bHRpcGxlX3Vuc2FmZV9vcHNfcGVyX2Jsb2NrKV1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjEwMTpjb25zdCBfOiAoKSA9IHVuc2FmZSB7IHVuc2FmZV9pbXBsIShib29sOiBJbW11dGFibGUsIEZyb21aZXJvcywgSW50b0J5dGVzLCBVbmFsaWduZWQpIH07XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDItYXNzZXJ0X3VuYWxpZ25lZCEoYm9vbCk7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTI0LS8vICAgY29udGFpbnMgMHgwMDAwLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI1Oi8vIC0gYEludG9CeXRlc2A6IGBjaGFyYCBpcyBwZXIgcmVmZXJlbmNlIFsxXSBcJiMzNDtyZXByZXNlbnRlZCBhcyBhIDMyLWJpdCB1bnNpZ25lZFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI2Oi8vICAgd29yZFwmIzM0OyAoYHUzMmApIHdoaWNoIGlzIGBJbnRvQnl0ZXNgLiBOb3RlIHRoYXQgdW5saWtlIGB1MzJgLCBub3QgYWxsIGJpdFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTI3LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBgY2hhcmAuXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxMzE6Y29uc3QgXzogKCkgPSB1bnNhZmUgeyB1bnNhZmVfaW1wbCEoY2hhcjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcykgfTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTEzMi1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xNTAtLy8gLSBgSW1tdXRhYmxlYDogYFt1OF1gIGRvZXMgbm90IGNvbnRhaW4gYW55IGBVbnNhZmVDZWxsYHMuXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxNTE6Ly8gLSBgRnJvbVplcm9zYCwgYEludG9CeXRlc2AsIGBVbmFsaWduZWRgOiBgW3U4XWAgaXMgYEZyb21aZXJvc2AsIGBJbnRvQnl0ZXNgLFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUyLS8vICAgYW5kIGBVbmFsaWduZWRgLlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE1Ni0vL1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTU3Oi8vIEZJWE1FKCM0MjkpOiBJbXByb3ZlIHNhZmV0eSBwcm9vZiBmb3IgYEZyb21aZXJvc2AgYW5kIGBJbnRvQnl0ZXNgOyBoYXZpbmcgdGhlIHNhbWVcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE1OC0vLyBsYXlvdXQgYXMgYFt1OF1gIGlzbiYjMzk7dCBzdWZmaWNpZW50LlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE2NC0jW2FsbG93KGNsaXBweTo6bXVsdGlwbGVfdW5zYWZlX29wc19wZXJfYmxvY2spXVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTY1OmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKHN0cjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcywgVW5hbGlnbmVkKSB9O1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTY2LVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTE4Mj1tYWNyb19ydWxlcyEgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8ge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5Mi1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE5MzovLyBgTm9uWmVyb1h4eGAgaXMgYEludG9CeXRlc2AsIGJ1dCBub3QgYEZyb21aZXJvc2Agb3IgYEZyb21CeXRlc2AuXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xOTQtLy9cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5NS0vLyBTQUZFVFk6XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxOTY6Ly8gLSBgSW50b0J5dGVzYDogYE5vblplcm9YeHhgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgaXRzIGFzc29jaWF0ZWQgcHJpbWl0aXZlLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk3LS8vICAgIFNpbmNlIGl0IGlzIHRoZSBzYW1lIHNpemUsIHRoaXMgZ3VhcmFudGVlcyBpdCBoYXMgbm8gcGFkZGluZyAtIGludGVnZXJzXG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI2LWNvbnN0IF86ICgpID0gdW5zYWZlIHtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIyNzogICAgdW5zYWZlX2ltcGwhKE5vblplcm9VODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMjg6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTg6IEltbXV0YWJsZSwgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI5LSAgICBhc3NlcnRfdW5hbGlnbmVkIShOb25aZXJvVTgsIE5vblplcm9JOCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzA6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTE2OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzE6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTE2OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzI6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzM6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzQ6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzU6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzY6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTEyODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM3OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0kxMjg6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Vc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM5OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0lzaXplOiBJbW11dGFibGUsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yNDAtICAgIHVuc2FmZV9pbXBsX3RyeV9mcm9tX2J5dGVzX2Zvcl9ub256ZXJvIShcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yNTYtLy8gU0FGRVRZOlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjU3Oi8vIC0gYFRyeUZyb21CeXRlc2AgKHdpdGggbm8gdmFsaWRhdG9yKSwgYEZyb21aZXJvc2AsIGBGcm9tQnl0ZXNgLCBgSW50b0J5dGVzYDpcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1OC0vLyAgIFRoZSBSdXN0IGNvbXBpbGVyIHJldXNlcyBgMGAgdmFsdWUgdG8gcmVwcmVzZW50IGBOb25lYCwgc29cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0yODEtY29uc3QgXzogKCkgPSB1bnNhZmUge1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjgyOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1U4XHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODM6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSThcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4NC0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoT3B0aW9uXHUwMDNjTm9uWmVyb1U4XHUwMDNlLCBPcHRpb25cdTAwM2NOb25aZXJvSThcdTAwM2UpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg1OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1UxNlx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4NjogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9JMTZcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODc6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvVTMyXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg4OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb0kzMlx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4OTogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9VNjRcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTA6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSTY0XHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjkxOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXHUwMDNjTm9uWmVyb1UxMjhcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTI6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cdTAwM2NOb25aZXJvSTEyOFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MzogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9Vc2l6ZVx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5NDogICAgdW5zYWZlX2ltcGwhKE9wdGlvblx1MDAzY05vblplcm9Jc2l6ZVx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI5NS19O1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTQwMj0gICAgbWFjcm9fcnVsZXMhIGltcGxfdHJhaXRzX2Zvcl9hdG9taWNzIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MDgtICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XHUwMDNlIFRyeUZyb21CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo0MDk6ICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XHUwMDNlIEludG9CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MTAtICAgICAgICAgICAgKSpcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00NTY9ICAgIG1vZCBhdG9taWNfOCB7XG4tLVxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNDY1LSAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cdTAwM2UgVHJ5RnJvbUJ5dGVzIGZvciBBdG9taWNCb29sIFtib29sXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo0NjY6ICAgICAgICBpbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoPVx1MDAzZSBJbnRvQnl0ZXMgZm9yIEF0b21pY0Jvb2wgW2Jvb2xdKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQ2Ny1cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz02MDM9ICAgIG1vZCBhdG9taWNfcHRyIHtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02MDktXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2MTA6ICAgICAgICAvLyBGSVhNRSgjMTcwKTogSW1wbGVtZW50IGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCBvbmNlIHdlIGltcGxlbWVudFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjExLSAgICAgICAgLy8gdGhvc2UgdHJhaXRzIGZvciBgKm11dCBUYC5cbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NDctLy8gICBvbmUgcG9zc2libGUgc2VxdWVuY2Ugb2YgMCBieXRlcywgYW5kIGBQaGFudG9tRGF0YWAgaXMgaW5oYWJpdGVkLlxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjQ4Oi8vIC0gYEludG9CeXRlc2A6IFNpbmNlIGBQaGFudG9tRGF0YWAgaGFzIHNpemUgMCwgaXQgY29udGFpbnMgbm8gcGFkZGluZyBieXRlcy5cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY0OS0vLyAtIGBVbmFsaWduZWRgOiBQZXIgdGhlIHByZWNlZGluZyByZWZlcmVuY2UsIGBQaGFudG9tRGF0YWAgaGFzIGFsaWdubWVudCAxLlxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1Ny0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIEZyb21CeXRlcyBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY1ODogICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIEludG9CeXRlcyBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1OS0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XHUwMDNlIFVuYWxpZ25lZCBmb3IgUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlKTtcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NjUtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgV3JhcHBpbmdcdTAwM2NUXHUwMDNlW1RdKTtcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY2NjppbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogSW50b0J5dGVzID1cdTAwM2UgSW50b0J5dGVzIGZvciBXcmFwcGluZ1x1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY3LWFzc2VydF91bmFsaWduZWQhKFdyYXBwaW5nXHUwMDNjKClcdTAwM2UsIFdyYXBwaW5nXHUwMDNjdThcdTAwM2UpO1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTczOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICYjNDM7IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgTWFudWFsbHlEcm9wXHUwMDNjVFx1MDAzZVtUXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCAmIzQzOyBJbnRvQnl0ZXMgPVx1MDAzZSBJbnRvQnl0ZXMgZm9yIE1hbnVhbGx5RHJvcFx1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzQxLS8vIFNBRkVUWTogYE1hbnVhbGx5RHJvcFx1MDAzY1RcdTAwM2VgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgYFRgIFsxXSwgYW5kIHRodXMgaGFzIHRoZVxuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTgxMz0gICAgICAgIGZuIHByb2plY3Qoc2xmOiBQdHJJbm5lclx1MDAzYyYjMzk7XywgU2VsZlx1MDAzZSkgLVx1MDAzZSAqbXV0IFQge1xuLS1cbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgyOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICYjNDM7IEZyb21CeXRlcyA9XHUwMDNlIEZyb21CeXRlcyBmb3IgQ2VsbFx1MDAzY1RcdTAwM2VbVF0pO1xucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODMwOmltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzID1cdTAwM2UgSW50b0J5dGVzIGZvciBDZWxsXHUwMDNjVFx1MDAzZVtUXSk7XG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04MzEtLy8gU0FGRVRZOiBgQ2VsbFx1MDAzY1RcdTAwM2VgIGhhcyB0aGUgc2FtZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gYXMgYFRgIFsxXSwgYW5kIHRodXNcbi0tXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NDAtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCAmIzQzOyBGcm9tQnl0ZXMgPVx1MDAzZSBGcm9tQnl0ZXMgZm9yIFVuc2FmZUNlbGxcdTAwM2NUXHUwMDNlW1RdKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjA3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlcy4KCioqQW5hbHl6aW5nIGBBc0J5dGVzYCB2cy4gYEludG9CeXRlc2AgaW4gdGhlIFJ1c3QgS2VybmVsKioKCk9rYXksIHNvIEkgbmVlZCBhIHJlZnJlc2hlciBvbiB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBgQXNCeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIHdpdGhpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgIGFuZCBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoZXNlIHRyYWl0cyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBtZW1vcnkgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWxseSB1bnNhZmUgY29kZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBpbXBsZW1lbnRhdGlvbnMsIHVzYWdlIGV4YW1wbGVzLCBhbmQgYW55IGNvbW1lbnRzIHRoYXQgaWxsdW1pbmF0ZSB0aGUgZGVzaWduIGRlY2lzaW9ucy4gQXJlIHdlIGNvbmNlcm5lZCBhYm91dCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgaGVyZT8gRG9lcyBgQXNCeXRlc2Agc3VnZ2VzdCBhIG1vcmUgKmJvcnJvd2VkKiBvciB2aWV3LWxpa2UgYXBwcm9hY2gsIHdoaWxlIGBJbnRvQnl0ZXNgIGltcGxpZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIG9yIHBvdGVudGlhbGx5IGEgY29weWluZyBvcGVyYXRpb24/IEkmIzM5O20gaG9waW5nIHRvIGNsYXJpZnkgaWYgd2UgYXJlIHVzaW5nIHRoZXNlIHRvIGFjaGlldmUgbWVtb3J5IGxheW91dCBpbnRlcnByZXRhdGlvbnMgb2YgdHlwZXMsIG9yIGp1c3QgZ2VuZXJhbCBjb252ZXJzaW9ucy4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIGlkZW50aWZ5IGFueSBzcGVjaWZpYyBjb25zaWRlcmF0aW9ucyByZWdhcmRpbmcgc2FmZXR5LCBhbGlnbm1lbnQsIG9yIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiB1dGlsaXppbmcgdGhlc2UgY29udmVyc2lvbiB0cmFpdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHViIHVzZSB6ZXJvY29weTo6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02My0jW2RvYyhub19pbmxpbmUpXVxucnVzdC9rZXJuZWwvcHJlbHVkZS5yczo2NDpwdWIgdXNlIHplcm9jb3B5Ojp7XG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTY1LSAgICBGcm9tQnl0ZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AgKExpbmVzIDUwLTkwKSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgYHByZWx1ZGUucnNgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgUnVzdCBjb2RlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyA1MCB0aHJvdWdoIDkwLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBjaHVuayDigJMgSSBiZXQgaXQmIzM5O3MgZGVmaW5pbmcgc29tZSBjb3JlIGFic3RyYWN0aW9ucyBvciB0eXBlIGFsaWFzZXMgdGhhdCBhcmUgZm91bmRhdGlvbmFsIHRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIG92ZXJhbGwgcHJvamVjdCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHBlcmhhcHMgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGF0IHJhbmdlLiBJdCYjMzk7cyB0aGUgJiMzNDtwcmVsdWRlLCYjMzQ7IHNvIGl0JiMzOTtzIGxpa2VseSBzZXR0aW5nIHVwIGNvbW1vbiB0cmFpdHMgb3IgZGF0YSBzdHJ1Y3R1cmVzIHRvIGJlIGluIHNjb3BlIGV2ZXJ5d2hlcmUgZWxzZS4gSeKAmWxsIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbWFkZSwgb3IgaWYgdGhlcmUgaXMgYW55IGludGVyZXN0aW5nIHVzZSBvZiBgdW5zYWZlYCBvciBgY29uc3RgIGNvbnRleHRzIHRoYXQgd2FycmFudHMgZnVydGhlciBzY3J1dGlueS4gSSB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRlc2lnbiBjaG9pY2VzIHRoZXJlIOKAkyB0aGUgaW50ZW50IG9mIHRoZSBhdXRob3IvdGVhbSBiZWhpbmQgdGhvc2UgbGluZXMuIElzIGl0IGlkaW9tYXRpYyBSdXN0PyBBcmUgdGhleSBhZGhlcmluZyB0byBiZXN0IHByYWN0aWNlcyBmb3Iga2VybmVsIGRldmVsb3BtZW50LCBvciBtYWtpbmcgdHJhZGVvZmZzIGZvciBwZXJmb3JtYW5jZSBvciBoYXJkd2FyZSBjb25zdHJhaW50cz8gVGltZSB0byBkaXNzZWN0IGl0IGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9wcmVsdWRlLnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdCNbZG9jKG5vX2lubGluZSldXG4gIDUyOlx0cHViIHVzZSBwaW5faW5pdDo6e1xuICA1MzpcdCAgICBpbml0LFxuICA1NDpcdCAgICBwaW5fZGF0YSxcbiAgNTU6XHQgICAgcGluX2luaXQsXG4gIDU2Olx0ICAgIHBpbm5lZF9kcm9wLFxuICA1NzpcdCAgICBJblBsYWNlV3JpdGUsXG4gIDU4Olx0ICAgIEluaXQsXG4gIDU5Olx0ICAgIFBpbkluaXQsXG4gIDYwOlx0ICAgIFplcm9hYmxlLCAvL1xuICA2MTpcdH07XG4gIDYyOlx0XG4gIDYzOlx0I1tkb2Mobm9faW5saW5lKV1cbiAgNjQ6XHRwdWIgdXNlIHplcm9jb3B5Ojp7XG4gIDY1Olx0ICAgIEZyb21CeXRlcyxcbiAgNjY6XHQgICAgSW50b0J5dGVzLCAvL1xuICA2NzpcdH07XG4gIDY4Olx0XG4gIDY5Olx0I1tkb2Mobm9faW5saW5lKV1cbiAgNzA6XHRwdWIgdXNlIHplcm9jb3B5X2Rlcml2ZTo6e1xuICA3MTpcdCAgICBGcm9tQnl0ZXMsXG4gIDcyOlx0ICAgIEludG9CeXRlcywgLy9cbiAgNzM6XHR9O1xuICA3NDpcdFxuICA3NTpcdCNbZG9jKG5vX2lubGluZSldXG4gIDc2Olx0cHViIHVzZSBzdXBlcjo6e1xuICA3NzpcdCAgICBhbGxvYzo6e1xuICA3ODpcdCAgICAgICAgZmxhZ3M6OiosXG4gIDc5Olx0ICAgICAgICBCb3gsXG4gIDgwOlx0ICAgICAgICBLQm94LFxuICA4MTpcdCAgICAgICAgS1ZCb3gsXG4gIDgyOlx0ICAgICAgICBLVlZlYyxcbiAgODM6XHQgICAgICAgIEtWZWMsXG4gIDg0Olx0ICAgICAgICBWQm94LFxuICA4NTpcdCAgICAgICAgVlZlYyxcbiAgODY6XHQgICAgICAgIFZlYywgLy9cbiAgODc6XHQgICAgfSxcbiAgODg6XHQgICAgYnVpbGRfYXNzZXJ0Ojp7XG4gIDg5Olx0ICAgICAgICBidWlsZF9hc3NlcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyOTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWNlbnQgYHplcm9jb3B5YCBVcGRhdGUqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgemVyb2NvcHlgIHZlcnNpb24gMC44IHRyaWdnZXJlZCBhIHJlbmFtZSDigJMgYEFzQnl0ZXNgIGlzIG5vdyBgSW50b0J5dGVzYC4gVGhlIGBwcmVsdWRlYCBub3cgZXhwb3NlcyBgSW50b0J5dGVzYCBkaXJlY3RseSBmcm9tIGB6ZXJvY29weWAsIHdoaWNoIGlzIGhlbHBmdWwuIFRoaXMgY29tbWl0IHNwZWNpZmljYWxseSB1cGRhdGVzIHRoZSBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYGRtYS5yc2AsIGBuZXRsaW5rLnJzYCwgYW5kIGB1YWNjZXNzLnJzYCBmaWxlcyBhbGwgcmVwbGFjZSBgQXNCeXRlc2Agd2l0aCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlaXIgdHJhaXQgYm91bmRzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBHaXQgbG9nLiBJcyB0aGlzIGEgc2ltcGxlIHRyYWl0IHJlbmFtZSwgb3IgZGlkIHNvbWV0aGluZyBtb3JlIHNpZ25pZmljYW50IGNoYW5nZSBhdCBydW50aW1lPyBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBrbm93bi4gQmVmb3JlIGRpZ2dpbmcgaW50byB0aGUgY29tbWl0IGhpc3RvcnkgdGhvdWdoLCBsZXQgbWUgY2hlY2sgdGhlIGB0cmFuc211dGUucnNgIG1vZHVsZSBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0cmFuc211dGUgZnVuY3Rpb25hbGl0eSBpcyBzdGlsbCBhdmFpbGFibGUgYW5kIGhhc24mIzM5O3QgY2hhbmdlZCBpdHMgZnVuY3Rpb24uIFRoaXMgcmVuYW1lIGNvdWxkIGhhdmUgYWZmZWN0ZWQgdGhhdCBzb21laG93LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiB0aGVyZSB0byBjaGVjayBpdHMgY3VycmVudCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHViIG1vZCB0cmFuc211dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtydXN0L2tlcm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9saWIucnMtMTQwLXB1YiBtb2QgdHJhY2Vwb2ludDtcbnJ1c3Qva2VybmVsL2xpYi5yczoxNDE6cHViIG1vZCB0cmFuc211dGU7XG5ydXN0L2tlcm5lbC9saWIucnMtMTQyLXB1YiBtb2QgdHlwZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpcyBhdCB0aGUga2VybmVsIGxldmVsLiBUcmFuc211dGF0aW9uIGlzIGEgbm90b3Jpb3VzbHkgdHJpY2t5IGFyZWEsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW1zIGxhbmd1YWdlIGxpa2UgUnVzdCB3aGVyZSB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgZGlyZWN0bHkuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBgdW5zYWZlYCBibG9ja3MsIG9mIGNvdXJzZS4gVGhlIGNvcmUgcXVlc3Rpb25zIGFyZTogV2hhdCBhcmUgdGhlIGNvbnN0cmFpbnRzIGJlaW5nIHBsYWNlZCBvbiB0cmFuc211dGVzPyBBcmUgdGhleSByZWx5aW5nIGhlYXZpbHkgb24gYWxpZ25tZW50IGd1YXJhbnRlZXM/IFdoYXQgc2FmZWd1YXJkcyBhcmUgaW4gcGxhY2UgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3Ig4oCTIGFyZSB0aGV5IHVzaW5nIGNvbXBpbGUtdGltZSBjaGVja3MsIHJ1bnRpbWUgYXNzZXJ0aW9ucywgb3IgYSBjb21iaW5hdGlvbj8gQW5kIGFyZSB0aGV5IGJlaW5nIG92ZXJseSByZXN0cmljdGl2ZSwgb3IgY2xldmVybHkgZXhwbG9pdGluZyBldmVyeSBwb3NzaWJsZSBvcHRpbWl6YXRpb24/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHVzZSBvZiBgI1tyZXByXWAgYXR0cmlidXRlcyBhbmQgaG93IHRob3NlIGFmZmVjdCB0aGUgdHJhbnNtdXRlJiMzOTtzIHNhZmV0eSBhbmQgZWZmZWN0aXZlbmVzcy4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGdvb2QgZXhlcmNpc2UsIEkgY2FuIGZlZWwgaXQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gdGhlIG5pdHR5LWdyaXR0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC90cmFuc211dGUucnMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdC8vISBUcmFpdHMgZm9yIHRyYW5zbXV0aW5nIHR5cGVzLlxuICAgNDpcdFxuICAgNTpcdHVzZSBjb3JlOjptZW06OnNpemVfb2Y7XG4gICA2Olx0XG4gICA3Olx0Ly8vIFR5cGVzIGZvciB3aGljaCBhbnkgYml0IHBhdHRlcm4gaXMgdmFsaWQuXG4gICA4Olx0Ly8vXG4gICA5Olx0Ly8vIE5vdCBhbGwgdHlwZXMgYXJlIHZhbGlkIGZvciBhbGwgdmFsdWVzLiBGb3IgZXhhbXBsZSwgYSBgYm9vbGAgbXVzdCBiZSBlaXRoZXIgemVybyBvciBvbmUsIHNvXG4gIDEwOlx0Ly8vIHJlYWRpbmcgYXJiaXRyYXJ5IGJ5dGVzIGludG8gc29tZXRoaW5nIHRoYXQgY29udGFpbnMgYSBgYm9vbGAgaXMgbm90IG9rYXkuXG4gIDExOlx0Ly8vXG4gIDEyOlx0Ly8vIEl0JiMzOTtzIG9rYXkgZm9yIHRoZSB0eXBlIHRvIGhhdmUgcGFkZGluZywgYXMgaW5pdGlhbGl6aW5nIHRob3NlIGJ5dGVzIGhhcyBubyBlZmZlY3QuXG4gIDEzOlx0Ly8vXG4gIDE0Olx0Ly8vICMgRXhhbXBsZXNcbiAgMTU6XHQvLy9cbiAgMTY6XHQvLy8gYGBgXG4gIDE3Olx0Ly8vIHVzZSBrZXJuZWw6OnRyYW5zbXV0ZTo6RnJvbUJ5dGVzO1xuICAxODpcdC8vL1xuICAxOTpcdC8vLyAjIGZuIHRlc3QoKSAtXHUwMDNlIE9wdGlvblx1MDAzYygpXHUwMDNlIHtcbiAgMjA6XHQvLy8gbGV0IHJhdyA9IFsxLCAyLCAzLCA0XTtcbiAgMjE6XHQvLy9cbiAgMjI6XHQvLy8gbGV0IHJlc3VsdCA9IHUzMjo6ZnJvbV9ieXRlcyhcdTAwMjZyYXcpPztcbiAgMjM6XHQvLy9cbiAgMjQ6XHQvLy8gI1tjZmcodGFyZ2V0X2VuZGlhbiA9IFwmIzM0O2xpdHRsZVwmIzM0OyldXG4gIDI1Olx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHg0MDMwMjAxKTtcbiAgMjY6XHQvLy9cbiAgMjc6XHQvLy8gI1tjZmcodGFyZ2V0X2VuZGlhbiA9IFwmIzM0O2JpZ1wmIzM0OyldXG4gIDI4Olx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHgxMDIwMzA0KTtcbiAgMjk6XHQvLy9cbiAgMzA6XHQvLy8gIyBTb21lKCgpKSB9XG4gIDMxOlx0Ly8vICMgdGVzdCgpLm9rX29yKEVJTlZBTCk/O1xuICAzMjpcdC8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4gIDMzOlx0Ly8vIGBgYFxuICAzNDpcdC8vL1xuICAzNTpcdC8vLyAjIFNhZmV0eVxuICAzNjpcdC8vL1xuICAzNzpcdC8vLyBBbGwgYml0LXBhdHRlcm5zIG11c3QgYmUgdmFsaWQgZm9yIHRoaXMgdHlwZS4gVGhpcyB0eXBlIG11c3Qgbm90IGhhdmUgaW50ZXJpb3IgbXV0YWJpbGl0eS5cbiAgMzg6XHRwdWIgdW5zYWZlIHRyYWl0IEZyb21CeXRlcyB7XG4gIDM5Olx0ICAgIC8vLyBDb252ZXJ0cyBhIHNsaWNlIG9mIGJ5dGVzIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cbiAgNDA6XHQgICAgLy8vXG4gIDQxOlx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcbiAgNDI6XHQgICAgLy8vIGBUYCBhbmQgZGlmZmVyZW50IGZyb20gemVyby5cbiAgNDM6XHQgICAgLy8vXG4gIDQ0Olx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXG4gIDQ1Olx0ICAgIGZuIGZyb21fYnl0ZXMoYnl0ZXM6IFx1MDAyNlt1OF0pIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2U2VsZlx1MDAzZVxuICA0NjpcdCAgICB3aGVyZVxuICA0NzpcdCAgICAgICAgU2VsZjogU2l6ZWQsXG4gIDQ4Olx0ICAgIHtcbiAgNDk6XHQgICAgICAgIGxldCBzbGljZV9wdHIgPSBieXRlcy5hc19wdHIoKS5jYXN0OjpcdTAwM2NTZWxmXHUwMDNlKCk7XG4gIDUwOlx0ICAgICAgICBsZXQgc2l6ZSA9IHNpemVfb2Y6Olx1MDAzY1NlbGZcdTAwM2UoKTtcbiAgNTE6XHRcbiAgNTI6XHQgICAgICAgIGlmIGJ5dGVzLmxlbigpID09IHNpemUgXHUwMDI2XHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xuICA1MzpcdCAgICAgICAgICAgIC8vIFNBRkVUWTogU2l6ZSBhbmQgYWxpZ25tZW50IHdlcmUganVzdCBjaGVja2VkLlxuICA1NDpcdCAgICAgICAgICAgIHVuc2FmZSB7IFNvbWUoXHUwMDI2KnNsaWNlX3B0cikgfVxuICA1NTpcdCAgICAgICAgfSBlbHNlIHtcbiAgNTY6XHQgICAgICAgICAgICBOb25lXG4gIDU3Olx0ICAgICAgICB9XG4gIDU4Olx0ICAgIH1cbiAgNTk6XHRcbiAgNjA6XHQgICAgLy8vIENvbnZlcnRzIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYCB0byBhIHJlZmVyZW5jZSB0byBgU2VsZmAuXG4gIDYxOlx0ICAgIC8vL1xuICA2MjpcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNgXSwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IGBieXRlc2AgZG9lcyBub3RcbiAgNjM6XHQgICAgLy8vIG5lZWQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBvZiBgU2VsZmAgLSB0aGUgYXBwcm9wcmlhdGUgcG9ydGlvbiBpcyBjdXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mXG4gIDY0Olx0ICAgIC8vLyBgYnl0ZXNgLCBhbmQgdGhlIHJlbWFpbmRlciByZXR1cm5lZCBhbG9uZ3NpZGUgYFNlbGZgLlxuICA2NTpcdCAgICBmbiBmcm9tX2J5dGVzX3ByZWZpeChieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoXHUwMDI2U2VsZiwgXHUwMDI2W3U4XSlcdTAwM2VcbiAgNjY6XHQgICAgd2hlcmVcbiAgNjc6XHQgICAgICAgIFNlbGY6IFNpemVkLFxuICA2ODpcdCAgICB7XG4gIDY5Olx0ICAgICAgICBsZXQgKHByZWZpeCwgcmVtYWluZGVyKSA9IGJ5dGVzLnNwbGl0X2F0X2NoZWNrZWQoc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpKT87XG4gIDcwOlx0XG4gIDcxOlx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzKHByZWZpeCkubWFwKHxzfCAocywgcmVtYWluZGVyKSlcbiAgNzI6XHQgICAgfVxuICA3MzpcdFxuICA3NDpcdCAgICAvLy8gQ29udmVydHMgYSBtdXRhYmxlIHNsaWNlIG9mIGJ5dGVzIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cbiAgNzU6XHQgICAgLy8vXG4gIDc2Olx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcbiAgNzc6XHQgICAgLy8vIGBUYCBhbmQgZGlmZmVyZW50IGZyb20gemVyby5cbiAgNzg6XHQgICAgLy8vXG4gIDc5Olx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXG4gIDgwOlx0ICAgIGZuIGZyb21fYnl0ZXNfbXV0KGJ5dGVzOiBcdTAwMjZtdXQgW3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjZtdXQgU2VsZlx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIyOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhlIGNvZGUsIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgdHJhbnNtdXRlLnJzYCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzdHVmZiBoZXJlLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggcmVpbnRlcnByZXRhdGlvbnMgb2YgbWVtb3J5IGFuZCBwb3NzaWJseSBzb21lIHVuY2hlY2tlZCB0eXBlIGNvbnZlcnNpb25zLiBJJiMzOTttIGhvcGluZyB0byBzZWUgd2VsbC1jb21tZW50ZWQgY29kZSwgZ2l2ZW4gdGhlIGluaGVyZW50IGRhbmdlcnMgb2YgdW5jaGVja2VkIHRyYW5zbXV0YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBhbnkgcG90ZW50aWFsIGFsaWdubWVudCBpc3N1ZXMgYW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGVkLiBJIHdhbnQgdG8gc3BvdCBhbnkgcGxhY2VzIHdoZXJlIHRoZSBjb21waWxlciBtaWdodCBiZSBsZWFuaW5nIG9uIG9wdGltaXphdGlvbnMsIGFuZCBob3cgdGhlIGNvZGUgZ3VhcmRzIGFnYWluc3QgdGhhdC4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIG1hbmFnaW5nIGxpZmV0aW1lcyBpZiBwb2ludGVycyBhcmUgaW52b2x2ZWQgaW4gdHJhbnNtdXRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgdW5zYWZlYCBibG9ja3MsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgaW52YXJpYW50cyBhcmUgdmVyeSBleHBsaWNpdGx5IGRvY3VtZW50ZWQuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgdXNpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYHRyYW5zbXV0ZWAgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgZm9yIGtlcm5lbC1sZXZlbCBvcGVyYXRpb25zLi4uIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGFsaWFzaW5nIGFuZCBkYXRhIHJhY2VzIGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudC4gSSYjMzk7bSBhbHNvIGhvcGluZyB0aGV5JiMzOTtyZSBhdm9pZGluZyBhbnkgdW5kZWZpbmVkIGJlaGF2aW9yLCBvZiBjb3Vyc2UhIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdCAgICB3aGVyZVxuICA4MjpcdCAgICAgICAgU2VsZjogQXNCeXRlcyAmIzQzOyBTaXplZCxcbiAgODM6XHQgICAge1xuICA4NDpcdCAgICAgICAgbGV0IHNsaWNlX3B0ciA9IGJ5dGVzLmFzX211dF9wdHIoKS5jYXN0OjpcdTAwM2NTZWxmXHUwMDNlKCk7XG4gIDg1Olx0ICAgICAgICBsZXQgc2l6ZSA9IHNpemVfb2Y6Olx1MDAzY1NlbGZcdTAwM2UoKTtcbiAgODY6XHRcbiAgODc6XHQgICAgICAgIGlmIGJ5dGVzLmxlbigpID09IHNpemUgXHUwMDI2XHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xuICA4ODpcdCAgICAgICAgICAgIC8vIFNBRkVUWTogU2l6ZSBhbmQgYWxpZ25tZW50IHdlcmUganVzdCBjaGVja2VkLlxuICA4OTpcdCAgICAgICAgICAgIHVuc2FmZSB7IFNvbWUoXHUwMDI2bXV0ICpzbGljZV9wdHIpIH1cbiAgOTA6XHQgICAgICAgIH0gZWxzZSB7XG4gIDkxOlx0ICAgICAgICAgICAgTm9uZVxuICA5MjpcdCAgICAgICAgfVxuICA5MzpcdCAgICB9XG4gIDk0Olx0XG4gIDk1Olx0ICAgIC8vLyBDb252ZXJ0cyB0aGUgYmVnaW5uaW5nIG9mIGBieXRlc2AgdG8gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBgU2VsZmAuXG4gIDk2Olx0ICAgIC8vL1xuICA5NzpcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfbXV0YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcbiAgOTg6XHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xuICA5OTpcdCAgICAvLy8gb2YgYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cbiAxMDA6XHQgICAgZm4gZnJvbV9ieXRlc19tdXRfcHJlZml4KGJ5dGVzOiBcdTAwMjZtdXQgW3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoXHUwMDI2bXV0IFNlbGYsIFx1MDAyNm11dCBbdThdKVx1MDAzZVxuIDEwMTpcdCAgICB3aGVyZVxuIDEwMjpcdCAgICAgICAgU2VsZjogQXNCeXRlcyAmIzQzOyBTaXplZCxcbiAxMDM6XHQgICAge1xuIDEwNDpcdCAgICAgICAgbGV0IChwcmVmaXgsIHJlbWFpbmRlcikgPSBieXRlcy5zcGxpdF9hdF9tdXRfY2hlY2tlZChzaXplX29mOjpcdTAwM2NTZWxmXHUwMDNlKCkpPztcbiAxMDU6XHRcbiAxMDY6XHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXNfbXV0KHByZWZpeCkubWFwKHxzfCAocywgcmVtYWluZGVyKSlcbiAxMDc6XHQgICAgfVxuIDEwODpcdFxuIDEwOTpcdCAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCBpbnN0YW5jZSBvZiBgU2VsZmAgYnkgY29weWluZyBgYnl0ZXNgLlxuIDExMDpcdCAgICAvLy9cbiAxMTE6XHQgICAgLy8vIFVubGlrZSBbYEZyb21CeXRlczo6ZnJvbV9ieXRlc2BdLCB3aGljaCByZXF1aXJlcyBhbGlnbmVkIGlucHV0LCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBvblxuIDExMjpcdCAgICAvLy8gbm9uLWFsaWduZWQgZGF0YSBhdCB0aGUgY29zdCBvZiBhIGNvcHkuXG4gMTEzOlx0ICAgIGZuIGZyb21fYnl0ZXNfY29weShieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2NTZWxmXHUwMDNlXG4gMTE0Olx0ICAgIHdoZXJlXG4gMTE1Olx0ICAgICAgICBTZWxmOiBTaXplZCxcbiAxMTY6XHQgICAge1xuIDExNzpcdCAgICAgICAgaWYgYnl0ZXMubGVuKCkgPT0gc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpIHtcbiAxMTg6XHQgICAgICAgICAgICAvLyBTQUZFVFk6IHdlIGp1c3QgdmVyaWZpZWQgdGhhdCBgYnl0ZXNgIGhhcyB0aGUgc2FtZSBzaXplIGFzIGBTZWxmYCwgYW5kIHBlciB0aGVcbiAxMTk6XHQgICAgICAgICAgICAvLyBpbnZhcmlhbnRzIG9mIGBGcm9tQnl0ZXNgLCBhbnkgYnl0ZSBzZXF1ZW5jZSBvZiB0aGUgY29ycmVjdCBsZW5ndGggaXMgYSB2YWxpZCB2YWx1ZVxuIDEyMDpcdCAgICAgICAgICAgIC8vIGZvciBgU2VsZmAuXG4gMTIxOlx0ICAgICAgICAgICAgU29tZSh1bnNhZmUgeyBjb3JlOjpwdHI6OnJlYWRfdW5hbGlnbmVkKGJ5dGVzLmFzX3B0cigpLmNhc3Q6Olx1MDAzY1NlbGZcdTAwM2UoKSkgfSlcbiAxMjI6XHQgICAgICAgIH0gZWxzZSB7XG4gMTIzOlx0ICAgICAgICAgICAgTm9uZVxuIDEyNDpcdCAgICAgICAgfVxuIDEyNTpcdCAgICB9XG4gMTI2Olx0XG4gMTI3Olx0ICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIGluc3RhbmNlIG9mIGBTZWxmYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYC5cbiAxMjg6XHQgICAgLy8vXG4gMTI5Olx0ICAgIC8vLyBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIFtgU2VsZjo6ZnJvbV9ieXRlc19jb3B5YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcbiAxMzA6XHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xuIDEzMTpcdCAgICAvLy8gb2YgYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cbiAxMzI6XHQgICAgZm4gZnJvbV9ieXRlc19jb3B5X3ByZWZpeChieXRlczogXHUwMDI2W3U4XSkgLVx1MDAzZSBPcHRpb25cdTAwM2MoU2VsZiwgXHUwMDI2W3U4XSlcdTAwM2VcbiAxMzM6XHQgICAgd2hlcmVcbiAxMzQ6XHQgICAgICAgIFNlbGY6IFNpemVkLFxuIDEzNTpcdCAgICB7XG4gMTM2Olx0ICAgICAgICBsZXQgKHByZWZpeCwgcmVtYWluZGVyKSA9IGJ5dGVzLnNwbGl0X2F0X2NoZWNrZWQoc2l6ZV9vZjo6XHUwMDNjU2VsZlx1MDAzZSgpKT87XG4gMTM3Olx0XG4gMTM4Olx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzX2NvcHkocHJlZml4KS5tYXAofHN8IChzLCByZW1haW5kZXIpKVxuIDEzOTpcdCAgICB9XG4gMTQwOlx0fVxuIDE0MTpcdFxuIDE0MjpcdG1hY3JvX3J1bGVzISBpbXBsX2Zyb21ieXRlcyB7XG4gMTQzOlx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XHUwMDNlIHtcbiAxNDQ6XHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXG4gMTQ1Olx0ICAgICAgICAkKHVuc2FmZSBpbXBsJCgkKCRnZW5lcmljcykqKT8gRnJvbUJ5dGVzIGZvciAkdCB7fSkqXG4gMTQ2Olx0ICAgIH07XG4gMTQ3Olx0fVxuIDE0ODpcdFxuIDE0OTpcdGltcGxfZnJvbWJ5dGVzISB7XG4gMTUwOlx0ICAgIC8vIFNBRkVUWTogSW5oYWJpdGVkIFpTVHMgb25seSBoYXZlIG9uZSBwb3NzaWJsZSBiaXQgcGF0dGVybiwgYW5kIHRoZXNlIHR3byBoYXZlIG5vIGludmFyaWFudC5cbiAxNTE6XHQgICAgKCksXG4gMTUyOlx0ICAgIHtcdTAwM2NUXHUwMDNlfSBjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhXHUwMDNjVFx1MDAzZSxcbiAxNTM6XHRcbiAxNTQ6XHQgICAgLy8gU0FGRVRZOiBBbGwgYml0IHBhdHRlcm5zIGFyZSBhY2NlcHRhYmxlIHZhbHVlcyBvZiB0aGUgdHlwZXMgYmVsb3cuXG4gMTU1Olx0ICAgIHU4LCB1MTYsIHUzMiwgdTY0LCB1c2l6ZSxcbiAxNTY6XHQgICAgaTgsIGkxNiwgaTMyLCBpNjQsIGlzaXplLFxuIDE1NzpcdFxuIDE1ODpcdCAgICAvLyBTQUZFVFk6IElmIGFsbCBiaXQgcGF0dGVybnMgYXJlIGFjY2VwdGFibGUgZm9yIGluZGl2aWR1YWwgdmFsdWVzIGluIGFuIGFycmF5LCB0aGVuIGFsbCBiaXRcbiAxNTk6XHQgICAgLy8gcGF0dGVybnMgYXJlIGFsc28gYWNjZXB0YWJsZSBmb3IgYXJyYXlzIG9mIHRoYXQgdHlwZS5cbiAxNjA6XHQgICAge1x1MDAzY1Q6IEZyb21CeXRlc1x1MDAzZX0gW1RdLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlciBpbnRvIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZm9jdXNpbmcgb24gdGhpcyBwYXJ0aWN1bGFyIGFyZWEgb2YgdGhlIGtlcm5lbCwgYW5kIG5vdyBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBjb250ZXh0IEkmIzM5O20gb3BlcmF0aW5nIHdpdGhpbiBkZW1hbmRzIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZywgc28gSSYjMzk7bSBub3QganVzdCBnb2luZyB0byBzdG9wIGhlcmUuIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIHJlZ2FyZGluZyBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIHJldmlldyB0aGUgZW50aXJlIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgbWVtb3J5IHNhZmV0eSwgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLCBhbmQsIG9mIGNvdXJzZSwgYW55IHBvc3NpYmxlIHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gaW1wcm9wZXIgdXNlIG9yIGltcGxlbWVudGF0aW9uIG9mIGB0cmFuc211dGVgLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gY29uc2lkZXIgdGhlIGludGVyYWN0aW9uIHdpdGggb3RoZXIga2VybmVsIG1vZHVsZXMgYW5kIGhvdyB0aGlzIG1lY2hhbmlzbSBmaXRzIHdpdGhpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmFsIGRlc2lnbi4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCBtb3JlIGluc2lnaHRzIGludG8gdGhlIGRlc2lnbiB0cmFkZS1vZmZzIGFuZCBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIGJlIHByZXBhcmVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyB3aGVyZSBmdXJ0aGVyIHNjcnV0aW55IGlzIHdhcnJhbnRlZC4gTGV0JiMzOTtzIHNlZSBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC90cmFuc211dGUucnMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdCAgICB7XHUwMDNjVDogRnJvbUJ5dGVzLCBjb25zdCBOOiB1c2l6ZVx1MDAzZX0gW1Q7IE5dLFxuIDE2MjpcdH1cbiAxNjM6XHRcbiAxNjQ6XHQvLy8gVHlwZXMgdGhhdCBjYW4gYmUgdmlld2VkIGFzIGFuIGltbXV0YWJsZSBzbGljZSBvZiBpbml0aWFsaXplZCBieXRlcy5cbiAxNjU6XHQvLy9cbiAxNjY6XHQvLy8gSWYgYSBzdHJ1Y3QgaW1wbGVtZW50cyB0aGlzIHRyYWl0LCB0aGVuIGl0IGlzIG9rYXkgdG8gY29weSBpdCBieXRlLWZvci1ieXRlIHRvIHVzZXJzcGFjZS4gVGhpc1xuIDE2NzpcdC8vLyBtZWFucyB0aGF0IGl0IHNob3VsZCBub3QgaGF2ZSBhbnkgcGFkZGluZywgYXMgcGFkZGluZyBieXRlcyBhcmUgdW5pbml0aWFsaXplZC4gUmVhZGluZ1xuIDE2ODpcdC8vLyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBub3QganVzdCB1bmRlZmluZWQgYmVoYXZpb3IsIGl0IG1heSBldmVuIGxlYWQgdG8gbGVha2luZyBzZW5zaXRpdmVcbiAxNjk6XHQvLy8gaW5mb3JtYXRpb24gb24gdGhlIHN0YWNrIHRvIHVzZXJzcGFjZS5cbiAxNzA6XHQvLy9cbiAxNzE6XHQvLy8gVGhlIHN0cnVjdCBzaG91bGQgYWxzbyBub3QgaG9sZCBrZXJuZWwgcG9pbnRlcnMsIGFzIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NlcyBhcmUgYWxzbyBjb25zaWRlcmVkXG4gMTcyOlx0Ly8vIHNlbnNpdGl2ZS4gSG93ZXZlciwgbGVha2luZyBrZXJuZWwgcG9pbnRlcnMgaXMgbm90IGNvbnNpZGVyZWQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ5IFJ1c3QsIHNvXG4gMTczOlx0Ly8vIHRoaXMgaXMgYSBjb3JyZWN0bmVzcyByZXF1aXJlbWVudCwgYnV0IG5vdCBhIHNhZmV0eSByZXF1aXJlbWVudC5cbiAxNzQ6XHQvLy9cbiAxNzU6XHQvLy8gIyBTYWZldHlcbiAxNzY6XHQvLy9cbiAxNzc6XHQvLy8gVmFsdWVzIG9mIHRoaXMgdHlwZSBtYXkgbm90IGNvbnRhaW4gYW55IHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoaXMgdHlwZSBtdXN0IG5vdCBoYXZlIGludGVyaW9yXG4gMTc4Olx0Ly8vIG11dGFiaWxpdHkuXG4gMTc5Olx0cHViIHVuc2FmZSB0cmFpdCBBc0J5dGVzIHtcbiAxODA6XHQgICAgLy8vIFJldHVybnMgYHNlbGZgIGFzIGEgc2xpY2Ugb2YgYnl0ZXMuXG4gMTgxOlx0ICAgIGZuIGFzX2J5dGVzKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2W3U4XSB7XG4gMTgyOlx0ICAgICAgICAvLyBDQVNUOiBgU2VsZmAgaW1wbGVtZW50cyBgQXNCeXRlc2AgdGh1cyBhbGwgYnl0ZXMgb2YgYHNlbGZgIGFyZSBpbml0aWFsaXplZC5cbiAxODM6XHQgICAgICAgIGxldCBkYXRhID0gY29yZTo6cHRyOjpmcm9tX3JlZihzZWxmKS5jYXN0OjpcdTAwM2N1OFx1MDAzZSgpO1xuIDE4NDpcdCAgICAgICAgbGV0IGxlbiA9IGNvcmU6Om1lbTo6c2l6ZV9vZl92YWwoc2VsZik7XG4gMTg1Olx0XG4gMTg2Olx0ICAgICAgICAvLyBTQUZFVFk6IGBkYXRhYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHJlYWRzIG9mIGBsZW4gKiBzaXplb2Y6Olx1MDAzY3U4XHUwMDNlKClgIGJ5dGVzLlxuIDE4NzpcdCAgICAgICAgdW5zYWZlIHsgY29yZTo6c2xpY2U6OmZyb21fcmF3X3BhcnRzKGRhdGEsIGxlbikgfVxuIDE4ODpcdCAgICB9XG4gMTg5Olx0XG4gMTkwOlx0ICAgIC8vLyBSZXR1cm5zIGBzZWxmYCBhcyBhIG11dGFibGUgc2xpY2Ugb2YgYnl0ZXMuXG4gMTkxOlx0ICAgIGZuIGFzX2J5dGVzX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBcdTAwMjZtdXQgW3U4XVxuIDE5MjpcdCAgICB3aGVyZVxuIDE5MzpcdCAgICAgICAgU2VsZjogRnJvbUJ5dGVzLFxuIDE5NDpcdCAgICB7XG4gMTk1Olx0ICAgICAgICAvLyBDQVNUOiBgU2VsZmAgaW1wbGVtZW50cyBib3RoIGBBc0J5dGVzYCBhbmQgYEZyb21CeXRlc2AgdGh1cyBtYWtpbmcgYFNlbGZgXG4gMTk2Olx0ICAgICAgICAvLyBiaS1kaXJlY3Rpb25hbGx5IHRyYW5zbXV0YWJsZSB0byBgW3U4OyBzaXplX29mX3ZhbChzZWxmKV1gLlxuIDE5NzpcdCAgICAgICAgbGV0IGRhdGEgPSBjb3JlOjpwdHI6OmZyb21fbXV0KHNlbGYpLmNhc3Q6Olx1MDAzY3U4XHUwMDNlKCk7XG4gMTk4Olx0ICAgICAgICBsZXQgbGVuID0gY29yZTo6bWVtOjpzaXplX29mX3ZhbChzZWxmKTtcbiAxOTk6XHRcbiAyMDA6XHQgICAgICAgIC8vIFNBRkVUWTogYGRhdGFgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgcmVhZCBhbmQgd3JpdGVzIG9mIGBsZW4gKiBzaXplb2Y6Olx1MDAzY3U4XHUwMDNlKClgXG4gMjAxOlx0ICAgICAgICAvLyBieXRlcy5cbiAyMDI6XHQgICAgICAgIHVuc2FmZSB7IGNvcmU6OnNsaWNlOjpmcm9tX3Jhd19wYXJ0c19tdXQoZGF0YSwgbGVuKSB9XG4gMjAzOlx0ICAgIH1cbiAyMDQ6XHR9XG4gMjA1Olx0XG4gMjA2Olx0bWFjcm9fcnVsZXMhIGltcGxfYXNieXRlcyB7XG4gMjA3Olx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XHUwMDNlIHtcbiAyMDg6XHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXG4gMjA5Olx0ICAgICAgICAkKHVuc2FmZSBpbXBsJCgkKCRnZW5lcmljcykqKT8gQXNCeXRlcyBmb3IgJHQge30pKlxuIDIxMDpcdCAgICB9O1xuIDIxMTpcdH1cbiAyMTI6XHRcbiAyMTM6XHRpbXBsX2FzYnl0ZXMhIHtcbiAyMTQ6XHQgICAgLy8gU0FGRVRZOiBJbmhhYml0ZWQgWlNUcyBvbmx5IGhhdmUgb25lIHBvc3NpYmxlIGJpdCBwYXR0ZXJuLCBhbmQgdGhlc2UgdHdvIGhhdmUgbm8gaW52YXJpYW50LlxuIDIxNTpcdCAgICAoKSxcbiAyMTY6XHQgICAge1x1MDAzY1RcdTAwM2V9IGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlLFxuIDIxNzpcdFxuIDIxODpcdCAgICAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucy5cbiAyMTk6XHQgICAgdTgsIHUxNiwgdTMyLCB1NjQsIHVzaXplLFxuIDIyMDpcdCAgICBpOCwgaTE2LCBpMzIsIGk2NCwgaXNpemUsXG4gMjIxOlx0ICAgIGJvb2wsXG4gMjIyOlx0ICAgIGNoYXIsXG4gMjIzOlx0ICAgIHN0cixcbiAyMjQ6XHRcbiAyMjU6XHQgICAgLy8gU0FGRVRZOiBJZiBpbmRpdmlkdWFsIHZhbHVlcyBpbiBhbiBhcnJheSBoYXZlIG5vIHVuaW5pdGlhbGl6ZWQgcG9ydGlvbnMsIHRoZW4gdGhlIGFycmF5XG4gMjI2Olx0ICAgIC8vIGl0c2VsZiBkb2VzIG5vdCBoYXZlIGFueSB1bmluaXRpYWxpemVkIHBvcnRpb25zIGVpdGhlci5cbiAyMjc6XHQgICAge1x1MDAzY1Q6IEFzQnl0ZXNcdTAwM2V9IFtUXSxcbiAyMjg6XHQgICAge1x1MDAzY1Q6IEFzQnl0ZXMsIGNvbnN0IE46IHVzaXplXHUwMDNlfSBbVDsgTl0sXG4gMjI5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQxNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBaZXJvY29weSBNaWdyYXRpb24gaW4gdGhlIEtlcm5lbCBDb2RlKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHdoZXJlIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgYXdheSBmcm9tIGB0cmFuc211dGVgJiMzOTtzIGBBc0J5dGVzYCBhbmQgYEZyb21CeXRlc2AgdHJhaXRzLCBhbmQgaW5zdGVhZCwgaXQmIzM5O3MgbGV2ZXJhZ2luZyBgemVyb2NvcHlgJiMzOTtzIGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB0cmFpdHMuIFRoZSBjb3JlIGlkZWEgaXMgdG8gc2ltcGxpZnkgYW5kIHBvdGVudGlhbGx5IGltcHJvdmUgbWVtb3J5IHNhZmV0eSBhbmQgZWZmaWNpZW5jeSBieSB1c2luZyBgemVyb2NvcHlgIGZvciBzYWZlLCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgYmV0d2VlbiBSdXN0IGRhdGEgc3RydWN0dXJlcyBhbmQgYnl0ZSByZXByZXNlbnRhdGlvbnMsIGEgd2VsbCBlc3RhYmxpc2hlZCBwYXR0ZXJuLgoKU3BlY2lmaWNhbGx5LCBpbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGltcG9ydGluZyBgdHJhbnNtdXRlOjp7QXNCeXRlcywgRnJvbUJ5dGVzfWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSB1bnVzZWQgaW1wb3J0cyBhbmQgdXBkYXRlcyB0byBgSW50b0J5dGVzYCBhbmQgdGhlIGBGcm9tQnl0ZXNgIHRoYXQgaXMgcGFydCBvZiB0aGUgYHByZWx1ZGVgLCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBvcmlnaW5hdGVzIGZyb20gYHplcm9jb3B5YC4KCkEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYgcmV2ZWFscyB0aGUgY2hhbmdlcyBpbiBgcnVzdC9rZXJuZWwvZG1hLnJzYDogIGBDb2hlcmVudEJveGAgYW5kIGBDb2hlcmVudGAgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlZCB0byByZXF1aXJlIGBBc0J5dGVzICYjNDM7IEZyb21CeXRlc2Agbm93IHJlcXVpcmUgYEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNgLCBpbmRpY2F0aW5nIHRoZSBzaGlmdC4gQWRkaXRpb25hbGx5LCB0aGUgYHdyaXRlX2RtYWAgZnVuY3Rpb24gYW5kIGB3cml0ZWAgbWV0aG9kcyBpbiBgVXNlclNsaWNlV3JpdGVyYCBhcmUgYWxzbyB1cGRhdGVkIHRvIHVzZSBgSW50b0J5dGVzYC4gU2ltaWxhcmx5LCB0aGUgYEdlbmxNc2c6OnB1dGAgbWV0aG9kIGluIGBuZXRsaW5rLnJzYCBub3cgdXNlcyBgSW50b0J5dGVzYCBpbnN0ZWFkIG9mIGBBc0J5dGVzYC4KCk15IG5leHQgc3RlcCB3b3VsZCBiZSB0byByZXZpZXcgdGhlIGBnaXQgbG9nYCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCBvZiB0aGUgY2hhbmdlIHRvIHVuZGVyc3RhbmQgdGhlIG1vdGl2YXRpb25zIGFuZCBhbnkgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSYjMzk7ZCBhbHNvIHNlYXJjaCBmb3IgcGxhY2VzIHdoZXJlIGBDb2hlcmVudEJveGAsIGB3cml0ZV9kbWFgLCBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAsIGFuZCBgR2VubE1zZzo6cHV0YCBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgY29kZWJhc2UgaXMgY29uc2lzdGVudCBhbmQgdGhhdCB0aGUgY2hhbmdlIGhhc24mIzM5O3QgaW50cm9kdWNlZCBhbnkgcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcywgZXNwZWNpYWxseSByZWxhdGVkIHRvIERNQSBhbmQgdXNlciBzcGFjZSBtZW1vcnkgYWNjZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDb2hlcmVudEJveCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEyLSAgICAgICAgRG1hQWRkcmVzcywgLy9cbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzPTU5Nj0gICAgZm4gZG1hX2xvYWRcdTAwM2NGOiBGYWxjb25GaXJtd2FyZVx1MDAzY1RhcmdldCA9IEVcdTAwM2UgJiM0MzsgRmFsY29uRG1hTG9hZGFibGVcdTAwM2UoXHUwMDI2c2VsZiwgZnc6IFx1MDAyNkYpIC1cdTAwM2UgUmVzdWx0IHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwMi0gICAgICAgICAgICAvLyBhY2NvcmRpbmdseSBhbmQgZmlsbCB3aXRoIGAwYC5cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnM6NjAzOiAgICAgICAgICAgIGxldCBtdXQgZG1hX29iaiA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwNC0gICAgICAgICAgICAgICAgc2VsZi5kZXYsXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycy02LSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzOjc6ICAgICAgICBDb2hlcmVudEJveCxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtOC0gICAgICAgIERhdGFEaXJlY3Rpb24sXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycz03MD0gICAgcHViKGNyYXRlKSBmbiBuZXdcdTAwM2MmIzM5O2FcdTAwM2UoXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlL2dzcC5ycy0xMjItICAgICAgICAgICAgICAgICAgICAvLyB0YWJsZS5cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6MTIzOiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsZXZlbDAgPSBDb2hlcmVudEJveDo6XHUwMDNjW3U2NF1cdTAwM2U6Onplcm9lZF9zbGljZShcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtMTI0LSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTEyLSAgICAgICAgQ29oZXJlbnRWaWV3LFxuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM9MTY0PSAgICBwdWIoY3JhdGUpIGZuIG5ldyhwZGV2OiBcdTAwMjZwY2k6OkRldmljZVx1MDAzY2RldmljZTo6Qm91bmRcdTAwM2UpIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZiwgRXJyb3JcdTAwM2UgJiM0MzsgJiMzOTtfIHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE3OC0gICAgICAgICAgICAgICAgbGlib3M6IHtcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM6MTc5OiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsaWJvcyA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE4MC0gICAgICAgICAgICAgICAgICAgICAgICBkZXYsXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzLTE2LSAgICAgICAgQ29oZXJlbnQsXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM6MTc6ICAgICAgICBDb2hlcmVudEJveCxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xOC0gICAgICAgIERtYUFkZHJlc3MsIC8vXG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzPTIzNz0gICAgZm4gbmV3KGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NkZXZpY2U6OkJvdW5kXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuLS1cbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0yNDAtXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM6MjQxOiAgICAgICAgbGV0IG11dCBnc3BfbWVtID0gQ29oZXJlbnRCb3g6Olx1MDAzY0dzcE1lbVx1MDAzZTo6emVyb2VkKGRldiwgR0ZQX0tFUk5FTCk/O1xuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC9jbWRxLnJzLTI0Mi0gICAgICAgIGdzcF9tZW0uY3B1cS50eCA9IE1zZ3FUeEhlYWRlcjo6bmV3KE1TR1FfU0laRSwgUlhfSERSX09GRiwgTVNHUV9OVU1fUEFHRVMpO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz0zNTY9ICAgIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXHUwMDNlIFNlbGYge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zNjYtLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6MzY3Oi8vLyBVbmxpa2UgW2BDb2hlcmVudGBdLCBhIFtgQ29oZXJlbnRCb3hgXSBpcyBndWFyYW50ZWVkIHRvIGJlIGZ1bGx5IG93bmVkIGJ5IHRoZSBDUFUgLS0gaXRzIERNQVxucnVzdC9rZXJuZWwvZG1hLnJzLTM2OC0vLy8gYWRkcmVzcyBpcyBub3QgZXhwb3NlZCBhbmQgaXQgY2Fubm90IGJlIGFjY2Vzc2VkIGJ5IGEgZGV2aWNlLiBUaGlzIG1lYW5zIGl0IGNhbiBzYWZlbHkgYmUgdXNlZFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzAtLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6MzcxOi8vLyBBIHR5cGljYWwgdXNlIGlzIHRvIGFsbG9jYXRlIGEgW2BDb2hlcmVudEJveGBdLCBwb3B1bGF0ZSBpdCB3aXRoIG5vcm1hbCBDUFUgYWNjZXNzLCBhbmQgdGhlblxucnVzdC9rZXJuZWwvZG1hLnJzLTM3Mi0vLy8gY29udmVydCBpdCBpbnRvIGEgW2BDb2hlcmVudGBdIG9iamVjdCB0byBzaGFyZSBpdCB3aXRoIHRoZSBkZXZpY2UuXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTM3NS0vLy9cbnJ1c3Qva2VybmVsL2RtYS5yczozNzY6Ly8vIGBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VgOlxucnVzdC9rZXJuZWwvZG1hLnJzLTM3Ny0vLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg0LS8vLyAgICAgQ29oZXJlbnQsXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg1Oi8vLyAgICAgQ29oZXJlbnRCb3gsXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg2LS8vLyB9O1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy0zODgtLy8vICMgZm4gdGVzdChkZXY6IFx1MDAyNkRldmljZVx1MDAzY0JvdW5kXHUwMDNlKSAtXHUwMDNlIFJlc3VsdCB7XG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg5Oi8vLyBsZXQgbXV0IGRtZW06IENvaGVyZW50Qm94XHUwMDNjdTY0XHUwMDNlID0gQ29oZXJlbnRCb3g6Onplcm9lZChkZXYsIEdGUF9LRVJORUwpPztcbnJ1c3Qva2VybmVsL2RtYS5ycy0zOTAtLy8vICpkbWVtID0gNDI7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTM5NC0vLy9cbnJ1c3Qva2VybmVsL2RtYS5yczozOTU6Ly8vIGBDb2hlcmVudEJveFx1MDAzY1tUXVx1MDAzZWA6XG5ydXN0L2tlcm5lbC9kbWEucnMtMzk2LS8vL1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00MDQtLy8vICAgICBDb2hlcmVudCxcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDU6Ly8vICAgICBDb2hlcmVudEJveCxcbnJ1c3Qva2VybmVsL2RtYS5ycy00MDYtLy8vIH07XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQwOC0vLy8gIyBmbiB0ZXN0KGRldjogXHUwMDI2RGV2aWNlXHUwMDNjQm91bmRcdTAwM2UpIC1cdTAwM2UgUmVzdWx0IHtcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDk6Ly8vIGxldCBtdXQgZG1lbTogQ29oZXJlbnRCb3hcdTAwM2NbdTY0XVx1MDAzZSA9IENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2UoZGV2LCA0LCBHRlBfS0VSTkVMKT87XG5ydXN0L2tlcm5lbC9kbWEucnMtNDEwLS8vLyBkbWVtLmZpbGwoNDIpO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy00MTMtLy8vIGBgYFxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNDpwdWIgc3RydWN0IENvaGVyZW50Qm94XHUwMDNjVDogS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xucnVzdC9rZXJuZWwvZG1hLnJzLTQxNS1cbnJ1c3Qva2VybmVsL2RtYS5yczo0MTY6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NbVF1cdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzOjQxNzogICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE4LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2RtYS5ycz00MTk9ICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDI3LVxucnVzdC9rZXJuZWwvZG1hLnJzOjQyODogICAgLy8vIFNhbWUgYXMgW0NvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc10sIGJ1dCB3aXRoIGBkbWE6OkF0dHJzKDApYC5cbnJ1c3Qva2VybmVsL2RtYS5ycy00MjktICAgICNbaW5saW5lXVxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz00NDE9ICAgIHB1YiBmbiBpbml0X2F0XHUwMDNjRVx1MDAzZShcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFx1MDAzY1QsIEVcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQ2My0gICAgLy8vXG5ydXN0L2tlcm5lbC9kbWEucnM6NDY0OiAgICAvLy8gVGhpcyBpcyB0aGUgW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0uXG5ydXN0L2tlcm5lbC9kbWEucnMtNDY1LSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNDczLSAgICAvLy8gICAgIGF0dHJzOjoqLFxucnVzdC9rZXJuZWwvZG1hLnJzOjQ3NDogICAgLy8vICAgICBDb2hlcmVudEJveFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3NS0gICAgLy8vIH07XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3OC0gICAgLy8vIGxldCBkYXRhID0gWzB1OCwgMXU4LCAydTgsIDN1OF07XG5ydXN0L2tlcm5lbC9kbWEucnM6NDc5OiAgICAvLy8gbGV0IGM6IENvaGVyZW50Qm94XHUwMDNjW3U4XVx1MDAzZSA9XG5ydXN0L2tlcm5lbC9kbWEucnM6NDgwOiAgICAvLy8gICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBcdTAwMjZkYXRhLCBHRlBfS0VSTkVMLCBETUFfQVRUUl9OT19XQVJOKT87XG5ydXN0L2tlcm5lbC9kbWEucnMtNDgxLSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NDg1PSAgICBwdWIgZm4gZnJvbV9zbGljZV93aXRoX2F0dHJzKFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01MDYtXG5ydXN0L2tlcm5lbC9kbWEucnM6NTA3OiAgICAvLy8gUGVyZm9ybXMgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBhcyBbYENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnNgXSwgZXhjZXB0IHRoZVxucnVzdC9rZXJuZWwvZG1hLnJzLTUwOC0gICAgLy8vIGBkbWFfYXR0cnNgIGlzIDAgYnkgZGVmYXVsdC5cbi0tXG5ydXN0L2tlcm5lbC9kbWEucnM9NTEwPSAgICBwdWIgZm4gZnJvbV9zbGljZShcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNTIxLVxucnVzdC9rZXJuZWwvZG1hLnJzOjUyMjppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzOjUyMzogICAgLy8vIFNhbWUgYXMgW2BDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXSwgYnV0IGZvciBhIHNpbmdsZSBlbGVtZW50LlxucnVzdC9rZXJuZWwvZG1hLnJzLTUyNC0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM9NTI1PSAgICBwdWIgZm4gemVyb2VkX3dpdGhfYXR0cnMoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTUzMi1cbnJ1c3Qva2VybmVsL2RtYS5yczo1MzM6ICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZWBdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXG5ydXN0L2tlcm5lbC9kbWEucnMtNTM0LSAgICAjW2lubGluZV1cbnJ1c3Qva2VybmVsL2RtYS5ycz01MzU9ICAgIHB1YiBmbiB6ZXJvZWQoZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLCBnZnBfZmxhZ3M6IGtlcm5lbDo6YWxsb2M6OkZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycy01MzktXG5ydXN0L2tlcm5lbC9kbWEucnM6NTQwOmltcGxcdTAwM2NUOiBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIERlcmVmIGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU0MS0gICAgdHlwZSBUYXJnZXQgPSBUO1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtNTUyLVxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXHUwMDNjVDogSW50b0J5dGVzICYjNDM7IEZyb21CeXRlcyAmIzQzOyBLbm93blNpemUgJiM0MzsgP1NpemVkXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU1NC0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTU2My1cbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXMgJiM0MzsgS25vd25TaXplICYjNDM7ID9TaXplZFx1MDAzZSBGcm9tXHUwMDNjQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXG5ydXN0L2tlcm5lbC9kbWEucnM6NTY2OiAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9kbWEucnMtNTY3LSAgICAgICAgdmFsdWUuMFxuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz04ODE9ICAgIHB1YiBmbiBmcm9tX3NsaWNlX3dpdGhfYXR0cnMoXG4tLVxucnVzdC9rZXJuZWwvZG1hLnJzLTg4OS0gICAge1xucnVzdC9rZXJuZWwvZG1hLnJzOjg5MDogICAgICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBkYXRhLCBnZnBfZmxhZ3MsIGRtYV9hdHRycykubWFwKEludG86OmludG8pXG5ydXN0L2tlcm5lbC9kbWEucnMtODkxLSAgICB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDMyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGFyb3VuZCBgQ29oZXJlbnRCb3hgLCBzcGVjaWZpY2FsbHkgd2hlcmUgaXQmIzM5O3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBgbm92YS1jb3JlYCBkcml2ZXIuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBlaXRoZXIgYW4gb3V0LW9mLXRyZWUsIHN0YWdpbmcsIG9yIGV4cGVyaW1lbnRhbCBHUFUgZHJpdmVyLiBTbywgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvZ3B1L25vdmEtY29yZS9gIGRpcmVjdG9yeSBhbmQgbG9vayBmb3IgYW55IGRpcmVjdCB1c2VzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIGRvIGEgYnJvYWRlciBzY2FuIG9mIG90aGVyIGxpa2VseSBsb2NhdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpUaGVuLCB3YWl0IGEgc2Vjb25kLCBJIHNob3VsZCBjaGVjayB0aGUgUnVzdCBrZXJuZWwgY29kZS4gSSYjMzk7bSB0aGlua2luZyBvZiBgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgIGFuZCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AsIGJlY2F1c2UgdGhvc2Ugc2VlbSBsaWtlIGxpa2VseSBzcG90cyB3aGVyZSBzb21ldGhpbmcgbGlrZSBgQ29oZXJlbnRCb3hgIG1pZ2h0IGJlIHV0aWxpemVkLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgb3IgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGhlcmU7IGl0JiMzOTtzIGVhc3kgdG8gZ2V0IHR1bm5lbCB2aXNpb24uCgpGaW5hbGx5LCB3aGlsZSBJJiMzOTttIGluIHNlYXJjaCBtb2RlLCBJJiMzOTtsbCBzd2l0Y2ggZ2VhcnMgdG8gZXhhbWluZSB0aGUgYnJvYWRlciBrZXJuZWwgdG8gc2VlIHdoZXJlIGBVc2VyU2xpY2VXcml0ZXJgIGFuZCBgR2VubE1zZ2AgYXJlIGJlaW5nIHVzZWQuIFRoZXNlIG1pZ2h0IHBvaW50IHRvIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyB0aGF0IEkgbWlnaHQgd2FudCB0byBleGFtaW5lLiBLZWVwaW5nIHRyYWNrIG9mIHRob3NlIHJlZmVyZW5jZXMgaXMga2V5IHRvIHNlZWluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0dlbmxNc2cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzLTctICAgICAgICBGYW1pbHksXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM6ODogICAgICAgIEdlbmxNc2csXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnMtOS0gICAgICAgIE11bHRpY2FzdEdyb3VwLFxuLS1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycz0yOD1wdWIgc3RydWN0IFJlcG9ydCB7XG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM6Mjk6ICAgIHNrYjogR2VubE1zZyxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy0zMC19XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NDk9ICAgIHB1YiBmbiBnZW5sbXNnX3B1dChcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy01NC0gICAgICAgIGNtZDogdTgsXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczo1NTogICAgKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0dlbmxNc2csIEFsbG9jRXJyb3JcdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTYtICAgICAgICBsZXQgc2tiID0gc2VsZi5za2IuYXNfcHRyKCk7XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTktICAgICAgICBsZXQgaGRyID0gTm9uTnVsbDo6bmV3KGhkcikub2tfb3IoQWxsb2NFcnJvcik/O1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NjA6ICAgICAgICBPayhHZW5sTXNnIHsgc2tiOiBzZWxmLCBoZHIgfSlcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTYxLSAgICB9XG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NjU9ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy03NS0vLy8gYGhkcmAgcmVmZXJlbmNlcyB0aGUgaGVhZGVyIGluIHRoaXMgbmV0bGluayBtZXNzYWdlLlxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NzY6cHViIHN0cnVjdCBHZW5sTXNnIHtcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTc3LSAgICBza2I6IE5ldGxpbmtTa0J1ZmYsXG4tLVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODAtXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczo4MTppbXBsIEdlbmxNc2cge1xucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODItICAgIC8vLyBQdXRzIGFuIGF0dHJpYnV0ZSBpbnRvIHRoZSBtZXNzYWdlLlxuLS1cbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzPTExOT0gICAgcHViIGZuIG11bHRpY2FzdChcbi0tXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDAtfVxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6MTQxOmltcGwgRHJvcCBmb3IgR2VubE1zZyB7XG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDItICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NDYxPWRlZiBfZ2VubF9sb2FkX2ZhbWlsaWVzKCk6XG4tLVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTQ4Mi1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weTo0ODM6ICAgICAgICAgICAgICAgIGdtID0gR2VubE1zZyhubF9tc2cpXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNDg0LSAgICAgICAgICAgICAgICBmYW0gPSB7fVxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weT01MDk9ZGVmIF9nZW5sX3BvbGljeV9kdW1wKGZhbWlseV9pZCwgb3ApOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01MzMtXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTM0OiAgICAgICAgICAgICAgICBnbSA9IEdlbmxNc2cobmxfbXNnKVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTUzNS0gICAgICAgICAgICAgICAgZm9yIGF0dHIgaW4gTmxBdHRycyhnbS5yYXcpOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTMtXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTU0OmNsYXNzIEdlbmxNc2c6XG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNTU1LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmxfbXNnKTpcbi0tXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NjA2PWNsYXNzIEdlbmxQcm90b2NvbChOZXRsaW5rUHJvdG9jb2wpOlxuLS1cbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS02MjMtICAgIGRlZiBfZGVjb2RlKHNlbGYsIG5sX21zZyk6XG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NjI0OiAgICAgICAgcmV0dXJuIEdlbmxNc2cobmxfbXNnKVxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTYyNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NDYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzOgoKKipEaWdnaW5nIGludG8gTmV0bGluayBhbmQgVXNlciBNZW1vcnkgQWNjZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgdXNlci1zcGFjZSBtZW1vcnkgYWNjZXNzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgYGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5yc2AgYmVjYXVzZSBJIHJlY2FsbCB0aGF0IHVzaW5nIGBHZW5sTXNnYCBpcyByZWxldmFudCBoZXJlLiBOZXh0LCBJIHdhbnQgdG8gcGl2b3QgdG8gdGhlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIGRhdGEgdHJhbnNmZXJzLiBJJiMzOTtsbCBmb2N1cyBvbiBgdWFjY2Vzcy5yc2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYFVzZXJTbGljZVdyaXRlcjo6d3JpdGVgIGFuZCBgd3JpdGVfZG1hYCBhcmUgYmVpbmcgY2FsbGVkLCBhcyB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBob2xkIHRoZSBjcml0aWNhbCBvcGVyYXRpb25zIGZvciB3cml0aW5nIGludG8gdXNlciBtZW1vcnkgc3BhY2UuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2tzIG9yIGFyZWFzIHdoZXJlIHdlIG1pZ2h0IGJlIHNlZWluZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgb3IgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBuZXR3b3JrIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VzZXJTbGljZVdyaXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMjMtICAgIHR5cGVzOjpGb3JlaWduT3duYWJsZSxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoyNDogICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTI1LX07XG4tLVxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzPTk4PWZuIG5leHRfZGVidWdfaWQoKSAtXHUwMDNlIHVzaXplIHtcbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA0LS8vLyBQcm92aWRlcyBhIHNpbmdsZSBwbGFjZSB0byB3cml0ZSBCaW5kZXIgcmV0dXJuIHZhbHVlcyB2aWEgdGhlXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM6MTA1Oi8vLyBzdXBwbGllZCBgVXNlclNsaWNlV3JpdGVyYC5cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0xMDYtcHViKGNyYXRlKSBzdHJ1Y3QgQmluZGVyUmV0dXJuV3JpdGVyXHUwMDNjJiMzOTthXHUwMDNlIHtcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoxMDc6ICAgIHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTEwOC0gICAgdGhyZWFkOiBcdTAwMjYmIzM5O2EgVGhyZWFkLFxuLS1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycz0xMTE9aW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBCaW5kZXJSZXR1cm5Xcml0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzOjExMjogICAgZm4gbmV3KHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLCB0aHJlYWQ6IFx1MDAyNiYjMzk7YSBUaHJlYWQpIC1cdTAwM2UgU2VsZiB7XG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTEzLSAgICAgICAgQmluZGVyUmV0dXJuV3JpdGVyIHsgd3JpdGVyLCB0aHJlYWQgfVxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTIyLSAgICAgICAgVXNlclNsaWNlUmVhZGVyLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjM6ICAgICAgICBVc2VyU2xpY2VXcml0ZXIsIC8vXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNC0gICAgfSxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz03MD0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy03MS0gICAgICAgIFx1MDAyNnNlbGYsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3MjogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTczLSAgICAgICAgb2Zmc2V0OiBcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxuLS1cbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTc5PSAgICBmbiB3cml0ZV90b19zbGljZShcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgwLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjgxOiAgICAgICAgd3JpdGVyOiBcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtODItICAgICAgICBvZmZzZXQ6IFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXG4tLVxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9OTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtOTEtICAgICAgICBcdTAwMjZzZWxmLFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6OTI6ICAgICAgICB3cml0ZXI6IFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05My0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMDc9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTA4LSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEwOTogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTExMC0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMjI9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTIzLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEyNDogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEyNS0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMzY9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTM3LSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEzODogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEzOS0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xNTE9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTUyLSAgICAgICAgXHUwMDI2c2VsZixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjE1MzogICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE1NC0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC9kbWEucnMtMjctICAgIHN5bmM6OmFyZWY6OkFSZWYsXG5ydXN0L2tlcm5lbC9kbWEucnM6Mjg6ICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cbnJ1c3Qva2VybmVsL2RtYS5ycy0yOS19O1xuLS1cbnJ1c3Qva2VybmVsL2RtYS5ycz05NTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1MS0gICAgICAgIFx1MDAyNnNlbGYsXG5ydXN0L2tlcm5lbC9kbWEucnM6OTUyOiAgICAgICAgd3JpdGVyOiBcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1My0gICAgICAgIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTYwPSAgICBwdWIgZm4gd3JhcHBpbmdfYnl0ZV9hZGQoc2VsZiwgYWRkOiB1c2l6ZSkgLVx1MDAzZSBVc2VyUHRyIHtcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTgwLS8vL1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo4MTovLy8gQ3JlYXRpbmcgYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZC9vciBbYFVzZXJTbGljZVdyaXRlcmBdIGNvbnN1bWVzIHRoZSBgVXNlclNsaWNlYCwgaGVscGluZ1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy04Mi0vLy8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBtdWx0aXBsZSByZWFkZXJzIG9yIHdyaXRlcnMgdG8gdGhlIHNhbWUgbG9jYXRpb24uXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0xNzg9ICAgIHB1YiBmbiByZWFkZXIoc2VsZikgLVx1MDAzZSBVc2VyU2xpY2VSZWFkZXIge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTg0LVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxODU6ICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg2OiAgICBwdWIgZm4gd3JpdGVyKHNlbGYpIC1cdTAwM2UgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg3OiAgICAgICAgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTg4LSAgICAgICAgICAgIHB0cjogc2VsZi5wdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTItXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE5MzogICAgLy8vIENvbnN0cnVjdHMgYm90aCBhIFtgVXNlclNsaWNlUmVhZGVyYF0gYW5kIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk0LSAgICAvLy9cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk1LSAgICAvLy8gVXN1YWxseSB3aGVuIHRoaXMgaXMgdXNlZCwgeW91IHdpbGwgZmlyc3QgcmVhZCB0aGUgZGF0YSwgYW5kIHRoZW4gb3ZlcndyaXRlIGl0IGFmdGVyd2FyZHMuXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE5NjogICAgcHViIGZuIHJlYWRlcl93cml0ZXIoc2VsZikgLVx1MDAzZSAoVXNlclNsaWNlUmVhZGVyLCBVc2VyU2xpY2VXcml0ZXIpIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk3LSAgICAgICAgKFxuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMjAxLSAgICAgICAgICAgIH0sXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjIwMjogICAgICAgICAgICBVc2VyU2xpY2VXcml0ZXIge1xucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0yMDMtICAgICAgICAgICAgICAgIHB0cjogc2VsZi5wdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0zOTE9ICAgIHB1YiBmbiBzdHJjcHlfaW50b19idWZcdTAwM2MmIzM5O2J1Zlx1MDAzZShzZWxmLCBidWY6IFx1MDAyNiYjMzk7YnVmIG11dCBbdThdKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1x1MDAyNiYjMzk7YnVmIENTdHJcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ0LS8vLyBVc2VkIHRvIGluY3JlbWVudGFsbHkgd3JpdGUgaW50byB0aGUgdXNlciBzbGljZS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDQ1OnB1YiBzdHJ1Y3QgVXNlclNsaWNlV3JpdGVyIHtcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ2LSAgICBwdHI6IFVzZXJQdHIsXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00NDktXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjQ1MDppbXBsIFVzZXJTbGljZVdyaXRlciB7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ1MS0gICAgLy8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSByZW1haW5pbmcgaW4gdGhpcyBidWZmZXIuXG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00Njg9ICAgIHVuc2FmZSBmbiB3cml0ZV9yYXcoXHUwMDI2bXV0IHNlbGYsIGZyb206ICpjb25zdCB1OCwgbGVuOiB1c2l6ZSkgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDg2LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo0ODc6ICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00ODgtICAgIC8vLyBpZiBpdCByZXR1cm5zIGFuIGVycm9yLlxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00ODk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZShcdTAwMjZtdXQgc2VsZiwgZGF0YTogXHUwMDI2W3U4XSkgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTA0LSAgICAvLy8gLSBbYEVGQVVMVGBdOiB0aGUgd3JpdGUgaGl0cyBhIGJhZCBhZGRyZXNzIG9yIGdvZXMgb3V0IG9mIGJvdW5kcyBvZiB0aGlzXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUwNTogICAgLy8vICAgW2BVc2VyU2xpY2VXcml0ZXJgXS5cbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTA2LSAgICAvLy9cbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxNi0gICAgLy8vIGBgYG5vX3J1blxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1MTc6ICAgIC8vLyB1c2Uga2VybmVsOjp1YWNjZXNzOjpVc2VyU2xpY2VXcml0ZXI7XG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxOC0gICAgLy8vIHVzZSBrZXJuZWw6OmRtYTo6Q29oZXJlbnQ7XG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjAtICAgIC8vLyBmbiBjb3B5X2RtYV90b191c2VyKFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo1MjE6ICAgIC8vLyAgICAgbXV0IHdyaXRlcjogVXNlclNsaWNlV3JpdGVyLFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjItICAgIC8vLyAgICAgYWxsb2M6IFx1MDAyNkNvaGVyZW50XHUwMDNjW3U4XVx1MDAzZSxcbi0tXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTU3OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0sIG9mZnNldDogXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1c2l6ZVx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01OTgtICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjU5OTogICAgLy8vIGJvdW5kcyBvZiB0aGlzIFtgVXNlclNsaWNlV3JpdGVyYF0uIFRoaXMgY2FsbCBtYXkgbW9kaWZ5IHRoZSBhc3NvY2lhdGVkIHVzZXJzcGFjZSBzbGljZSBldmVuXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMTI3LSAgICAgICAgVXNlclNsaWNlUmVhZGVyLFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MTI4OiAgICAgICAgVXNlclNsaWNlV3JpdGVyLCAvL1xuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMTI5LSAgICB9LFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzPTI1NT0gICAgZm4gc2V0X3ZhbHVlKFx1MDAyNnNlbGYsIG11dCByZWFkZXI6IFVzZXJTbGljZVJlYWRlcikgLVx1MDAzZSBSZXN1bHRcdTAwM2Npc2l6ZVx1MDAzZSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMjY4LVxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MjY5OiAgICBmbiBnZXRfdmFsdWUoXHUwMDI2c2VsZiwgbXV0IHdyaXRlcjogVXNlclNsaWNlV3JpdGVyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY2lzaXplXHUwMDNlIHtcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTI3MC0gICAgICAgIGxldCBndWFyZCA9IHNlbGYuaW5uZXIubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI4NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgbG90IG9mIGNoYW5nZXMgdGhhdCBzZWVtIHJlbGF0ZWQuIEZpcnN0LCBJIHNlZSBtb2RpZmljYXRpb25zIGFjcm9zcyBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCB0aGUgdHJhaXQgYm91bmRzIGludm9sdmluZyBgQXNCeXRlc2AgYXJlIGJlaW5nIHJlcGxhY2VkIHdpdGggYEludG9CeXRlc2AuIEkgc2VlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKCiogICBJbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgaXQgbG9va3MgbGlrZSBpbnN0YW5jZXMgb2YgYFQ6IEFzQnl0ZXNgIGhhdmUgY2hhbmdlZCB0byBgVDogSW50b0J5dGVzYCwgYW5kIHNpbWlsYXIgY2hhbmdlcyBhcmUgYXBwbGllZCB3aGVyZSBgQXNCeXRlc2AgaXMgcHJlc2VudC4KKiAgIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYWxzbyBzaG93cyBhIHNpbWlsYXIgc3dhcCB3aXRoIGBHZW5sTXNnOjpwdXQmbHQ7VCZndDtgLgoqICAgRmluYWxseSwgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgIGhhcyBhbHNvIHJlcGxhY2VkIGBBc0J5dGVzYCB3aXRoIGBJbnRvQnl0ZXNgIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIGZvciBgd3JpdGVfZG1hYCBhbmQgYHdyaXRlYC4KCldhaXQsIHRoaXMgc2VlbXMgZmFtaWxpYXIuLi4gd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBJbnRvQnl0ZXNgIHZlcnN1cyBgQXNCeXRlc2A/IE9oIHJpZ2h0ISBJbiB6ZXJvY29weSAwLjgmIzQzOywgdGhlIGBBc0J5dGVzYCB0cmFpdCB3YXMgcmVuYW1lZCB0byBgSW50b0J5dGVzYC4gQmVmb3JlIHRoaXMgY29tbWl0LCB0aGUga2VybmVsJiMzOTtzIGNvZGUgc2VlbXMgdG8gaGF2ZSBiZWVuIGVpdGhlciB1c2luZyBpdHMgb3duIGB0cmFuc211dGU6OkFzQnl0ZXNgIC8gYHRyYW5zbXV0ZTo6RnJvbUJ5dGVzYCBpbXBsZW1lbnRhdGlvbiBvciwgaXQgbG9va3MgbGlrZSwgd2FzIGFkb3B0aW5nIHRoZSB6ZXJvY29weSBsaWJyYXJ5LiBMZXQgbWUgZG91YmxlLWNoZWNrIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgIGFuZCBjb21wYXJlIGl0IHdpdGggdGhlIHplcm9jb3B5IGNvZGUuIEFoLCB5ZXMsIGJlZm9yZSB0aGlzIGNvbW1pdCwgdGhlc2UgZmlsZXMgd2VyZSBpbXBvcnRpbmcgYHRyYW5zbXV0ZTo6QXNCeXRlc2AsIGJ1dCBub3cgdGhleSBhcmUgaW1wb3J0aW5nIGB6ZXJvY29weTo6SW50b0J5dGVzYCB0aHJvdWdoIHRoZSBwcmVsdWRlLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGp1c3QgcmVwcmVzZW50IGEgcmVuYW1lIG9mIHRoZSB0cmFpdCwgb3IgaXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZD8gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbiBib2RpZXMgdGhlbXNlbHZlczogYHdyaXRlYCwgYHdyaXRlX2RtYWAsIGBwdXRgLCBhbmQgdGhlIGBDb2hlcmVudEJveGAgbWV0aG9kcywgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCBsaW5lcyA1OTUtNjEwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHJlbWFpbnMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTk1Olx0XG4gNTk2Olx0ICAgIC8vLyBXcml0ZXMgdGhlIHByb3ZpZGVkIFJ1c3QgdmFsdWUgdG8gdGhpcyB1c2Vyc3BhY2UgcG9pbnRlci5cbiA1OTc6XHQgICAgLy8vXG4gNTk4Olx0ICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG4gNTk5Olx0ICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxuIDYwMDpcdCAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbiA2MDE6XHQgICAgcHViIGZuIHdyaXRlXHUwMDNjVDogSW50b0J5dGVzXHUwMDNlKFx1MDAyNm11dCBzZWxmLCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHQge1xuIDYwMjpcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiA2MDM6XHQgICAgICAgIGlmIGxlbiBcdTAwM2Ugc2VsZi5sZW5ndGgge1xuIDYwNDpcdCAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcbiA2MDU6XHQgICAgICAgIH1cbiA2MDY6XHQgICAgICAgIC8vIFNBRkVUWTogVGhlIHJlZmVyZW5jZSBwb2ludHMgdG8gYSB2YWx1ZSBvZiB0eXBlIGBUYCwgc28gaXQgaXMgdmFsaWQgZm9yIHJlYWRpbmdcbiA2MDc6XHQgICAgICAgIC8vIGBzaXplX29mOjpcdTAwM2NUXHUwMDNlKClgIGJ5dGVzLlxuIDYwODpcdCAgICAgICAgLy9cbiA2MDk6XHQgICAgICAgIC8vIEJ5IHVzaW5nIHRoZSBfY29weV90b191c2VyIHZhcmlhbnQsIHdlIHNraXAgdGhlIGNoZWNrX29iamVjdF9zaXplIGNoZWNrIHRoYXQgdmVyaWZpZXMgdGhlXG4gNjEwOlx0ICAgICAgICAvLyBrZXJuZWwgcG9pbnRlci4gVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBvbiB0aGUgQyBzaWRlIHRoYXQgc2tpcHMgdGhlIGNoZWNrIHdoZW4gdGhlIGxlbmd0aFxuIDYxMTpcdCAgICAgICAgLy8gaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXG4gNjEyOlx0ICAgICAgICBsZXQgcmVzID0gdW5zYWZlIHtcbiA2MTM6XHQgICAgICAgICAgICBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcihcbiA2MTQ6XHQgICAgICAgICAgICAgICAgc2VsZi5wdHIuYXNfbXV0X3B0cigpLFxuIDYxNTpcdCAgICAgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcdTAwM2NjX3ZvaWRcdTAwM2UoKSxcbiA2MTY6XHQgICAgICAgICAgICAgICAgbGVuLFxuIDYxNzpcdCAgICAgICAgICAgIClcbiA2MTg6XHQgICAgICAgIH07XG4gNjE5Olx0ICAgICAgICBpZiByZXMgIT0gMCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzI0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBSdXN0IEtlcm5lbCBEYXRhIFRyYW5zZmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgLCBzcGVjaWZpY2FsbHkgdGhlIGB3cml0ZWAgZnVuY3Rpb24uIEl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDsgaXQgYWNjZXB0cyBhIHJlZmVyZW5jZSB0byBhIHZhbHVlLCBgdmFsdWU6ICZhbXA7VGAsIGFuZCB0aGVuIGNhbGxzIGBfY29weV90b191c2VyYCB3aXRoIGEgc2l6ZSBkZXRlcm1pbmVkIGJ5IGBzaXplX29mOjombHQ7VCZndDsoKWAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBUOiBJbnRvQnl0ZXNgIHRyYWl0IGJvdW5kLiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgY29tcGlsZS10aW1lIHNhZmV0eSBjaGVjaywgZW5zdXJpbmcgdGhhdCB3aGF0ZXZlciBkYXRhIHR5cGUgYFRgIGlzLCBpdCBjYW4gYmUgc2FmZWx5IHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcy4gSSBhcHByZWNpYXRlIHRoaXMg4oCTIGF2b2lkaW5nIHBhZGRpbmcgaXNzdWVzIGFuZCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtcyBhdCBydW50aW1lIGlzIGNydWNpYWwgZm9yIGtlcm5lbC1sZXZlbCBtZW1vcnkgbWFuaXB1bGF0aW9uLiBJdCBoZWxwcyBlbnN1cmUgdGhhdCBhbnkgdHlwZSB0aGF0IGlzIHNlbnQgaXMgaW4gdGhlIG1vc3QgaWRlYWwgZm9ybWF0LgoKTmV4dCwgSSYjMzk7bGwgc3dpdGNoIGdlYXJzIGFuZCBleGFtaW5lIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AsIGxpbmVzIDgwLTEwMC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgZGF0YSBtb3ZlbWVudCBpbiB0aGUgbmV0d29yayBsYXllci4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIGBJbnRvQnl0ZXNgIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBtb3JlIGNvbXBsZXggY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcbiAgODE6XHRpbXBsIEdlbmxNc2cge1xuICA4MjpcdCAgICAvLy8gUHV0cyBhbiBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cbiAgODM6XHQgICAgI1tpbmxpbmVdXG4gIDg0Olx0ICAgIGZuIHB1dFx1MDAzY1RcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0XG4gIDg1Olx0ICAgIHdoZXJlXG4gIDg2Olx0ICAgICAgICBUOiA/U2l6ZWQgJiM0MzsgSW50b0J5dGVzLFxuICA4NzpcdCAgICB7XG4gIDg4Olx0ICAgICAgICBsZXQgc2tiID0gc2VsZi5za2Iuc2tiLmFzX3B0cigpO1xuICA4OTpcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcbiAgOTA6XHQgICAgICAgIGxldCBwdHIgPSBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcdTAwM2NjX3ZvaWRcdTAwM2UoKTtcbiAgOTE6XHQgICAgICAgIC8vIFNBRkVUWTogYHNrYmAgaXMgdmFsaWQgYnkgYE5ldGxpbmtTa0J1ZmZgIHR5cGUgaW52YXJpYW50cywgYW5kIHRoZSBwcm92aWRlZCB2YWx1ZSBpc1xuICA5MjpcdCAgICAgICAgLy8gcmVhZGFibGUgYW5kIGluaXRpYWxpemVkIGZvciBpdHMgYHNpemVfb2ZgIGJ5dGVzLlxuICA5MzpcdCAgICAgICAgdG9fcmVzdWx0KHVuc2FmZSB7IGJpbmRpbmdzOjpubGFfcHV0KHNrYiwgYXR0cnR5cGUsIGxlbiBhcyBjX2ludCwgcHRyKSB9KVxuICA5NDpcdCAgICB9XG4gIDk1Olx0XG4gIDk2Olx0ICAgIC8vLyBQdXRzIGEgYHUzMmAgYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXG4gIDk3Olx0ICAgICNbaW5saW5lXVxuICA5ODpcdCAgICBwdWIgZm4gcHV0X3UzMihcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogdTMyKSAtXHUwMDNlIFJlc3VsdCB7XG4gIDk5Olx0ICAgICAgICBzZWxmLnB1dChhdHRydHlwZSwgXHUwMDI2dmFsdWUpXG4gMTAwOlx0ICAgIH1cbiAxMDE6XHRcbiAxMDI6XHQgICAgLy8vIFB1dHMgYSBzdHJpbmcgYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXG4gMTAzOlx0ICAgICNbaW5saW5lXVxuIDEwNDpcdCAgICBwdWIgZm4gcHV0X3N0cmluZyhcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHQge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqUmV2aWV3aW5nIERNQSBJbXBsZW1lbnRhdGlvbiBpbiB0aGUgS2VybmVsKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIERNQSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBvZiB0aGUgRE1BIGNvZGUuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBydXN0L2tlcm5lbC9kbWEucnNgLiBJIHdhbnQgdG8gc3BlY2lmaWNhbGx5IGV4YW1pbmUgbGluZXMgNDEwIHRocm91Z2ggNDYwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gbGluZXMgNTIwIHRocm91Z2ggNTcwLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgbG9naWMgaGVyZTsgdGhlc2UgcmFuZ2VzIHVzdWFsbHkgY29udGFpbiB0aGUgbW9zdCBpbXBvcnRhbnQgcGFydHMgZm9yIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgRE1BIHRyYW5zZmVycy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBpbnRlcmFjdGlvbiB3aXRoaW4gdGhhdCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL2RtYS5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDE1Olx0XG4gNDE2Olx0aW1wbFx1MDAzY1Q6IEludG9CeXRlcyAmIzQzOyBGcm9tQnl0ZXNcdTAwM2UgQ29oZXJlbnRCb3hcdTAwM2NbVF1cdTAwM2Uge1xuIDQxNzpcdCAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cbiA0MTg6XHQgICAgI1tpbmxpbmVdXG4gNDE5Olx0ICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcbiA0MjA6XHQgICAgICAgIGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NCb3VuZFx1MDAzZSxcbiA0MjE6XHQgICAgICAgIGNvdW50OiB1c2l6ZSxcbiA0MjI6XHQgICAgICAgIGdmcF9mbGFnczoga2VybmVsOjphbGxvYzo6RmxhZ3MsXG4gNDIzOlx0ICAgICAgICBkbWFfYXR0cnM6IEF0dHJzLFxuIDQyNDpcdCAgICApIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4gNDI1Olx0ICAgICAgICBDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBjb3VudCwgZ2ZwX2ZsYWdzLCBkbWFfYXR0cnMpLm1hcChTZWxmKVxuIDQyNjpcdCAgICB9XG4gNDI3Olx0XG4gNDI4Olx0ICAgIC8vLyBTYW1lIGFzIFtDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNdLCBidXQgd2l0aCBgZG1hOjpBdHRycygwKWAuXG4gNDI5Olx0ICAgICNbaW5saW5lXVxuIDQzMDpcdCAgICBwdWIgZm4gemVyb2VkX3NsaWNlKFxuIDQzMTpcdCAgICAgICAgZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0JvdW5kXHUwMDNlLFxuIDQzMjpcdCAgICAgICAgY291bnQ6IHVzaXplLFxuIDQzMzpcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcbiA0MzQ6XHQgICAgKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuIDQzNTpcdCAgICAgICAgU2VsZjo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBjb3VudCwgZ2ZwX2ZsYWdzLCBBdHRycygwKSlcbiA0MzY6XHQgICAgfVxuIDQzNzpcdFxuIDQzODpcdCAgICAvLy8gSW5pdGlhbGl6ZXMgdGhlIGVsZW1lbnQgYXQgYGlgIHVzaW5nIHRoZSBnaXZlbiBpbml0aWFsaXplci5cbiA0Mzk6XHQgICAgLy8vXG4gNDQwOlx0ICAgIC8vLyBSZXR1cm5zIGBFSU5WQUxgIGlmIGBpYCBpcyBvdXQgb2YgYm91bmRzLlxuIDQ0MTpcdCAgICBwdWIgZm4gaW5pdF9hdFx1MDAzY0VcdTAwM2UoXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcdTAwM2NULCBFXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFxuIDQ0MjpcdCAgICB3aGVyZVxuIDQ0MzpcdCAgICAgICAgRXJyb3I6IEZyb21cdTAwM2NFXHUwMDNlLFxuIDQ0NDpcdCAgICB7XG4gNDQ1Olx0ICAgICAgICBpZiBpIFx1MDAzZT0gc2VsZi4wLmxlbigpIHtcbiA0NDY6XHQgICAgICAgICAgICByZXR1cm4gRXJyKEVJTlZBTCk7XG4gNDQ3Olx0ICAgICAgICB9XG4gNDQ4Olx0XG4gNDQ5Olx0ICAgICAgICBsZXQgcHRyID0gXHUwMDI2cmF3IG11dCBzZWxmW2ldO1xuIDQ1MDpcdFxuIDQ1MTpcdCAgICAgICAgLy8gU0FGRVRZOlxuIDQ1MjpcdCAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXG4gNDUzOlx0ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgJiM0MzsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxuIDQ1NDpcdCAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cbiA0NTU6XHQgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxuIDQ1NjpcdCAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuIDQ1NzpcdFxuIDQ1ODpcdCAgICAgICAgT2soKCkpXG4gNDU5Olx0ICAgIH1cbiA0NjA6XHRcbiA0NjE6XHQgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBjb2hlcmVudCBtZW1vcnkgb2YgdGhlIHNhbWUgc2l6ZSBhcyBgZGF0YWAgYW5kIGluaXRpYWxpemVzIGl0IHdpdGggYVxuIDQ2MjpcdCAgICAvLy8gY29weSBvZiBpdHMgY29udGVudHMuXG4gNDYzOlx0ICAgIC8vL1xuIDQ2NDpcdCAgICAvLy8gVGhpcyBpcyB0aGUgW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjExCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMTMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgVHJhaXQgQm91bmQgQ2hhbmdlOiBObyBGdXp6aW5nIE5lZWRlZCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB1cGRhdGluZyB0cmFpdCBib3VuZHMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgYWNyb3NzIHNvbWUgUnVzdCBrZXJuZWwgaGVscGVyIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCkZpcnN0LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgc2NvcGUuIEkga25vdyB0aGF0IGBBc0J5dGVzYCBhbmQgYEludG9CeXRlc2AgYXJlIG1hcmtlciB0cmFpdHMgaW4gUnVzdCwgc3BlY2lmaWNhbGx5IHVuc2FmZSBtYXJrZXIgdHJhaXRzIGZyb20gdGhlIGB6ZXJvY29weWAgY3JhdGUuIFRoZXNlIHRyYWl0cyBpbmRpY2F0ZSBhIHR5cGUgaXMgc3VpdGFibGUgZm9yIGRpcmVjdCBtZW1vcnkgaW50ZXJwcmV0YXRpb24sIG1lYW5pbmcgaXQgY29udGFpbnMgbm8gcGFkZGluZyBhbmQgY2FuIGJlIHRyZWF0ZWQgYXMgYSBgJmFtcDtbdThdYC4gVGhlIGZhY3QgdGhhdCB0aGVzZSBhcmUgbWFya2VyIHRyYWl0cyB0aGF0IGFyZSB6ZXJvLXNpemVkLCBhbmQgdGhhdCB0aGUgY2hhbmdlIGlzIG9uIGdlbmVyaWMgZnVuY3Rpb25zL21ldGhvZHMgKHdoZXJlIFQ6IEludG9CeXRlcykgdGVsbHMgbWUgdGhpcyBpcyBhIGNvbXBpbGUtdGltZSBjb25zdHJhaW50LCBub3Qgc29tZXRoaW5nIHRoYXQgZ2VuZXJhdGVzIGFueSBhY3R1YWwgbWFjaGluZSBjb2RlLiBTbywgdGhlIHRyYWl0IGJvdW5kIGNoYW5nZSBzaG91bGRuJiMzOTt0IGJlIGFsdGVyaW5nIGFueSBydW50aW1lIGxvZ2ljLCB3aGljaCBpcyB0aGUga2V5IHRoaW5nLgoKTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcnVudGltZSBpbXBsaWNhdGlvbnMuIEFyZSB3ZSBjaGFuZ2luZyB3aGF0IHR5cGVzIGNhbiBiZSBwYXNzZWQ/IElzIGFueSBpbXBsZW1lbnRhdGlvbiBsb2dpYyBhbHRlcmVkPyBJdCBsb29rcyBsaWtlIGBBc0J5dGVzYCB3YXMgdGhlIG9sZCBuYW1lIGZvciBgSW50b0J5dGVzYCDigJMgb3IgcmF0aGVyLCB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoZSB0cmFuc211dGUgdHJhaXQuIFRoZSBtZXRob2Qgc2lnbmF0dXJlcyB1c2UgdGhlIGAmYW1wO1RgLCBjYWxjdWxhdGUgdGhlIGBzaXplX29mOjombHQ7VCZndDsoKWAsIGFuZCBjYWxsIGBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcmAuIFRoZSB1c2Ugb2YgYFQ6IEludG9CeXRlc2AgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kLiBUaGVyZSYjMzk7cyBubyBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdHJhaXQuCgpJJiMzOTtsbCByZXZpZXcgdGhlIGluc3RydWN0aW9ucyByZWxhdGVkIHRvIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4gU2VjdGlvbiAyIGNsZWFybHkgc3RhdGVzIHRoYXQgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzJiMzNDsgZG9uJiMzOTt0IHdhcnJhbnQgZnV6emluZywgd2hpY2ggaW5jbHVkZXMgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIGV0Yy4gU28gaWYgdGhpcyBpcyBhIHB1cmVseSBjb21waWxlLXRpbWUgY2hhbmdlLCBpdCYjMzk7cyBub24tZXhlY3V0YWJsZS4KClRpbWUgdG8gY29uZmlybSB0aGlzIHBhdGNoIGlzIG5vbi1leGVjdXRhYmxlLiBJJiMzOTtsbCBtZXRpY3Vsb3VzbHkgZ28gdGhyb3VnaCB0aGUgZGlmZiwgbGluZSBieSBsaW5lLgoKQWxyaWdodCwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nOgoKKiAgICoqYHJ1c3Qva2VybmVsL2RtYS5yc2AqKjogSSYjMzk7bSBub3RpbmcgdGhlIHJlbW92YWwgb2YgdW51c2VkIGltcG9ydHMgKGB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9YCkuIFRoZW4sIGl0JiMzOTtzIGFsbCB0cmFpdCBib3VuZCB1cGRhdGVzIGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGFuZCBhc3NvY2lhdGVkIGNvbW1lbnQgYWRqdXN0bWVudHMgaW4gYGltcGxgIGJsb2Nrcy4KKiAgICoqYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCoqOiBTaW1pbGFyIHBhdHRlcm46IGFuIHVudXNlZCBpbXBvcnQgaXMgcmVtb3ZlZCwgYW5kIHRoZW4gdGhlIHRyYWl0IGJvdW5kIG9uIGEgZnVuY3Rpb24gaXMgdXBkYXRlZCBmcm9tIGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYC4KKiAgICoqYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgKio6IEFnYWluLCB1bnVzZWQgaW1wb3J0cyBhcmUgcmVtb3ZlZCwgZm9sbG93ZWQgYnkgbW9yZSB0cmFpdCBib3VuZCByZXBsYWNlbWVudHMgYW5kIGNvbW1lbnQgZWRpdHMuCgpJJiMzOTttIG5vdCBzZWVpbmcgYW55IGNoYW5nZXMgdG8gZXhlY3V0YWJsZSBjb2RlLCBydW50aW1lIGNoZWNrcywgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBFdmVyeXRoaW5nIGlzIGVpdGhlciBhbiBpbXBvcnQgY2xlYW51cCwgdHJhaXQgYm91bmQgdXBkYXRlLCBvciBhIGNvbW1lbnQgYWRqdXN0bWVudC4gVGhlIHRyYWl0IGJvdW5kIHVwZGF0ZXMgYXJlICpwdXJlbHkqIGNvbXBpbGUtdGltZSBtYXJrZXIgdHJhaXRzLCBtZWFuaW5nIHRoZSBjaGFuZ2UgaXMgZW50aXJlbHkgbm9uLWV4ZWN1dGFibGUuCgpUaGUgaW5zdHJ1Y3Rpb25zIGxvb2sgZ29vZDoKCiogICBgV29ydGhGdXp6aW5nYDogZmFsc2UKKiAgIGBFbmFibGVDb25maWdzYDogbnVsbAoqICAgYEZvY3VzU3ltYm9sc2A6IG51bGwKKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSByZW5hbWVzIGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYCBmcm9tIHplcm9jb3B5KSBhbmQgdXBkYXRlcyBjb21tZW50cyBhbmQgaW1wb3J0cywgd2l0aCBubyBjaGFuZ2VzIHRvIGV4ZWN1dGFibGUgbG9naWMsIHJ1bnRpbWUgYXNzZXJ0aW9ucywgb3IgY29udHJvbCBmbG93LgoKT2theSwgSSYjMzk7bSBjb25maWRlbnQuIFRoaXMgY2hhbmdlIGlzIG5vbi1leGVjdXRhYmxlIGFuZCBoYXMgbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGNvZGUuIEZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MTkuOTc1NzM5MTc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyMjUxOTU2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgUnVzdCBjb21waWxlLXRpbWUgdHJhaXQgYm91bmRzIChzd2l0Y2hpbmcgZnJvbSBBc0J5dGVzIHRvIEludG9CeXRlcyBmcm9tIHplcm9jb3B5KSwgcmVtb3ZlcyB1bnVzZWQgaW1wb3J0cywgYW5kIHVwZGF0ZXMgZG9jL3NhZmV0eSBjb21tZW50cyBhY3Jvc3Mga2VybmVsIERNQSwgbmV0bGluaywgYW5kIHVhY2Nlc3MgaGVscGVycy4gTm8gcnVudGltZSBleGVjdXRhYmxlIGxvZ2ljLCBjb250cm9sIGZsb3csIHN0cnVjdCBsYXlvdXRzLCBvciBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjE5Ljk3NTc0NjQzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MDUxMDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMTozNToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kbWEucnMgYi9ydXN0L2tlcm5lbC9kbWEucnNcXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2RtYS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RtYS5yc1xcbkBAIC0yNSwxMCArMjUsNiBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHB0cjo6S25vd25TaXplLFxcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcXG4tICAgIHRyYW5zbXV0ZTo6e1xcbi0gICAgICAgIEFzQnl0ZXMsXFxuLSAgICAgICAgRnJvbUJ5dGVzLCAvL1xcbi0gICAgfSxcXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cXG4gfTtcXG4gdXNlIGNvcmU6OntcXG5AQCAtNDE3LDcgKzQxMyw3IEBAIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXFx1MDAzZSBTZWxmIHtcXG4gLy8vIGBgYFxcbiBwdWIgc3RydWN0IENvaGVyZW50Qm94XFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UoQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2UpO1xcbiBcXG4taW1wbFxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXFx1MDAzZSBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1tUXVxcdTAwM2Uge1xcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuICAgICAjW2lubGluZV1cXG4gICAgIHB1YiBmbiB6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhcXG5AQCAtNDU0LDcgKzQ1MCw3IEBAIHB1YiBmbiBpbml0X2F0XFx1MDAzY0VcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFxcdTAwM2NULCBFXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cXG4tICAgICAgICAvLyAtIGBUOiBBc0J5dGVzICsgRnJvbUJ5dGVzYCBndWFyYW50ZWVzIGFsbCBiaXQgcGF0dGVybnMgYXJlIHZhbGlkLCBzbyBwYXJ0aWFsIHdyaXRlcyBvblxcbisgICAgICAgIC8vIC0gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cXG4gICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLlxcbiAgICAgICAgIC8vIC0gVGhlIERNQSBhZGRyZXNzIGhhcyBub3QgYmVlbiBleHBvc2VkIHlldCwgc28gdGhlcmUgaXMgbm8gY29uY3VycmVudCBkZXZpY2UgYWNjZXNzLlxcbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG5AQCAtNTIzLDcgKzUxOSw3IEBAIHB1YiBmbiBmcm9tX3NsaWNlKFxcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cXG4gICAgICNbaW5saW5lXVxcbiAgICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKFxcbkBAIC01NTQsNyArNTUwLDcgQEAgZm4gZGVyZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZTZWxmOjpUYXJnZXQge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuICAgICAgICAgLy8gU0FGRVRZOlxcbkBAIC01NjUsNyArNTYxLDcgQEAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBGcm9tXFx1MDAzY0NvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlXFx1MDAzZSBmb3IgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAgICAgdmFsdWUuMFxcbkBAIC02NjMsNyArNjU5LDcgQEAgcHViIHVuc2FmZSBmbiBhc19tdXQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZtdXQgVCB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQXNCeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgLy8vIEFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBgVGAgb2YgY29oZXJlbnQgbWVtb3J5LlxcbiAgICAgZm4gYWxsb2Nfd2l0aF9hdHRycyhcXG4gICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuQEAgLTc1Myw3ICs3NDksNyBAQCBwdWIgZm4gaW5pdF93aXRoX2F0dHJzXFx1MDAzY0VcXHUwMDNlKFxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgcG9pbnRzIHRvIGV4Y2x1c2l2ZWx5IG93bmVkIG1lbW9yeS5cXG4gICAgICAgICAvLyAtIElmIGByYXdfdHJ5X2luaXRgIGZhaWxzLCBgc2VsZmAgaXMgZHJvcHBlZCwgd2hpY2ggc2FmZWx5IGZyZWVzIHRoZSB1bmRlcmx5aW5nXFxuLSAgICAgICAgLy8gICBgQ29oZXJlbnRgJ3MgRE1BIG1lbW9yeS4gYFQ6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXFxuKyAgICAgICAgLy8gICBgQ29oZXJlbnRgJ3MgRE1BIG1lbW9yeS4gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZW5zdXJlcyB0aGVyZSBhcmUgbm8gY29tcGxleCBgRHJvcGBcXG4gICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxcbiAgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG4gXFxuQEAgLTk0OCw5ICs5NDQsOSBAQCB1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBTZW5kICsgP1NpemVkXFx1MDAzZSBTZW5kIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbiAvLyBtZXRob2RzIHRoYXQgYWNjZXNzIHRoZSBidWZmZXIgY29udGVudHMgKGBmaWVsZF9yZWFkYCwgYGZpZWxkX3dyaXRlYCwgYGFzX3NsaWNlYCxcXG4gLy8gYGFzX3NsaWNlX211dGApIGFyZSBgdW5zYWZlYCwgYW5kIGNhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBubyBkYXRhIHJhY2VzIG9jY3VyLlxcbiAvLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZCArIEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyA/U2l6ZWQgKyBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4taW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBBc0J5dGVzICsgP1NpemVkXFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBJbnRvQnl0ZXMgKyA/U2l6ZWRcXHUwMDNlIGRlYnVnZnM6OkJpbmFyeVdyaXRlciBmb3IgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxuICAgICAgICAgXFx1MDAyNnNlbGYsXFxuICAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMgYi9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1xcbmluZGV4IDIyZWYzZGRlMzZmYTEuLmMzYjUwZGQ1MGE0Y2UgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1xcbkBAIC0xMiw3ICsxMiw2IEBAXFxuICAgICBhbGxvYzo6e3NlbGYsIEFsbG9jRXJyb3J9LFxcbiAgICAgZXJyb3I6OnRvX3Jlc3VsdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICB0cmFuc211dGU6OkFzQnl0ZXMsXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSxcXG4gfTtcXG5AQCAtODQsNyArODMsNyBAQCBpbXBsIEdlbmxNc2cge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBwdXRcXHUwMDNjVFxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0XFxuICAgICB3aGVyZVxcbi0gICAgICAgIFQ6ID9TaXplZCArIEFzQnl0ZXMsXFxuKyAgICAgICAgVDogP1NpemVkICsgSW50b0J5dGVzLFxcbiAgICAge1xcbiAgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7XFxuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2ZfdmFsKHZhbHVlKTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcXG5pbmRleCA1ZjZjNGQ3YTFhNTE2Li5kOTNjMWEyMWYzMjRmIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcXG4rKysgYi9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXFxuQEAgLTEzLDcgKzEzLDYgQEBcXG4gICAgIGZzOjpmaWxlLFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHB0cjo6S25vd25TaXplLFxcbi0gICAgdHJhbnNtdXRlOjp7QXNCeXRlcywgRnJvbUJ5dGVzfSxcXG4gfTtcXG4gdXNlIGNvcmU6Om1lbTo6e3NpemVfb2YsIE1heWJlVW5pbml0fTtcXG4gXFxuQEAgLTUyNSw3ICs1MjQsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2UoXFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcXHUwMDI2W3U4XSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gICAgIC8vLyAgICAgd3JpdGVyLndyaXRlX2RtYShhbGxvYywgMCwgMjU2KVxcbiAgICAgLy8vIH1cXG4gICAgIC8vLyBgYGBcXG4tICAgIHB1YiBmbiB3cml0ZV9kbWFcXHUwMDNjVDogS25vd25TaXplICsgQXNCeXRlcyArID9TaXplZFxcdTAwM2UoXFxuKyAgICBwdWIgZm4gd3JpdGVfZG1hXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UoXFxuICAgICAgICAgXFx1MDAyNm11dCBzZWxmLFxcbiAgICAgICAgIGFsbG9jOiBcXHUwMDI2Q29oZXJlbnRcXHUwMDNjVFxcdTAwM2UsXFxuICAgICAgICAgb2Zmc2V0OiB1c2l6ZSxcXG5AQCAtNTk5LDcgKzU5OCw3IEBAIHB1YiBmbiB3cml0ZV9zbGljZV9maWxlKFxcdTAwMjZtdXQgc2VsZiwgZGF0YTogXFx1MDAyNlt1OF0sIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQpIC1cXHUwMDNlIFJlXFxuICAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbiAgICAgLy8vIGJvdW5kcyBvZiB0aGlzIFtgVXNlclNsaWNlV3JpdGVyYF0uIFRoaXMgY2FsbCBtYXkgbW9kaWZ5IHRoZSBhc3NvY2lhdGVkIHVzZXJzcGFjZSBzbGljZSBldmVuXFxuICAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cXG4tICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBBc0J5dGVzXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0IHtcXG4rICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFxcdTAwMjZUKSAtXFx1MDAzZSBSZXN1bHQge1xcbiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4gICAgICAgICBpZiBsZW4gXFx1MDAzZSBzZWxmLmxlbmd0aCB7XFxuICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MjEuNTU3MjM1MzU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTY0MzY3ODk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM2NmExODVlMzI5NTE2Nzc0ZmE5NzZlNGU3NWI3NDc5ODMwYmI3MThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIxOjM1OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZG1hLnJzIGIvcnVzdC9rZXJuZWwvZG1hLnJzXG5pbmRleCAyY2UwOWY4ZTkwYzY5Li45YmQ0N2YyMGM3ODQyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZG1hLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9kbWEucnNcbkBAIC0yNSwxMCArMjUsNiBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBwdHI6Oktub3duU2l6ZSxcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcbi0gICAgdHJhbnNtdXRlOjp7XG4tICAgICAgICBBc0J5dGVzLFxuLSAgICAgICAgRnJvbUJ5dGVzLCAvL1xuLSAgICB9LFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VXcml0ZXIsIC8vXG4gfTtcbiB1c2UgY29yZTo6e1xuQEAgLTQxNyw3ICs0MTMsNyBAQCBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVx1MDAzZSBTZWxmIHtcbiAvLy8gYGBgXG4gcHViIHN0cnVjdCBDb2hlcmVudEJveFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZFx1MDAzZShDb2hlcmVudFx1MDAzY1RcdTAwM2UpO1xuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjW1RdXHUwMDNlIHtcbiAgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXG5AQCAtNDU0LDcgKzQ1MCw3IEBAIHB1YiBmbiBpbml0X2F0XHUwMDNjRVx1MDAzZShcdTAwMjZtdXQgc2VsZiwgaTogdXNpemUsIGluaXQ6IGltcGwgSW5pdFx1MDAzY1QsIEVcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XG4gXG4gICAgICAgICAvLyBTQUZFVFk6XG4gICAgICAgICAvLyAtIGBwdHJgIGlzIHZhbGlkLCBwcm9wZXJseSBhbGlnbmVkLCBhbmQgd2l0aGluIHRoaXMgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gYFQ6IEFzQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXG4rICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXG4gICAgICAgICAvLyAgIGVycm9yIGNhbm5vdCBsZWF2ZSB0aGUgZWxlbWVudCBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuICAgICAgICAgLy8gLSBUaGUgRE1BIGFkZHJlc3MgaGFzIG5vdCBiZWVuIGV4cG9zZWQgeWV0LCBzbyB0aGVyZSBpcyBubyBjb25jdXJyZW50IGRldmljZSBhY2Nlc3MuXG4gICAgICAgICB1bnNhZmUgeyBwaW5faW5pdDo6cmF3X3RyeV9pbml0KHB0ciwgaW5pdCk/IH07XG5AQCAtNTIzLDcgKzUxOSw3IEBAIHB1YiBmbiBmcm9tX3NsaWNlKFxuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50Qm94XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXG4gICAgICNbaW5saW5lXVxuICAgICBwdWIgZm4gemVyb2VkX3dpdGhfYXR0cnMoXG5AQCAtNTU0LDcgKzU1MCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQXNCeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFx1MDAzZSBEZXJlZk11dCBmb3IgQ29oZXJlbnRCb3hcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXHUwMDNlIERlcmVmTXV0IGZvciBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuICAgICAgICAgLy8gU0FGRVRZOlxuQEAgLTU2NSw3ICs1NjEsNyBAQCBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcdTAwM2UgRnJvbVx1MDAzY0NvaGVyZW50Qm94XHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgS25vd25TaXplICsgP1NpemVkXHUwMDNlIEZyb21cdTAwM2NDb2hlcmVudEJveFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBmcm9tKHZhbHVlOiBDb2hlcmVudEJveFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICB2YWx1ZS4wXG5AQCAtNjYzLDcgKzY1OSw3IEBAIHB1YiB1bnNhZmUgZm4gYXNfbXV0KFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFQge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBc0J5dGVzICsgRnJvbUJ5dGVzXHUwMDNlIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1x1MDAzZSBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGBUYCBvZiBjb2hlcmVudCBtZW1vcnkuXG4gICAgIGZuIGFsbG9jX3dpdGhfYXR0cnMoXG4gICAgICAgICBkZXY6IFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQm91bmRcdTAwM2UsXG5AQCAtNzUzLDcgKzc0OSw3IEBAIHB1YiBmbiBpbml0X3dpdGhfYXR0cnNcdTAwM2NFXHUwMDNlKFxuICAgICAgICAgLy8gU0FGRVRZOlxuICAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHBvaW50cyB0byBleGNsdXNpdmVseSBvd25lZCBtZW1vcnkuXG4gICAgICAgICAvLyAtIElmIGByYXdfdHJ5X2luaXRgIGZhaWxzLCBgc2VsZmAgaXMgZHJvcHBlZCwgd2hpY2ggc2FmZWx5IGZyZWVzIHRoZSB1bmRlcmx5aW5nXG4tICAgICAgICAvLyAgIGBDb2hlcmVudGAncyBETUEgbWVtb3J5LiBgVDogQXNCeXRlcyArIEZyb21CeXRlc2AgZW5zdXJlcyB0aGVyZSBhcmUgbm8gY29tcGxleCBgRHJvcGBcbisgICAgICAgIC8vICAgYENvaGVyZW50YCdzIERNQSBtZW1vcnkuIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGVuc3VyZXMgdGhlcmUgYXJlIG5vIGNvbXBsZXggYERyb3BgXG4gICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxuICAgICAgICAgdW5zYWZlIHsgcGluX2luaXQ6OnJhd190cnlfaW5pdChwdHIsIGluaXQpPyB9O1xuIFxuQEAgLTk0OCw5ICs5NDQsOSBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArIFNlbmQgKyA/U2l6ZWRcdTAwM2UgU2VuZCBmb3IgQ29oZXJlbnRcdTAwM2NUXHUwMDNlIHt9XG4gLy8gbWV0aG9kcyB0aGF0IGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnRzIChgZmllbGRfcmVhZGAsIGBmaWVsZF93cml0ZWAsIGBhc19zbGljZWAsXG4gLy8gYGFzX3NsaWNlX211dGApIGFyZSBgdW5zYWZlYCwgYW5kIGNhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBubyBkYXRhIHJhY2VzIG9jY3VyLlxuIC8vIFRoZSBzYWZlIG1ldGhvZHMgb25seSByZXR1cm4gbWV0YWRhdGEgb3IgcmF3IHBvaW50ZXJzIHdob3NlIHVzZSByZXF1aXJlcyBgdW5zYWZlYC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArID9TaXplZCArIEFzQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXHUwMDNlIFN5bmMgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkICsgSW50b0J5dGVzICsgRnJvbUJ5dGVzICsgU3luY1x1MDAzZSBTeW5jIGZvciBDb2hlcmVudFx1MDAzY1RcdTAwM2Uge31cbiBcbi1pbXBsXHUwMDNjVDogS25vd25TaXplICsgQXNCeXRlcyArID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFx1MDAzZSBkZWJ1Z2ZzOjpCaW5hcnlXcml0ZXIgZm9yIENvaGVyZW50XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxuICAgICAgICAgXHUwMDI2c2VsZixcbiAgICAgICAgIHdyaXRlcjogXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5pbmRleCAyMmVmM2RkZTM2ZmExLi5jM2I1MGRkNTBhNGNlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNcbisrKyBiL3J1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzXG5AQCAtMTIsNyArMTIsNiBAQFxuICAgICBhbGxvYzo6e3NlbGYsIEFsbG9jRXJyb3J9LFxuICAgICBlcnJvcjo6dG9fcmVzdWx0LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICB0cmFuc211dGU6OkFzQnl0ZXMsXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsXG4gfTtcbkBAIC04NCw3ICs4Myw3IEBAIGltcGwgR2VubE1zZyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBwdXRcdTAwM2NUXHUwMDNlKFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcdTAwMjZUKSAtXHUwMDNlIFJlc3VsdFxuICAgICB3aGVyZVxuLSAgICAgICAgVDogP1NpemVkICsgQXNCeXRlcyxcbisgICAgICAgIFQ6ID9TaXplZCArIEludG9CeXRlcyxcbiAgICAge1xuICAgICAgICAgbGV0IHNrYiA9IHNlbGYuc2tiLnNrYi5hc19wdHIoKTtcbiAgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdWFjY2Vzcy5ycyBiL3J1c3Qva2VybmVsL3VhY2Nlc3MucnNcbmluZGV4IDVmNmM0ZDdhMWE1MTYuLmQ5M2MxYTIxZjMyNGYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXG4rKysgYi9ydXN0L2tlcm5lbC91YWNjZXNzLnJzXG5AQCAtMTMsNyArMTMsNiBAQFxuICAgICBmczo6ZmlsZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgcHRyOjpLbm93blNpemUsXG4tICAgIHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc30sXG4gfTtcbiB1c2UgY29yZTo6bWVtOjp7c2l6ZV9vZiwgTWF5YmVVbmluaXR9O1xuIFxuQEAgLTUyNSw3ICs1MjQsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2UoXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbiAgICAgLy8vICAgICB3cml0ZXIud3JpdGVfZG1hKGFsbG9jLCAwLCAyNTYpXG4gICAgIC8vLyB9XG4gICAgIC8vLyBgYGBcbi0gICAgcHViIGZuIHdyaXRlX2RtYVx1MDAzY1Q6IEtub3duU2l6ZSArIEFzQnl0ZXMgKyA/U2l6ZWRcdTAwM2UoXG4rICAgIHB1YiBmbiB3cml0ZV9kbWFcdTAwM2NUOiBLbm93blNpemUgKyBJbnRvQnl0ZXMgKyA/U2l6ZWRcdTAwM2UoXG4gICAgICAgICBcdTAwMjZtdXQgc2VsZixcbiAgICAgICAgIGFsbG9jOiBcdTAwMjZDb2hlcmVudFx1MDAzY1RcdTAwM2UsXG4gICAgICAgICBvZmZzZXQ6IHVzaXplLFxuQEAgLTU5OSw3ICs1OTgsNyBAQCBwdWIgZm4gd3JpdGVfc2xpY2VfZmlsZShcdTAwMjZtdXQgc2VsZiwgZGF0YTogXHUwMDI2W3U4XSwgb2Zmc2V0OiBcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0KSAtXHUwMDNlIFJlXG4gICAgIC8vLyBGYWlscyB3aXRoIFtgRUZBVUxUYF0gaWYgdGhlIHdyaXRlIGhhcHBlbnMgb24gYSBiYWQgYWRkcmVzcywgb3IgaWYgdGhlIHdyaXRlIGdvZXMgb3V0IG9mXG4gICAgIC8vLyBib3VuZHMgb2YgdGhpcyBbYFVzZXJTbGljZVdyaXRlcmBdLiBUaGlzIGNhbGwgbWF5IG1vZGlmeSB0aGUgYXNzb2NpYXRlZCB1c2Vyc3BhY2Ugc2xpY2UgZXZlblxuICAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cbi0gICAgcHViIGZuIHdyaXRlXHUwMDNjVDogQXNCeXRlc1x1MDAzZShcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFx1MDAyNlQpIC1cdTAwM2UgUmVzdWx0IHtcbisgICAgcHViIGZuIHdyaXRlXHUwMDNjVDogSW50b0J5dGVzXHUwMDNlKFx1MDAyNm11dCBzZWxmLCB2YWx1ZTogXHUwMDI2VCkgLVx1MDAzZSBSZXN1bHQge1xuICAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiAgICAgICAgIGlmIGxlbiBcdTAwM2Ugc2VsZi5sZW5ndGgge1xuICAgICAgICAgICAgIHJldHVybiBFcnIoRUZBVUxUKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjIxLjU1NzIzNzIzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NTgxODY3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCdzIGFjdHVhbGx5IGNoYW5naW5nLlxuXG4qKkFuYWx5emluZyB0aGUgUnVzdCBLZXJuZWwgUGF0Y2gqKlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gVGhlIGtleSB0aGluZyBJJ20gcGlja2luZyB1cCBpcyB0aGUgc2hpZnQgZnJvbSBgQXNCeXRlc2AgdG8gYEludG9CeXRlc2AgaW4gdHlwZSBjb25zdHJhaW50cyBhbmQgdHJhaXRzLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgKnplcm9jb3B5KiBvciB0cmFuc211dGUtcmVsYXRlZCBjaGFuZ2VzIHRvIG1lIOKAkyBwb3RlbnRpYWxseSBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBoYW5kbGUgYnl0ZSByZXByZXNlbnRhdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IGZhbWlsaWFyIHdpdGggYEludG9CeXRlc2AuIEkgd2lsbCBwcm9iYWJseSBnbyBhbmQgZXhhbWluZSBgcnVzdC9rZXJuZWwvcHJlbHVkZS5yc2AgYW5kIGBydXN0L2tlcm5lbC90cmFuc211dGUucnNgLCB0byBkZXRlcm1pbmUgd2hhdCBkZWZpbml0aW9ucyBhbmQgaW1wbGVtZW50YXRpb25zIGFyZSBpbnRyb2R1Y2VkIGFuZCBjaGFuZ2VkLiBJIGNhbiBhbHNvIGZpcmUgdXAgYGdyZXBwZXJgIG9yIGNoZWNrIHRoZSBnaXQgbG9nIGFuZCBvdGhlciBSdXN0IGZpbGVzIHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIGJlIHN1cmUgb24gdGhpcyBwb2ludCwgYXMgaXQncyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBUaGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBJJ2xsIGRpdmUgaW4sIGJlY2F1c2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHR5cGUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDUsIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNToyOC4xMTU0MjYxMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3NDY0MDEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJbnRvQnl0ZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzPTc1PSAgICBwdWIoY3JhdGUpIGZuIGRldihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNidncHUgZGV2aWNlOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy04NS0jW3JlcHIoQyldXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5yczo4NjojW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcyldXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy04Ny1zdHJ1Y3QgUHRlQXJyYXlcXHUwMDNjY29uc3QgTlVNX0VOVFJJRVM6IHVzaXplXFx1MDAzZShbdTY0OyBOVU1fRU5UUklFU10pO1xcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9NzA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzYtXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6Nzc6Ly8gQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYW55IGBUOiBJbW11dGFibGUgKyBJbnRvQnl0ZXNgLlxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjc4OmltcGxcXHUwMDNjVDogSW1tdXRhYmxlICsgSW50b0J5dGVzXFx1MDAzZSBCaW5hcnlXcml0ZXIgZm9yIFQge1xcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTc5LSAgICBmbiB3cml0ZV90b19zbGljZShcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTE0Nj1pbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJpbmFyeVdyaXRlciBmb3IgVmVjXFx1MDAzY1QsIEFcXHUwMDNlXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ3LXdoZXJlXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTQ4OiAgICBUOiBJbW11dGFibGUgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTQ5LSAgICBBOiBBbGxvY2F0b3IsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0yMTc9ICAgIGZuIHJlYWRfZnJvbV9zbGljZV9tdXQoXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yMjMtXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjI0Oi8vIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFueSBgVDogRnJvbUJ5dGVzICsgSW50b0J5dGVzYC5cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyMjU6aW1wbFxcdTAwM2NUOiBGcm9tQnl0ZXMgKyBJbnRvQnl0ZXNcXHUwMDNlIEJpbmFyeVJlYWRlck11dCBmb3IgVCB7XFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjI2LSAgICBmbiByZWFkX2Zyb21fc2xpY2VfbXV0KFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MjQ3PWltcGxcXHUwMDNjVCwgQVxcdTAwM2UgQmluYXJ5UmVhZGVyTXV0IGZvciBWZWNcXHUwMDNjVCwgQVxcdTAwM2VcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNDgtd2hlcmVcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoyNDk6ICAgIFQ6IEZyb21CeXRlcyArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0yNTAtICAgIEE6IEFsbG9jYXRvcixcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz0zNTY9ICAgIGZuIGZyb20oZGlyZWN0aW9uOiBEYXRhRGlyZWN0aW9uKSAtXFx1MDAzZSBTZWxmIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy00MTUtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjQxNjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjW1RdXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQxNy0gICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFxcdTAwM2NFXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcXHUwMDNjVCwgRVxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1Mi0gICAgICAgIC8vIC0gYHB0cmAgaXMgdmFsaWQsIHByb3Blcmx5IGFsaWduZWQsIGFuZCB3aXRoaW4gdGhpcyBhbGxvY2F0aW9uLlxcbnJ1c3Qva2VybmVsL2RtYS5yczo0NTM6ICAgICAgICAvLyAtIGBUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNgIGd1YXJhbnRlZXMgYWxsIGJpdCBwYXR0ZXJucyBhcmUgdmFsaWQsIHNvIHBhcnRpYWwgd3JpdGVzIG9uXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ1NC0gICAgICAgIC8vICAgZXJyb3IgY2Fubm90IGxlYXZlIHRoZSBlbGVtZW50IGluIGFuIGludmFsaWQgc3RhdGUuXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTEwPSAgICBwdWIgZm4gZnJvbV9zbGljZShcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjEtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjUyMjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01MjMtICAgIC8vLyBTYW1lIGFzIFtgQ29oZXJlbnRCb3g6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0sIGJ1dCBmb3IgYSBzaW5nbGUgZWxlbWVudC5cXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTItXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTU0LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTYzLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NjU2PSAgICBwdWIgdW5zYWZlIGZuIGFzX211dChcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy02NjEtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjY2MjppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy02NjMtICAgIC8vLyBBbGxvY2F0ZXMgYSByZWdpb24gb2YgYFRgIG9mIGNvaGVyZW50IG1lbW9yeS5cXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz03Mzc9ICAgIHB1YiBmbiBpbml0X3dpdGhfYXR0cnNcXHUwMDNjRVxcdTAwM2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNzUxLSAgICAgICAgLy8gLSBJZiBgcmF3X3RyeV9pbml0YCBmYWlscywgYHNlbGZgIGlzIGRyb3BwZWQsIHdoaWNoIHNhZmVseSBmcmVlcyB0aGUgdW5kZXJseWluZ1xcbnJ1c3Qva2VybmVsL2RtYS5yczo3NTI6ICAgICAgICAvLyAgIGBDb2hlcmVudGAncyBETUEgbWVtb3J5LiBgVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzYCBlbnN1cmVzIHRoZXJlIGFyZSBubyBjb21wbGV4IGBEcm9wYFxcbnJ1c3Qva2VybmVsL2RtYS5ycy03NTMtICAgICAgICAvLyAgIHJlcXVpcmVtZW50cyB3ZSBhcmUgYnlwYXNzaW5nLlxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTk0MT11bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyBTZW5kICsgP1NpemVkXFx1MDAzZSBTZW5kIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTk0Ni0vLyBUaGUgc2FmZSBtZXRob2RzIG9ubHkgcmV0dXJuIG1ldGFkYXRhIG9yIHJhdyBwb2ludGVycyB3aG9zZSB1c2UgcmVxdWlyZXMgYHVuc2FmZWAuXFxucnVzdC9rZXJuZWwvZG1hLnJzOjk0Nzp1bnNhZmUgaW1wbFxcdTAwM2NUOiBLbm93blNpemUgKyA/U2l6ZWQgKyBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBTeW5jXFx1MDAzZSBTeW5jIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7fVxcbnJ1c3Qva2VybmVsL2RtYS5ycy05NDgtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjk0OTppbXBsXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UgZGVidWdmczo6QmluYXJ5V3JpdGVyIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTk1MC0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9MTIxNT0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IHplcm9jb3B5OjpGcm9tQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlKSAtXFx1MDAzZSBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy0xMjE5LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM6MTIyMDogICAgZm4gY29weV93cml0ZVxcdTAwM2NUOiB6ZXJvY29weTo6SW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtMTIyMS0gICAgICAgIFN5c01lbUJhY2tlbmQ6OmNvcHlfd3JpdGUodmlldy5jcHVfYWRkciwgdmFsdWUpXFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz05Mj0gICAgZm4gc2l6ZShwOiAqY29uc3QgU2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMTAxLS8vXFxucnVzdC9rZXJuZWwvaW8ucnM6MTAyOi8vIFRoaXMgY2Fubm90IGJlIGRlcml2ZWQgYXMgYGRlcml2ZShJbnRvQnl0ZXMpYCBhcyB0aGUgcGFkZGluZyBmcmVlIHByb3BlcnR5IGNvbWVzIGZyb20gdHlwZVxcbnJ1c3Qva2VybmVsL2lvLnJzLTEwMy0vLyBpbnZhcmlhbnQgd2hpY2ggdGhlIG1hY3JvIGRvZXMgbm90IGtub3cuXFxucnVzdC9rZXJuZWwvaW8ucnM6MTA0OnVuc2FmZSBpbXBsXFx1MDAzY2NvbnN0IFNJWkU6IHVzaXplXFx1MDAzZSBJbnRvQnl0ZXMgZm9yIFJlZ2lvblxcdTAwM2NTSVpFXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvaW8ucnMtMTA1LSAgICAjW2lubGluZV1cXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTMwMD0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IEZyb21CeXRlc1xcdTAwM2UodmlldzogU2VsZjo6Vmlld1xcdTAwM2MnXywgVFxcdTAwM2UpIC1cXHUwMDNlIFQge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMzIzLSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9pby5yczozMjQ6ICAgIGZuIGNvcHlfd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9pby5ycy0zMjUtICAgICAgICAvLyBQcm9qZWN0IGBzZWxmYCB0byBgW3U4XWAuXFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz00MzM9ICAgIGZuIGlzX2VtcHR5XFx1MDAzY1RcXHUwMDNlKHNlbGYpIC1cXHUwMDNlIGJvb2xcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ1NC0gICAgLy8vIH07XFxucnVzdC9rZXJuZWwvaW8ucnM6NDU1OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpXVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ1Ni0gICAgLy8vICNbcmVwcihDKV1cXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTQ2NT0gICAgZm4gdHJ5X2Nhc3RcXHUwMDNjVVxcdTAwM2Uoc2VsZikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1xcdTAwM2NTZWxmOjpCYWNrZW5kIGFzIElvQmFja2VuZFxcdTAwM2U6OlZpZXdcXHUwMDNjJ2EsIFVcXHUwMDNlXFx1MDAzZVxcbnJ1c3Qva2VybmVsL2lvLnJzLTQ2Ni0gICAgd2hlcmVcXG5ydXN0L2tlcm5lbC9pby5yczo0Njc6ICAgICAgICBTZWxmOjpUYXJnZXQ6IEZyb21CeXRlcyArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9pby5yczo0Njg6ICAgICAgICBVOiBGcm9tQnl0ZXMgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvaW8ucnMtNDY5LSAgICB7XFxuLS1cXG5ydXN0L2tlcm5lbC9pby5ycz01NzU9ICAgIGZuIGNvcHlfd3JpdGUoc2VsZiwgdmFsdWU6IFNlbGY6OlRhcmdldClcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTU3Ny0gICAgICAgIFNlbGY6OkJhY2tlbmQ6IElvQ29weWFibGUsXFxucnVzdC9rZXJuZWwvaW8ucnM6NTc4OiAgICAgICAgU2VsZjo6VGFyZ2V0OiBTaXplZCArIEludG9CeXRlcyxcXG5ydXN0L2tlcm5lbC9pby5ycy01NzktICAgIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzPTE0MDU9ICAgIGZuIGNvcHlfcmVhZFxcdTAwM2NUOiBGcm9tQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlKSAtXFx1MDAzZSBUIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2lvLnJzLTE0MTUtICAgICNbaW5saW5lXVxcbnJ1c3Qva2VybmVsL2lvLnJzOjE0MTY6ICAgIGZuIGNvcHlfd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZSh2aWV3OiBTZWxmOjpWaWV3XFx1MDAzYydfLCBUXFx1MDAzZSwgdmFsdWU6IFQpIHtcXG5ydXN0L2tlcm5lbC9pby5ycy0xNDE3LSAgICAgICAgLy8gU0FGRVRZOlxcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnM9MTU5OT0gICAgZm4gY29weV9yZWFkXFx1MDAzY1Q6IEZyb21CeXRlc1xcdTAwM2UodmlldzogU2VsZjo6Vmlld1xcdTAwM2MnXywgVFxcdTAwM2UpIC1cXHUwMDNlIFQge1xcbi0tXFxucnVzdC9rZXJuZWwvaW8ucnMtMTYwNi0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvaW8ucnM6MTYwNzogICAgZm4gY29weV93cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKHZpZXc6IFNlbGY6OlZpZXdcXHUwMDNjJ18sIFRcXHUwMDNlLCB2YWx1ZTogVCkge1xcbnJ1c3Qva2VybmVsL2lvLnJzLTE2MDgtICAgICAgICBtYXRjaCB2aWV3IHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzPTg0PSAgICBmbiBwdXRcXHUwMDNjVFxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBhdHRydHlwZTogY19pbnQsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODUtICAgIHdoZXJlXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6ODY6ICAgICAgICBUOiA/U2l6ZWQgKyBJbnRvQnl0ZXMsXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODctICAgIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnMtNjUtICAgIEZyb21CeXRlcyxcXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzOjY2OiAgICBJbnRvQnl0ZXMsIC8vXFxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02Ny19O1xcbi0tXFxucnVzdC9rZXJuZWwvcHJlbHVkZS5ycy03MS0gICAgRnJvbUJ5dGVzLFxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnM6NzI6ICAgIEludG9CeXRlcywgLy9cXG5ydXN0L2tlcm5lbC9wcmVsdWRlLnJzLTczLX07XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTQ4OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlKFxcdTAwMjZtdXQgc2VsZiwgZGF0YTogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUyNi0gICAgLy8vIGBgYFxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTI3OiAgICBwdWIgZm4gd3JpdGVfZG1hXFx1MDAzY1Q6IEtub3duU2l6ZSArIEludG9CeXRlcyArID9TaXplZFxcdTAwM2UoXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjgtICAgICAgICBcXHUwMDI2bXV0IHNlbGYsXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTU3OT0gICAgcHViIGZuIHdyaXRlX3NsaWNlX2ZpbGUoXFx1MDAyNm11dCBzZWxmLCBkYXRhOiBcXHUwMDI2W3U4XSwgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3VzaXplXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo2MDE6ICAgIHB1YiBmbiB3cml0ZVxcdTAwM2NUOiBJbnRvQnl0ZXNcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgdmFsdWU6IFxcdTAwMjZUKSAtXFx1MDAzZSBSZXN1bHQge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNjAyLSAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6OlxcdTAwM2NUXFx1MDAzZSgpO1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MjE9Zm4gZGVyaXZlX2ludG9fYnl0ZXNfc3RydWN0KGN0eDogXFx1MDAyNkN0eCwgc3RyY3Q6IFxcdTAwMjZEYXRhU3RydWN0KSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0zMi0gICAgICAgIC8vICAgc2FtZSBhcyBpdHMgb25seSBub24tWlNUIGZpZWxkIChtZWFuaW5nIHRoZXJlJ3Mgbm8gcGFkZGluZyBvdXRzaWRlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MzM6ICAgICAgICAvLyAgIG9mIHRoYXQgZmllbGQpIGFuZCB3ZSByZXF1aXJlIHRoYXQgZmllbGQgdG8gYmUgYEludG9CeXRlc2AgKG1lYW5pbmdcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0zNC0gICAgICAgIC8vICAgdGhlcmUncyBubyBwYWRkaW5nIGluIHRoYXQgZmllbGQpLlxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMzYtICAgICAgICAvLyAgIHRoYXQgYW55IHBhZGRpbmcgYnl0ZXMgd291bGQgbmVlZCB0byBjb21lIGZyb20gdGhlIGZpZWxkcywgYWxsIG9mXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6Mzc6ICAgICAgICAvLyAgIHdoaWNoIHdlIHJlcXVpcmUgdG8gYmUgYEludG9CeXRlc2AgKG1lYW5pbmcgdGhleSBkb24ndCBoYXZlIGFueVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTM4LSAgICAgICAgLy8gICBwYWRkaW5nKS4gTm90ZSB0aGF0IHRoaXMgaG9sZHMgcmVnYXJkbGVzcyBvZiBvdGhlciBgcmVwcmBcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk1LVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzOjk2OiAgICBPayhJbXBsQmxvY2tCdWlsZGVyOjpuZXcoY3R4LCBzdHJjdCwgVHJhaXQ6OkludG9CeXRlcywgZmllbGRfYm91bmRzKVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTk3LSAgICAgICAgLnBhZGRpbmdfY2hlY2socGFkZGluZ19jaGVjaylcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzPTEwMT1mbiBkZXJpdmVfaW50b19ieXRlc19lbnVtKGN0eDogXFx1MDAyNkN0eCwgZW5tOiBcXHUwMDI2RGF0YUVudW0pIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NUb2tlblN0cmVhbSwgRXJyb3JcXHUwMDNlIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTExMC0gICAgbGV0IHRhZ190eXBlX2RlZmluaXRpb24gPSBnZW5lcmF0ZV90YWdfZW51bShjdHgsIFxcdTAwMjZyZXByLCBlbm0pO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzOjExMTogICAgT2soSW1wbEJsb2NrQnVpbGRlcjo6bmV3KGN0eCwgZW5tLCBUcmFpdDo6SW50b0J5dGVzLCBGaWVsZEJvdW5kczo6QUxMX1NFTEYpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnMtMTEyLSAgICAgICAgLnBhZGRpbmdfY2hlY2soUGFkZGluZ0NoZWNrOjpFbnVtIHsgdGFnX3R5cGVfZGVmaW5pdGlvbiB9KVxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM9MTE2PWZuIGRlcml2ZV9pbnRvX2J5dGVzX3VuaW9uKGN0eDogXFx1MDAyNkN0eCwgdW5uOiBcXHUwMDI2RGF0YVVuaW9uKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW0sIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvaW50b19ieXRlcy5ycy0xNTktXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL2ludG9fYnl0ZXMucnM6MTYwOiAgICBsZXQgaW1wbF9ibG9jayA9IEltcGxCbG9ja0J1aWxkZXI6Om5ldyhjdHgsIHVubiwgVHJhaXQ6OkludG9CeXRlcywgRmllbGRCb3VuZHM6OkFMTF9TRUxGKVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9pbnRvX2J5dGVzLnJzLTE2MS0gICAgICAgIC5wYWRkaW5nX2NoZWNrKFBhZGRpbmdDaGVjazo6VW5pb24pXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTQ0PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6aGFzaDo6SGFzaCBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy00NS0gICAgICAgIHdoZXJlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo0NjogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyArICN6ZXJvY29weV9jcmF0ZTo6SW1tdXRhYmxlLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNDctICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM9NDk9ICAgICAgICAgICAgZm4gaGFzaFxcdTAwM2NIOiAjY29yZTo6aGFzaDo6SGFzaGVyXFx1MDAzZShcXHUwMDI2c2VsZiwgc3RhdGU6IFxcdTAwMjZtdXQgSCkge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTA6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoc2VsZikpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01MS0gICAgICAgICAgICB9XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTUzPSAgICAgICAgICAgIGZuIGhhc2hfc2xpY2VcXHUwMDNjSDogI2NvcmU6Omhhc2g6Okhhc2hlclxcdTAwM2UoZGF0YTogXFx1MDAyNltTZWxmXSwgc3RhdGU6IFxcdTAwMjZtdXQgSCkge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NTQ6ICAgICAgICAgICAgICAgICNjb3JlOjpoYXNoOjpIYXNoZXI6OndyaXRlKHN0YXRlLCAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlczo6YXNfYnl0ZXMoZGF0YSkpXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy01NS0gICAgICAgICAgICB9XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTcyPSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpQYXJ0aWFsRXEgZm9yICN0eXBlX2lkZW50ICN0eV9nZW5lcmljc1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzMtICAgICAgICB3aGVyZVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnM6NzQ6ICAgICAgICAgICAgU2VsZjogI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXMgKyAjemVyb2NvcHlfY3JhdGU6OkltbXV0YWJsZSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTc1LSAgICAgICAgICAgICN3aGVyZV9wcmVkaWNhdGVzXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTc3PSAgICAgICAgICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtNzgtICAgICAgICAgICAgICAgICNjb3JlOjpjbXA6OlBhcnRpYWxFcTo6ZXEoXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo3OTogICAgICAgICAgICAgICAgICAgICN6ZXJvY29weV9jcmF0ZTo6SW50b0J5dGVzOjphc19ieXRlcyhzZWxmKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzOjgwOiAgICAgICAgICAgICAgICAgICAgI3plcm9jb3B5X2NyYXRlOjpJbnRvQnl0ZXM6OmFzX2J5dGVzKG90aGVyKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzLTgxLSAgICAgICAgICAgICAgICApXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9kZXJpdmUvbW9kLnJzPTg1PSAgICAgICAgaW1wbCAjaW1wbF9nZW5lcmljcyAjY29yZTo6Y21wOjpFcSBmb3IgI3R5cGVfaWRlbnQgI3R5X2dlbmVyaWNzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5ycy04Ni0gICAgICAgIHdoZXJlXFxucnVzdC96ZXJvY29weS1kZXJpdmUvZGVyaXZlL21vZC5yczo4NzogICAgICAgICAgICBTZWxmOiAjemVyb2NvcHlfY3JhdGU6OkludG9CeXRlcyArICN6ZXJvY29weV9jcmF0ZTo6SW1tdXRhYmxlLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2Rlcml2ZS9tb2QucnMtODgtICAgICAgICAgICAgI3doZXJlX3ByZWRpY2F0ZXNcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz00Mj1tYWNyb19ydWxlcyEgaWRlbnQge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTY4LS8vIEluc3RlYWQsIHdlIGhhdmUgbW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIGxpa2UgXFxcInVuc3VwcG9ydGVkIHJlcHJlc2VudGF0aW9uXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzOjY5Oi8vIGZvciBkZXJpdmluZyBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBvciBVbmFsaWduZWQgb24gYW4gZW51bVxcXCJcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtNzAtLy9cXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycz0xMTM9ICAgIGZuIGludG9fdHMoc2VsZikgLVxcdTAwM2UgcHJvY19tYWNybzI6OlRva2VuU3RyZWFtIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjUtZGVyaXZlIShGcm9tQnl0ZXMgPVxcdTAwM2UgZGVyaXZlX2Zyb21fYnl0ZXMgPVxcdTAwM2UgY3JhdGU6OmRlcml2ZTo6ZnJvbV9ieXRlczo6ZGVyaXZlX2Zyb21fYnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxMjY6ZGVyaXZlIShJbnRvQnl0ZXMgPVxcdTAwM2UgZGVyaXZlX2ludG9fYnl0ZXMgPVxcdTAwM2UgY3JhdGU6OmRlcml2ZTo6aW50b19ieXRlczo6ZGVyaXZlX2ludG9fYnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5ycy0xMjctZGVyaXZlIShVbmFsaWduZWQgPVxcdTAwM2UgZGVyaXZlX3VuYWxpZ25lZCA9XFx1MDAzZSBjcmF0ZTo6ZGVyaXZlOjp1bmFsaWduZWQ6OmRlcml2ZV91bmFsaWduZWQpO1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTEzND1wdWIgZm4gbW9zdF90cmFpdHModHM6IHByb2NfbWFjcm86OlRva2VuU3RyZWFtKSAtXFx1MDAzZSBwcm9jX21hY3JvOjpUb2tlblN0cmVhbSB7XFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ2LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmZyb21fYnl0ZXM6OmRlcml2ZV9mcm9tX2J5dGVzLCBUcmFpdDo6RnJvbUJ5dGVzKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTQ3OiAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmludG9fYnl0ZXM6OmRlcml2ZV9pbnRvX2J5dGVzLCBUcmFpdDo6SW50b0J5dGVzKSxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTQ4LSAgICAgICAgKGNyYXRlOjpkZXJpdmU6OmRlcml2ZV9zcGxpdF9hdCwgVHJhaXQ6OlNwbGl0QXQpLFxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzPTE3MD1wdWIgZm4gZGVyaXZlX2Zyb21femVyb2VzKHRzOiBwcm9jX21hY3JvOjpUb2tlblN0cmVhbSkgLVxcdTAwM2UgcHJvY19tYWNybzo6VG9rZW5TdHJlYW0ge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvbGliLnJzLTE3My1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnM6MTc0Oi8vLyBEZXByZWNhdGVkOiBwcmVmZXIgW2BJbnRvQnl0ZXNgXSBpbnN0ZWFkLlxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL2xpYi5yczoxNzU6I1tkZXByZWNhdGVkKHNpbmNlID0gXFxcIjAuOC4wXFxcIiwgbm90ZSA9IFxcXCJgQXNCeXRlc2Agd2FzIHJlbmFtZWQgdG8gYEludG9CeXRlc2BcXFwiKV1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS9saWIucnMtMTc2LSNbZG9jKGhpZGRlbildXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzPTMwMj1wdWIoY3JhdGUpIGVudW0gVHJhaXQge1xcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zMTktICAgIEZyb21CeXRlcyxcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzOjMyMDogICAgSW50b0J5dGVzLFxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzIxLSAgICBVbmFsaWduZWQsXFxuLS1cXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzPTMyOT0gICAgZm4gdG9fdG9rZW5zKFxcdTAwMjZzZWxmLCB0b2tlbnM6IFxcdTAwMjZtdXQgVG9rZW5TdHJlYW0pIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHktZGVyaXZlL3V0aWwucnMtMzQ3LSAgICAgICAgICAgIFRyYWl0OjpGcm9tQnl0ZXMgPVxcdTAwM2UgXFxcIkZyb21CeXRlc1xcXCIsXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozNDg6ICAgICAgICAgICAgVHJhaXQ6OkludG9CeXRlcyA9XFx1MDAzZSBcXFwiSW50b0J5dGVzXFxcIixcXG5ydXN0L3plcm9jb3B5LWRlcml2ZS91dGlsLnJzLTM0OS0gICAgICAgICAgICBUcmFpdDo6VW5hbGlnbmVkID1cXHUwMDNlIFxcXCJVbmFsaWduZWRcXFwiLFxcbi0tXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNjgtICAgICAgICAgICAgfCBUcmFpdDo6RnJvbUJ5dGVzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5yczozNjk6ICAgICAgICAgICAgfCBUcmFpdDo6SW50b0J5dGVzXFxucnVzdC96ZXJvY29weS1kZXJpdmUvdXRpbC5ycy0zNzAtICAgICAgICAgICAgfCBUcmFpdDo6VW5hbGlnbmVkXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycy0zLS8vIFRoZSBvbmx5IHZhbGlkIHZhbHVlIG9mIHRoaXMgdHlwZSBhcmUgdGhlIGJ5dGVzIGAweEMwQzBgLlxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzLTUtI1tyZXByKHUxNildXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX2R5bmFtaWNfc2l6ZS5ycz0xMD1tYWNyb19ydWxlcyEgZGVmaW5lX3BhY2tldCB7XFxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19keW5hbWljX3NpemUucnMtMTEtICAgICgkbmFtZTogaWRlbnQsICR0cmFpdDogaWRlbnQsICRsZWFkaW5nX2ZpZWxkOiB0eSkgPVxcdTAwM2Uge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzOjEyOiAgICAgICAgI1tkZXJpdmUoJHRyYWl0LCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFNwbGl0QXQpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fZHluYW1pY19zaXplLnJzLTEzLSAgICAgICAgI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMy0vLyBUaGUgb25seSB2YWxpZCB2YWx1ZSBvZiB0aGlzIHR5cGUgYXJlIHRoZSBieXRlcyBgMHhDMEMwYC5cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvZm9ybWF0cy9jb2NvX3N0YXRpY19zaXplLnJzOjQ6I1tkZXJpdmUoVHJ5RnJvbUJ5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlLCBJbnRvQnl0ZXMpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtNS0jW3JlcHIodTE2KV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM9MTA9bWFjcm9fcnVsZXMhIGRlZmluZV9wYWNrZXQge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnMtMTEtICAgICgkbmFtZTogaWRlbnQsICR0cmFpdDogaWRlbnQsICRsZWFkaW5nX2ZpZWxkOiB0eSkgPVxcdTAwM2Uge1xcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy9mb3JtYXRzL2NvY29fc3RhdGljX3NpemUucnM6MTI6ICAgICAgICAjW2Rlcml2ZSgkdHJhaXQsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIEludG9CeXRlcyldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL2Zvcm1hdHMvY29jb19zdGF0aWNfc2l6ZS5ycy0xMy0gICAgICAgICNbcmVwcihDLCBhbGlnbigyKSldXFxuLS1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJhbnNtdXRlLnJzLTYtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5yczo3OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZS5ycy04LSNbcmVwcihDKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy01LVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5yczo2OiNbZGVyaXZlKEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSldXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZV9yZWZfZHluYW1pY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTctI1tyZXByKEMsIGFsaWduKDIpKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTYtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGUucnM6NzojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlLnJzLTgtI1tyZXByKEMpXVxcbi0tXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX2R5bmFtaWNfc2l6ZS5ycy01LVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnM6NjojW2Rlcml2ZShJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUpXVxcbnJ1c3QvemVyb2NvcHkvYmVuY2hlcy90cnlfdHJhbnNtdXRlX3JlZl9keW5hbWljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxcbi0tXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzLTUtXFxucnVzdC96ZXJvY29weS9iZW5jaGVzL3RyeV90cmFuc211dGVfcmVmX3N0YXRpY19zaXplLnJzOjY6I1tkZXJpdmUoSW50b0J5dGVzLCBLbm93bkxheW91dCwgSW1tdXRhYmxlKV1cXG5ydXN0L3plcm9jb3B5L2JlbmNoZXMvdHJ5X3RyYW5zbXV0ZV9yZWZfc3RhdGljX3NpemUucnMtNy0jW3JlcHIoQywgYWxpZ24oMikpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQyLS8vIVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczo0MzovLyEgI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTQ0LS8vISAjW3JlcHIoQyldXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTEtLy8hXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjUyOi8vISAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTMtLy8hICNbcmVwcihDLCBwYWNrZWQpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTQ3OD1tYWNyb19ydWxlcyEgZGVmaW5lX3R5cGUge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUxMy1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTE0OmBcXFwiLCBzdHJpbmdpZnkhKCRuYW1lKSwgXFxcImAgaW1wbGVtZW50cyBbYEZyb21CeXRlc2BdLCBbYEludG9CeXRlc2BdLCBhbmQgW2BVbmFsaWduZWRgXSxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTE1LW1ha2luZyBpdCB1c2VmdWwgZm9yIHBhcnNpbmcgYW5kIHNlcmlhbGl6YXRpb24uIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIGFuXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTIxLVtgRnJvbUJ5dGVzYF06IGNyYXRlOjpGcm9tQnl0ZXNcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTIyOltgSW50b0J5dGVzYF06IGNyYXRlOjpJbnRvQnl0ZXNcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTIzLVtgVW5hbGlnbmVkYF06IGNyYXRlOjpVbmFsaWduZWRcXFwiKSxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTI0LSAgICAgICAgICAgICNbZGVyaXZlKENvcHksIENsb25lLCBFcSwgUGFydGlhbEVxLCBIYXNoKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTI1OiAgICAgICAgICAgICNbY2ZnX2F0dHIoYW55KGZlYXR1cmUgPSBcXFwiZGVyaXZlXFxcIiwgdGVzdCksIGRlcml2ZShLbm93bkxheW91dCwgSW1tdXRhYmxlLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKSldXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUyNi0gICAgICAgICAgICAjW3JlcHIodHJhbnNwYXJlbnQpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTUzNi0gICAgICAgIC8vIGFyZSBgSW1tdXRhYmxlYCwgYFRyeUZyb21CeXRlc2AsIGBGcm9tWmVyb3NgLCBgRnJvbUJ5dGVzYCxcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6NTM3OiAgICAgICAgLy8gYEludG9CeXRlc2AsIGFuZCBgVW5hbGlnbmVkYC5cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTM4LSAgICAgICAgI1thbGxvdyhjbGlwcHk6Om11bHRpcGxlX3Vuc2FmZV9vcHNfcGVyX2Jsb2NrKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy01NDMtICAgICAgICAgICAgaW1wbF9vcl92ZXJpZnkhKE8gPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciAkbmFtZVxcdTAwM2NPXFx1MDAzZSk7XFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjU0NDogICAgICAgICAgICBpbXBsX29yX3ZlcmlmeSEoTyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yICRuYW1lXFx1MDAzY09cXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtNTQ1LSAgICAgICAgICAgIGltcGxfb3JfdmVyaWZ5IShPID1cXHUwMDNlIFVuYWxpZ25lZCBmb3IgJG5hbWVcXHUwMDNjT1xcdTAwM2UpO1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzPTEwNDk9ICAgICAgICBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIERpc3RyaWJ1dGlvblxcdTAwM2NUXFx1MDAzZSBmb3IgVSB7fVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzLTEwNTYtICAgIC8vIEEgbmF0aXZlIGludGVnZXIgdHlwZSAodTE2LCBpMzIsIGV0YykuXFxucnVzdC96ZXJvY29weS9zcmMvYnl0ZW9yZGVyLnJzOjEwNTc6ICAgIHRyYWl0IE5hdGl2ZTogQXJiaXRyYXJ5ICsgRnJvbUJ5dGVzICsgSW50b0J5dGVzICsgSW1tdXRhYmxlICsgQ29weSArIFBhcnRpYWxFcSArIERlYnVnIHtcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnMtMTA1OC0gICAgICAgIGNvbnN0IFpFUk86IFNlbGY7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwMT0gICAgdHJhaXQgQnl0ZUFycmF5OlxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5yczoxMTAyOiAgICAgICAgRnJvbUJ5dGVzICsgSW50b0J5dGVzICsgSW1tdXRhYmxlICsgQ29weSArIEFzUmVmXFx1MDAzY1t1OF1cXHUwMDNlICsgQXNNdXRcXHUwMDNjW3U4XVxcdTAwM2UgKyBEZWJ1ZyArIERlZmF1bHQgKyBFcVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTAzLSAgICB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM9MTEwOD0gICAgdHJhaXQgQnl0ZU9yZGVyVHlwZTpcXG5ydXN0L3plcm9jb3B5L3NyYy9ieXRlb3JkZXIucnM6MTEwOTogICAgICAgIEZyb21CeXRlcyArIEludG9CeXRlcyArIFVuYWxpZ25lZCArIENvcHkgKyBFcSArIERlYnVnICsgSGFzaCArIEZyb21cXHUwMDNjU2VsZjo6TmF0aXZlXFx1MDAzZVxcbnJ1c3QvemVyb2NvcHkvc3JjL2J5dGVvcmRlci5ycy0xMTEwLSAgICB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzPTE1Mj1pbXBsXFx1MDAzYydhLCBCLCBUXFx1MDAzZSBSZWZcXHUwMDNjQiwgW1RdXFx1MDAzZVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5ycy0xNTQtICAgIEI6ICdhICsgSW50b0J5dGVTbGljZU11dFxcdTAwM2MnYVxcdTAwM2UsXFxucnVzdC96ZXJvY29weS9zcmMvZGVwcmVjYXRlZC5yczoxNTU6ICAgIFQ6IEZyb21CeXRlcyArIEludG9CeXRlcyArIEltbXV0YWJsZSxcXG5ydXN0L3plcm9jb3B5L3NyYy9kZXByZWNhdGVkLnJzLTE1Ni17XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycz04MTI9aW1wbFxcdTAwM2NTcmMsIERzdDogP1NpemVkICsgVW5hbGlnbmVkXFx1MDAzZSBGcm9tXFx1MDAzY0Nhc3RFcnJvclxcdTAwM2NTcmMsIERzdFxcdTAwM2VcXHUwMDNlIGZvciBTaXplRXJyb3JcXHUwMDNjU3JjLCBEc3RcXHUwMDNlIHtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2Vycm9yLnJzLTgyOC0gICAgLy8vXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnM6ODI5OiAgICAvLy8gI1tkZXJpdmUoRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIEtub3duTGF5b3V0LCBJbW11dGFibGUsIFVuYWxpZ25lZCldXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODMwLSAgICAvLy8gI1tyZXByKEMpXVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvZXJyb3IucnMtODM3LSAgICAvLy9cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5yczo4Mzg6ICAgIC8vLyAjW2Rlcml2ZShGcm9tQnl0ZXMsIEludG9CeXRlcywgS25vd25MYXlvdXQsIEltbXV0YWJsZSwgVW5hbGlnbmVkKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9lcnJvci5ycy04MzktICAgIC8vLyAjW3JlcHIoQywgcGFja2VkKV1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1LS8vICAgb25lIHBvc3NpYmxlIHNlcXVlbmNlIG9mIDAgYnl0ZXMsIGFuZCBgKClgIGlzIGluaGFiaXRlZC5cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyNjovLyAtIGBJbnRvQnl0ZXNgOiBTaW5jZSBgKClgIGhhcyBzaXplIDAsIGl0IGNvbnRhaW5zIG5vIHBhZGRpbmcgYnl0ZXMuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjctLy8gLSBgVW5hbGlnbmVkYDogYCgpYCBoYXMgYWxpZ25tZW50IDEuXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0zMS1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MzI6ICAgIHVuc2FmZV9pbXBsISgoKTogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMzMtICAgIGFzc2VydF91bmFsaWduZWQhKCgpKTtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTM5LS8vICAgcGF0dGVybnMgYXJlIHZhbGlkIGZvciBudW1lcmljIHR5cGVzIFsxXVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjQwOi8vIC0gYEludG9CeXRlc2A6IG51bWVyaWMgdHlwZXMgaGF2ZSBubyBwYWRkaW5nIGJ5dGVzIFsxXVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQxLS8vIC0gYFVuYWxpZ25lZGAgKGB1OGAgYW5kIGBpOGAgb25seSk6IFRoZSByZWZlcmVuY2UgWzJdIHNwZWNpZmllcyB0aGUgc2l6ZSBvZlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjctY29uc3QgXzogKCkgPSB1bnNhZmUge1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY4OiAgICB1bnNhZmVfaW1wbCEodTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjY5OiAgICB1bnNhZmVfaW1wbCEoaTg6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTcwLSAgICBhc3NlcnRfdW5hbGlnbmVkISh1OCwgaTgpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjcxOiAgICB1bnNhZmVfaW1wbCEodTE2OiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzI6ICAgIHVuc2FmZV9pbXBsIShpMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3MzogICAgdW5zYWZlX2ltcGwhKHUzMjogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc0OiAgICB1bnNhZmVfaW1wbCEoaTMyOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NzU6ICAgIHVuc2FmZV9pbXBsISh1NjQ6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NjogICAgdW5zYWZlX2ltcGwhKGk2NDogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc3OiAgICB1bnNhZmVfaW1wbCEodTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc4OiAgICB1bnNhZmVfaW1wbCEoaTEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjc5OiAgICB1bnNhZmVfaW1wbCEodXNpemU6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MDogICAgdW5zYWZlX2ltcGwhKGlzaXplOiBJbW11dGFibGUsIFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODE6ICAgIHVuc2FmZV9pbXBsIShmMzI6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MjogICAgdW5zYWZlX2ltcGwhKGY2NDogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgzLSAgICAjW2NmZyhmZWF0dXJlID0gXFxcImZsb2F0LW5pZ2h0bHlcXFwiKV1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4NDogICAgdW5zYWZlX2ltcGwhKCNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gXFxcImZsb2F0LW5pZ2h0bHlcXFwiKSkpXSBmMTY6IEltbXV0YWJsZSwgVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NS0gICAgI1tjZmcoZmVhdHVyZSA9IFxcXCJmbG9hdC1uaWdodGx5XFxcIildXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6ODY6ICAgIHVuc2FmZV9pbXBsISgjW2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9IFxcXCJmbG9hdC1uaWdodGx5XFxcIikpKV0gZjEyODogSW1tdXRhYmxlLCBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTg3LX07XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy05MS0vLyAtIGBGcm9tWmVyb3NgOiBWYWxpZCBzaW5jZSBcXFwiW3RdaGUgdmFsdWUgZmFsc2UgaGFzIHRoZSBiaXQgcGF0dGVybiAweDAwXFxcIiBbMV0uXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6OTI6Ly8gLSBgSW50b0J5dGVzYDogU2luY2UgXFxcInRoZSBib29sZWFuIHR5cGUgaGFzIGEgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIDEgZWFjaFxcXCJcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy05My0vLyAgIGFuZCBcXFwiVGhlIHZhbHVlIGZhbHNlIGhhcyB0aGUgYml0IHBhdHRlcm4gMHgwMCBhbmQgdGhlIHZhbHVlIHRydWUgaGFzIHRoZVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTAwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTAxOmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKGJvb2w6IEltbXV0YWJsZSwgRnJvbVplcm9zLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCkgfTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMDItYXNzZXJ0X3VuYWxpZ25lZCEoYm9vbCk7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xMjQtLy8gICBjb250YWlucyAweDAwMDAuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTI1Oi8vIC0gYEludG9CeXRlc2A6IGBjaGFyYCBpcyBwZXIgcmVmZXJlbmNlIFsxXSBcXFwicmVwcmVzZW50ZWQgYXMgYSAzMi1iaXQgdW5zaWduZWRcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxMjY6Ly8gICB3b3JkXFxcIiAoYHUzMmApIHdoaWNoIGlzIGBJbnRvQnl0ZXNgLiBOb3RlIHRoYXQgdW5saWtlIGB1MzJgLCBub3QgYWxsIGJpdFxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTEyNy0vLyAgIHBhdHRlcm5zIGFyZSB2YWxpZCBmb3IgYGNoYXJgLlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMwLSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTMxOmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKGNoYXI6IEltbXV0YWJsZSwgRnJvbVplcm9zLCBJbnRvQnl0ZXMpIH07XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTMyLVxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUwLS8vIC0gYEltbXV0YWJsZWA6IGBbdThdYCBkb2VzIG5vdCBjb250YWluIGFueSBgVW5zYWZlQ2VsbGBzLlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE1MTovLyAtIGBGcm9tWmVyb3NgLCBgSW50b0J5dGVzYCwgYFVuYWxpZ25lZGA6IGBbdThdYCBpcyBgRnJvbVplcm9zYCwgYEludG9CeXRlc2AsXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTUyLS8vICAgYW5kIGBVbmFsaWduZWRgLlxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTU2LS8vXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTU3Oi8vIEZJWE1FKCM0MjkpOiBJbXByb3ZlIHNhZmV0eSBwcm9vZiBmb3IgYEZyb21aZXJvc2AgYW5kIGBJbnRvQnl0ZXNgOyBoYXZpbmcgdGhlIHNhbWVcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy0xNTgtLy8gbGF5b3V0IGFzIGBbdThdYCBpc24ndCBzdWZmaWNpZW50Llxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTY0LSNbYWxsb3coY2xpcHB5OjptdWx0aXBsZV91bnNhZmVfb3BzX3Blcl9ibG9jayldXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MTY1OmNvbnN0IF86ICgpID0gdW5zYWZlIHsgdW5zYWZlX2ltcGwhKHN0cjogSW1tdXRhYmxlLCBGcm9tWmVyb3MsIEludG9CeXRlcywgVW5hbGlnbmVkKSB9O1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE2Ni1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTE4Mj1tYWNyb19ydWxlcyEgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8ge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTkyLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjE5MzovLyBgTm9uWmVyb1h4eGAgaXMgYEludG9CeXRlc2AsIGJ1dCBub3QgYEZyb21aZXJvc2Agb3IgYEZyb21CeXRlc2AuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk0LS8vXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMTk1LS8vIFNBRkVUWTpcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoxOTY6Ly8gLSBgSW50b0J5dGVzYDogYE5vblplcm9YeHhgIGhhcyB0aGUgc2FtZSBsYXlvdXQgYXMgaXRzIGFzc29jaWF0ZWQgcHJpbWl0aXZlLlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTE5Ny0vLyAgICBTaW5jZSBpdCBpcyB0aGUgc2FtZSBzaXplLCB0aGlzIGd1YXJhbnRlZXMgaXQgaGFzIG5vIHBhZGRpbmcgLSBpbnRlZ2Vyc1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI2LWNvbnN0IF86ICgpID0gdW5zYWZlIHtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMjc6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTg6IEltbXV0YWJsZSwgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIyODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9JODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMsIFVuYWxpZ25lZCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjI5LSAgICBhc3NlcnRfdW5hbGlnbmVkIShOb25aZXJvVTgsIE5vblplcm9JOCk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjMwOiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb1UxNjogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzMTogICAgdW5zYWZlX2ltcGwhKE5vblplcm9JMTY6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzI6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvVTMyOiBJbW11dGFibGUsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjMzOiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb0kzMjogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzNDogICAgdW5zYWZlX2ltcGwhKE5vblplcm9VNjQ6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzU6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTY0OiBJbW11dGFibGUsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjM2OiAgICB1bnNhZmVfaW1wbCEoTm9uWmVyb1UxMjg6IEltbXV0YWJsZSwgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyMzc6ICAgIHVuc2FmZV9pbXBsIShOb25aZXJvSTEyODogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzODogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Vc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjIzOTogICAgdW5zYWZlX2ltcGwhKE5vblplcm9Jc2l6ZTogSW1tdXRhYmxlLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI0MC0gICAgdW5zYWZlX2ltcGxfdHJ5X2Zyb21fYnl0ZXNfZm9yX25vbnplcm8hKFxcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjU2LS8vIFNBRkVUWTpcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyNTc6Ly8gLSBgVHJ5RnJvbUJ5dGVzYCAod2l0aCBubyB2YWxpZGF0b3IpLCBgRnJvbVplcm9zYCwgYEZyb21CeXRlc2AsIGBJbnRvQnl0ZXNgOlxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI1OC0vLyAgIFRoZSBSdXN0IGNvbXBpbGVyIHJldXNlcyBgMGAgdmFsdWUgdG8gcmVwcmVzZW50IGBOb25lYCwgc29cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4MS1jb25zdCBfOiAoKSA9IHVuc2FmZSB7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjgyOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9VOFxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcywgVW5hbGlnbmVkKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODM6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb0k4XFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzLCBVbmFsaWduZWQpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTI4NC0gICAgYXNzZXJ0X3VuYWxpZ25lZCEoT3B0aW9uXFx1MDAzY05vblplcm9VOFxcdTAwM2UsIE9wdGlvblxcdTAwM2NOb25aZXJvSThcXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODU6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb1UxNlxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg2OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9JMTZcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI4NzogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvVTMyXFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyODg6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb0kzMlxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjg5OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9VNjRcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MDogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvSTY0XFx1MDAzZTogVHJ5RnJvbUJ5dGVzLCBGcm9tWmVyb3MsIEZyb21CeXRlcywgSW50b0J5dGVzKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczoyOTE6ICAgIHVuc2FmZV9pbXBsIShPcHRpb25cXHUwMDNjTm9uWmVyb1UxMjhcXHUwMDNlOiBUcnlGcm9tQnl0ZXMsIEZyb21aZXJvcywgRnJvbUJ5dGVzLCBJbnRvQnl0ZXMpO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjI5MjogICAgdW5zYWZlX2ltcGwhKE9wdGlvblxcdTAwM2NOb25aZXJvSTEyOFxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6MjkzOiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9Vc2l6ZVxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6Mjk0OiAgICB1bnNhZmVfaW1wbCEoT3B0aW9uXFx1MDAzY05vblplcm9Jc2l6ZVxcdTAwM2U6IFRyeUZyb21CeXRlcywgRnJvbVplcm9zLCBGcm9tQnl0ZXMsIEludG9CeXRlcyk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtMjk1LX07XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00MDI9ICAgIG1hY3JvX3J1bGVzISBpbXBsX3RyYWl0c19mb3JfYXRvbWljcyB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00MDgtICAgICAgICAgICAgICAgIGltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tISg9XFx1MDAzZSBUcnlGcm9tQnl0ZXMgZm9yICRhdG9taWNzIFskcHJpbWl0aXZlc10pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjQwOTogICAgICAgICAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cXHUwMDNlIEludG9CeXRlcyBmb3IgJGF0b21pY3MgWyRwcmltaXRpdmVzXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNDEwLSAgICAgICAgICAgICkqXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz00NTY9ICAgIG1vZCBhdG9taWNfOCB7XFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy00NjUtICAgICAgICBpbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoPVxcdTAwM2UgVHJ5RnJvbUJ5dGVzIGZvciBBdG9taWNCb29sIFtib29sXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NDY2OiAgICAgICAgaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKD1cXHUwMDNlIEludG9CeXRlcyBmb3IgQXRvbWljQm9vbCBbYm9vbF0pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTQ2Ny1cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzPTYwMz0gICAgbW9kIGF0b21pY19wdHIge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjA5LVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzOjYxMDogICAgICAgIC8vIEZJWE1FKCMxNzApOiBJbXBsZW1lbnQgYEZyb21CeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIG9uY2Ugd2UgaW1wbGVtZW50XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjExLSAgICAgICAgLy8gdGhvc2UgdHJhaXRzIGZvciBgKm11dCBUYC5cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY0Ny0vLyAgIG9uZSBwb3NzaWJsZSBzZXF1ZW5jZSBvZiAwIGJ5dGVzLCBhbmQgYFBoYW50b21EYXRhYCBpcyBpbmhhYml0ZWQuXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjQ4Oi8vIC0gYEludG9CeXRlc2A6IFNpbmNlIGBQaGFudG9tRGF0YWAgaGFzIHNpemUgMCwgaXQgY29udGFpbnMgbm8gcGFkZGluZyBieXRlcy5cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy02NDktLy8gLSBgVW5hbGlnbmVkYDogUGVyIHRoZSBwcmVjZWRpbmcgcmVmZXJlbmNlLCBgUGhhbnRvbURhdGFgIGhhcyBhbGlnbm1lbnQgMS5cXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTY1Ny0gICAgdW5zYWZlX2ltcGwhKFQ6ID9TaXplZCA9XFx1MDAzZSBGcm9tQnl0ZXMgZm9yIFBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo2NTg6ICAgIHVuc2FmZV9pbXBsIShUOiA/U2l6ZWQgPVxcdTAwM2UgSW50b0J5dGVzIGZvciBQaGFudG9tRGF0YVxcdTAwM2NUXFx1MDAzZSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjU5LSAgICB1bnNhZmVfaW1wbCEoVDogP1NpemVkID1cXHUwMDNlIFVuYWxpZ25lZCBmb3IgUGhhbnRvbURhdGFcXHUwMDNjVFxcdTAwM2UpO1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY1LWltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiBGcm9tQnl0ZXMgPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciBXcmFwcGluZ1xcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnM6NjY2OmltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiBJbnRvQnl0ZXMgPVxcdTAwM2UgSW50b0J5dGVzIGZvciBXcmFwcGluZ1xcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNjY3LWFzc2VydF91bmFsaWduZWQhKFdyYXBwaW5nXFx1MDAzYygpXFx1MDAzZSwgV3JhcHBpbmdcXHUwMDNjdThcXHUwMDNlKTtcXG4tLVxcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTczOS1pbXBsX2Zvcl90cmFuc211dGVfZnJvbSEoVDogP1NpemVkICsgRnJvbUJ5dGVzID1cXHUwMDNlIEZyb21CeXRlcyBmb3IgTWFudWFsbHlEcm9wXFx1MDAzY1RcXHUwMDNlW1RdKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo3NDA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEludG9CeXRlcyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yIE1hbnVhbGx5RHJvcFxcdTAwM2NUXFx1MDAzZVtUXSk7XFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtNzQxLS8vIFNBRkVUWTogYE1hbnVhbGx5RHJvcFxcdTAwM2NUXFx1MDAzZWAgaGFzIHRoZSBzYW1lIGxheW91dCBhcyBgVGAgWzFdLCBhbmQgdGh1cyBoYXMgdGhlXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycz04MTM9ICAgICAgICBmbiBwcm9qZWN0KHNsZjogUHRySW5uZXJcXHUwMDNjJ18sIFNlbGZcXHUwMDNlKSAtXFx1MDAzZSAqbXV0IFQge1xcbi0tXFxucnVzdC96ZXJvY29weS9zcmMvaW1wbHMucnMtODI5LWltcGxfZm9yX3RyYW5zbXV0ZV9mcm9tIShUOiA/U2l6ZWQgKyBGcm9tQnl0ZXMgPVxcdTAwM2UgRnJvbUJ5dGVzIGZvciBDZWxsXFx1MDAzY1RcXHUwMDNlW1RdKTtcXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5yczo4MzA6aW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEludG9CeXRlcyA9XFx1MDAzZSBJbnRvQnl0ZXMgZm9yIENlbGxcXHUwMDNjVFxcdTAwM2VbVF0pO1xcbnJ1c3QvemVyb2NvcHkvc3JjL2ltcGxzLnJzLTgzMS0vLyBTQUZFVFk6IGBDZWxsXFx1MDAzY1RcXHUwMDNlYCBoYXMgdGhlIHNhbWUgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIGFzIGBUYCBbMV0sIGFuZCB0aHVzXFxuLS1cXG5ydXN0L3plcm9jb3B5L3NyYy9pbXBscy5ycy04NDAtaW1wbF9mb3JfdHJhbnNtdXRlX2Zyb20hKFQ6ID9TaXplZCArIEZyb21CeXRlcyA9XFx1MDAzZSBGcm9tQnl0ZXMgZm9yIFVuc2FmZUNlbGxcXHUwMDNjVFxcdTAwM2VbVF0pO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTozMC42OTAwNzA1NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk3NzAzMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlcy5cblxuKipBbmFseXppbmcgYEFzQnl0ZXNgIHZzLiBgSW50b0J5dGVzYCBpbiB0aGUgUnVzdCBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgYSByZWZyZXNoZXIgb24gdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gYEFzQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGhvdyB0aGV5IGFyZSBiZWluZyB1c2VkLiBUaW1lIHRvIGRpdmUgaW50byBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCBhbmQgYHJ1c3Qva2VybmVsL3ByZWx1ZGUucnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGVzZSB0cmFpdHMgd2l0aGluIHRoZSBrZXJuZWwncyBjb250ZXh0LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBtZW1vcnkgb3BlcmF0aW9ucyBvciBwb3RlbnRpYWxseSB1bnNhZmUgY29kZS4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGltcGxlbWVudGF0aW9ucywgdXNhZ2UgZXhhbXBsZXMsIGFuZCBhbnkgY29tbWVudHMgdGhhdCBpbGx1bWluYXRlIHRoZSBkZXNpZ24gZGVjaXNpb25zLiBBcmUgd2UgY29uY2VybmVkIGFib3V0IHplcm8tY29weSBjb252ZXJzaW9ucyBoZXJlPyBEb2VzIGBBc0J5dGVzYCBzdWdnZXN0IGEgbW9yZSAqYm9ycm93ZWQqIG9yIHZpZXctbGlrZSBhcHByb2FjaCwgd2hpbGUgYEludG9CeXRlc2AgaW1wbGllcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgb3IgcG90ZW50aWFsbHkgYSBjb3B5aW5nIG9wZXJhdGlvbj8gSSdtIGhvcGluZyB0byBjbGFyaWZ5IGlmIHdlIGFyZSB1c2luZyB0aGVzZSB0byBhY2hpZXZlIG1lbW9yeSBsYXlvdXQgaW50ZXJwcmV0YXRpb25zIG9mIHR5cGVzLCBvciBqdXN0IGdlbmVyYWwgY29udmVyc2lvbnMuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byBpZGVudGlmeSBhbnkgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgcmVnYXJkaW5nIHNhZmV0eSwgYWxpZ25tZW50LCBvciBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIHdoZW4gdXRpbGl6aW5nIHRoZXNlIGNvbnZlcnNpb24gdHJhaXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzIwNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjMyLjc4Nzc3NTU4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODYxOTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdWIgdXNlIHplcm9jb3B5OjpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9rZXJuZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvcHJlbHVkZS5ycy02My0jW2RvYyhub19pbmxpbmUpXVxcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnM6NjQ6cHViIHVzZSB6ZXJvY29weTo6e1xcbnJ1c3Qva2VybmVsL3ByZWx1ZGUucnMtNjUtICAgIEZyb21CeXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzIuODc2NDAxNDE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNTM1NjExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHJ1c3Qva2VybmVsL3ByZWx1ZGUucnNgIChMaW5lcyA1MC05MCkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhhdCBgcHJlbHVkZS5yc2AgZmlsZSB3aXRoaW4gdGhlIGtlcm5lbCdzIFJ1c3QgY29kZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgNTAgdGhyb3VnaCA5MC4gVGhhdCdzIGEgY3J1Y2lhbCBjaHVuayDigJMgSSBiZXQgaXQncyBkZWZpbmluZyBzb21lIGNvcmUgYWJzdHJhY3Rpb25zIG9yIHR5cGUgYWxpYXNlcyB0aGF0IGFyZSBmb3VuZGF0aW9uYWwgdG8gdGhlIHN5c3RlbS4gS25vd2luZyB0aGUgb3ZlcmFsbCBwcm9qZWN0LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCwgaGFyZHdhcmUgYWNjZXNzLCBvciBwZXJoYXBzIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhhdCByYW5nZS4gSXQncyB0aGUgXCJwcmVsdWRlLFwiIHNvIGl0J3MgbGlrZWx5IHNldHRpbmcgdXAgY29tbW9uIHRyYWl0cyBvciBkYXRhIHN0cnVjdHVyZXMgdG8gYmUgaW4gc2NvcGUgZXZlcnl3aGVyZSBlbHNlLiBJ4oCZbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtYWRlLCBvciBpZiB0aGVyZSBpcyBhbnkgaW50ZXJlc3RpbmcgdXNlIG9mIGB1bnNhZmVgIG9yIGBjb25zdGAgY29udGV4dHMgdGhhdCB3YXJyYW50cyBmdXJ0aGVyIHNjcnV0aW55LiBJIHdhbnQgdG8gcXVpY2tseSBncmFzcCB0aGUgZGVzaWduIGNob2ljZXMgdGhlcmUg4oCTIHRoZSBpbnRlbnQgb2YgdGhlIGF1dGhvci90ZWFtIGJlaGluZCB0aG9zZSBsaW5lcy4gSXMgaXQgaWRpb21hdGljIFJ1c3Q/IEFyZSB0aGV5IGFkaGVyaW5nIHRvIGJlc3QgcHJhY3RpY2VzIGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQsIG9yIG1ha2luZyB0cmFkZW9mZnMgZm9yIHBlcmZvcm1hbmNlIG9yIGhhcmR3YXJlIGNvbnN0cmFpbnRzPyBUaW1lIHRvIGRpc3NlY3QgaXQgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU3MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjM1LjA5MTc1OTU1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL3ByZWx1ZGUucnNcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFxuICA1MTpcXHQjW2RvYyhub19pbmxpbmUpXVxcbiAgNTI6XFx0cHViIHVzZSBwaW5faW5pdDo6e1xcbiAgNTM6XFx0ICAgIGluaXQsXFxuICA1NDpcXHQgICAgcGluX2RhdGEsXFxuICA1NTpcXHQgICAgcGluX2luaXQsXFxuICA1NjpcXHQgICAgcGlubmVkX2Ryb3AsXFxuICA1NzpcXHQgICAgSW5QbGFjZVdyaXRlLFxcbiAgNTg6XFx0ICAgIEluaXQsXFxuICA1OTpcXHQgICAgUGluSW5pdCxcXG4gIDYwOlxcdCAgICBaZXJvYWJsZSwgLy9cXG4gIDYxOlxcdH07XFxuICA2MjpcXHRcXG4gIDYzOlxcdCNbZG9jKG5vX2lubGluZSldXFxuICA2NDpcXHRwdWIgdXNlIHplcm9jb3B5Ojp7XFxuICA2NTpcXHQgICAgRnJvbUJ5dGVzLFxcbiAgNjY6XFx0ICAgIEludG9CeXRlcywgLy9cXG4gIDY3OlxcdH07XFxuICA2ODpcXHRcXG4gIDY5OlxcdCNbZG9jKG5vX2lubGluZSldXFxuICA3MDpcXHRwdWIgdXNlIHplcm9jb3B5X2Rlcml2ZTo6e1xcbiAgNzE6XFx0ICAgIEZyb21CeXRlcyxcXG4gIDcyOlxcdCAgICBJbnRvQnl0ZXMsIC8vXFxuICA3MzpcXHR9O1xcbiAgNzQ6XFx0XFxuICA3NTpcXHQjW2RvYyhub19pbmxpbmUpXVxcbiAgNzY6XFx0cHViIHVzZSBzdXBlcjo6e1xcbiAgNzc6XFx0ICAgIGFsbG9jOjp7XFxuICA3ODpcXHQgICAgICAgIGZsYWdzOjoqLFxcbiAgNzk6XFx0ICAgICAgICBCb3gsXFxuICA4MDpcXHQgICAgICAgIEtCb3gsXFxuICA4MTpcXHQgICAgICAgIEtWQm94LFxcbiAgODI6XFx0ICAgICAgICBLVlZlYyxcXG4gIDgzOlxcdCAgICAgICAgS1ZlYyxcXG4gIDg0OlxcdCAgICAgICAgVkJveCxcXG4gIDg1OlxcdCAgICAgICAgVlZlYyxcXG4gIDg2OlxcdCAgICAgICAgVmVjLCAvL1xcbiAgODc6XFx0ICAgIH0sXFxuICA4ODpcXHQgICAgYnVpbGRfYXNzZXJ0Ojp7XFxuICA4OTpcXHQgICAgICAgIGJ1aWxkX2Fzc2VydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzUuMDkxODI1MzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY5OTkzMzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlY2VudCBgemVyb2NvcHlgIFVwZGF0ZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYHplcm9jb3B5YCB2ZXJzaW9uIDAuOCB0cmlnZ2VyZWQgYSByZW5hbWUg4oCTIGBBc0J5dGVzYCBpcyBub3cgYEludG9CeXRlc2AuIFRoZSBgcHJlbHVkZWAgbm93IGV4cG9zZXMgYEludG9CeXRlc2AgZGlyZWN0bHkgZnJvbSBgemVyb2NvcHlgLCB3aGljaCBpcyBoZWxwZnVsLiBUaGlzIGNvbW1pdCBzcGVjaWZpY2FsbHkgdXBkYXRlcyB0aGUga2VybmVsIGNvZGUuIExldCdzIHNlZS4uLiB0aGUgYGRtYS5yc2AsIGBuZXRsaW5rLnJzYCwgYW5kIGB1YWNjZXNzLnJzYCBmaWxlcyBhbGwgcmVwbGFjZSBgQXNCeXRlc2Agd2l0aCBgSW50b0J5dGVzYCB3aXRoaW4gdGhlaXIgdHJhaXQgYm91bmRzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBnbGFuY2UgYXQgdGhlIEdpdCBsb2cuIElzIHRoaXMgYSBzaW1wbGUgdHJhaXQgcmVuYW1lLCBvciBkaWQgc29tZXRoaW5nIG1vcmUgc2lnbmlmaWNhbnQgY2hhbmdlIGF0IHJ1bnRpbWU/IFBlcmhhcHMgdGhlcmUgaXMgc29tZSBzdWJ0bGUgYmVoYXZpb3IgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGtub3duLiBCZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBjb21taXQgaGlzdG9yeSB0aG91Z2gsIGxldCBtZSBjaGVjayB0aGUgYHRyYW5zbXV0ZS5yc2AgbW9kdWxlIGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRyYW5zbXV0ZSBmdW5jdGlvbmFsaXR5IGlzIHN0aWxsIGF2YWlsYWJsZSBhbmQgaGFzbid0IGNoYW5nZWQgaXRzIGZ1bmN0aW9uLiBUaGlzIHJlbmFtZSBjb3VsZCBoYXZlIGFmZmVjdGVkIHRoYXQgc29tZWhvdy4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiB0aGVyZSB0byBjaGVjayBpdHMgY3VycmVudCBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyOTQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTozNy43OTE3NjEzMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTcwNDU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdWIgbW9kIHRyYW5zbXV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJydXN0L2tlcm5lbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJydXN0L2tlcm5lbC9saWIucnMtMTQwLXB1YiBtb2QgdHJhY2Vwb2ludDtcXG5ydXN0L2tlcm5lbC9saWIucnM6MTQxOnB1YiBtb2QgdHJhbnNtdXRlO1xcbnJ1c3Qva2VybmVsL2xpYi5ycy0xNDItcHViIG1vZCB0eXBlcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6MzguMTkxNDcxMTIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzU4MDkwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkncmUgaGFuZGxpbmcgdGhpcyBhdCB0aGUga2VybmVsIGxldmVsLiBUcmFuc211dGF0aW9uIGlzIGEgbm90b3Jpb3VzbHkgdHJpY2t5IGFyZWEsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW1zIGxhbmd1YWdlIGxpa2UgUnVzdCB3aGVyZSB5b3UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBkaXJlY3RseS4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgYHVuc2FmZWAgYmxvY2tzLCBvZiBjb3Vyc2UuIFRoZSBjb3JlIHF1ZXN0aW9ucyBhcmU6IFdoYXQgYXJlIHRoZSBjb25zdHJhaW50cyBiZWluZyBwbGFjZWQgb24gdHJhbnNtdXRlcz8gQXJlIHRoZXkgcmVseWluZyBoZWF2aWx5IG9uIGFsaWdubWVudCBndWFyYW50ZWVzPyBXaGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIOKAkyBhcmUgdGhleSB1c2luZyBjb21waWxlLXRpbWUgY2hlY2tzLCBydW50aW1lIGFzc2VydGlvbnMsIG9yIGEgY29tYmluYXRpb24/IEFuZCBhcmUgdGhleSBiZWluZyBvdmVybHkgcmVzdHJpY3RpdmUsIG9yIGNsZXZlcmx5IGV4cGxvaXRpbmcgZXZlcnkgcG9zc2libGUgb3B0aW1pemF0aW9uPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHVzZSBvZiBgI1tyZXByXWAgYXR0cmlidXRlcyBhbmQgaG93IHRob3NlIGFmZmVjdCB0aGUgdHJhbnNtdXRlJ3Mgc2FmZXR5IGFuZCBlZmZlY3RpdmVuZXNzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgZ29vZCBleGVyY2lzZSwgSSBjYW4gZmVlbCBpdC4gVGltZSB0byBnZXQgZG93biB0byB0aGUgbml0dHktZ3JpdHR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgxMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQwLjI2NzI4NDQyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwicnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Ly8hIFRyYWl0cyBmb3IgdHJhbnNtdXRpbmcgdHlwZXMuXFxuICAgNDpcXHRcXG4gICA1OlxcdHVzZSBjb3JlOjptZW06OnNpemVfb2Y7XFxuICAgNjpcXHRcXG4gICA3OlxcdC8vLyBUeXBlcyBmb3Igd2hpY2ggYW55IGJpdCBwYXR0ZXJuIGlzIHZhbGlkLlxcbiAgIDg6XFx0Ly8vXFxuICAgOTpcXHQvLy8gTm90IGFsbCB0eXBlcyBhcmUgdmFsaWQgZm9yIGFsbCB2YWx1ZXMuIEZvciBleGFtcGxlLCBhIGBib29sYCBtdXN0IGJlIGVpdGhlciB6ZXJvIG9yIG9uZSwgc29cXG4gIDEwOlxcdC8vLyByZWFkaW5nIGFyYml0cmFyeSBieXRlcyBpbnRvIHNvbWV0aGluZyB0aGF0IGNvbnRhaW5zIGEgYGJvb2xgIGlzIG5vdCBva2F5LlxcbiAgMTE6XFx0Ly8vXFxuICAxMjpcXHQvLy8gSXQncyBva2F5IGZvciB0aGUgdHlwZSB0byBoYXZlIHBhZGRpbmcsIGFzIGluaXRpYWxpemluZyB0aG9zZSBieXRlcyBoYXMgbm8gZWZmZWN0LlxcbiAgMTM6XFx0Ly8vXFxuICAxNDpcXHQvLy8gIyBFeGFtcGxlc1xcbiAgMTU6XFx0Ly8vXFxuICAxNjpcXHQvLy8gYGBgXFxuICAxNzpcXHQvLy8gdXNlIGtlcm5lbDo6dHJhbnNtdXRlOjpGcm9tQnl0ZXM7XFxuICAxODpcXHQvLy9cXG4gIDE5OlxcdC8vLyAjIGZuIHRlc3QoKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjKClcXHUwMDNlIHtcXG4gIDIwOlxcdC8vLyBsZXQgcmF3ID0gWzEsIDIsIDMsIDRdO1xcbiAgMjE6XFx0Ly8vXFxuICAyMjpcXHQvLy8gbGV0IHJlc3VsdCA9IHUzMjo6ZnJvbV9ieXRlcyhcXHUwMDI2cmF3KT87XFxuICAyMzpcXHQvLy9cXG4gIDI0OlxcdC8vLyAjW2NmZyh0YXJnZXRfZW5kaWFuID0gXFxcImxpdHRsZVxcXCIpXVxcbiAgMjU6XFx0Ly8vIGFzc2VydF9lcSEoKnJlc3VsdCwgMHg0MDMwMjAxKTtcXG4gIDI2OlxcdC8vL1xcbiAgMjc6XFx0Ly8vICNbY2ZnKHRhcmdldF9lbmRpYW4gPSBcXFwiYmlnXFxcIildXFxuICAyODpcXHQvLy8gYXNzZXJ0X2VxISgqcmVzdWx0LCAweDEwMjAzMDQpO1xcbiAgMjk6XFx0Ly8vXFxuICAzMDpcXHQvLy8gIyBTb21lKCgpKSB9XFxuICAzMTpcXHQvLy8gIyB0ZXN0KCkub2tfb3IoRUlOVkFMKT87XFxuICAzMjpcXHQvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuICAzMzpcXHQvLy8gYGBgXFxuICAzNDpcXHQvLy9cXG4gIDM1OlxcdC8vLyAjIFNhZmV0eVxcbiAgMzY6XFx0Ly8vXFxuICAzNzpcXHQvLy8gQWxsIGJpdC1wYXR0ZXJucyBtdXN0IGJlIHZhbGlkIGZvciB0aGlzIHR5cGUuIFRoaXMgdHlwZSBtdXN0IG5vdCBoYXZlIGludGVyaW9yIG11dGFiaWxpdHkuXFxuICAzODpcXHRwdWIgdW5zYWZlIHRyYWl0IEZyb21CeXRlcyB7XFxuICAzOTpcXHQgICAgLy8vIENvbnZlcnRzIGEgc2xpY2Ugb2YgYnl0ZXMgdG8gYSByZWZlcmVuY2UgdG8gYFNlbGZgLlxcbiAgNDA6XFx0ICAgIC8vL1xcbiAgNDE6XFx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcXG4gIDQyOlxcdCAgICAvLy8gYFRgIGFuZCBkaWZmZXJlbnQgZnJvbSB6ZXJvLlxcbiAgNDM6XFx0ICAgIC8vL1xcbiAgNDQ6XFx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXFxuICA0NTpcXHQgICAgZm4gZnJvbV9ieXRlcyhieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2U2VsZlxcdTAwM2VcXG4gIDQ2OlxcdCAgICB3aGVyZVxcbiAgNDc6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gIDQ4OlxcdCAgICB7XFxuICA0OTpcXHQgICAgICAgIGxldCBzbGljZV9wdHIgPSBieXRlcy5hc19wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDUwOlxcdCAgICAgICAgbGV0IHNpemUgPSBzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDUxOlxcdFxcbiAgNTI6XFx0ICAgICAgICBpZiBieXRlcy5sZW4oKSA9PSBzaXplIFxcdTAwMjZcXHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xcbiAgNTM6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiBTaXplIGFuZCBhbGlnbm1lbnQgd2VyZSBqdXN0IGNoZWNrZWQuXFxuICA1NDpcXHQgICAgICAgICAgICB1bnNhZmUgeyBTb21lKFxcdTAwMjYqc2xpY2VfcHRyKSB9XFxuICA1NTpcXHQgICAgICAgIH0gZWxzZSB7XFxuICA1NjpcXHQgICAgICAgICAgICBOb25lXFxuICA1NzpcXHQgICAgICAgIH1cXG4gIDU4OlxcdCAgICB9XFxuICA1OTpcXHRcXG4gIDYwOlxcdCAgICAvLy8gQ29udmVydHMgdGhlIGJlZ2lubmluZyBvZiBgYnl0ZXNgIHRvIGEgcmVmZXJlbmNlIHRvIGBTZWxmYC5cXG4gIDYxOlxcdCAgICAvLy9cXG4gIDYyOlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNgXSwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IGBieXRlc2AgZG9lcyBub3RcXG4gIDYzOlxcdCAgICAvLy8gbmVlZCB0byBiZSB0aGUgc2FtZSBzaXplIG9mIGBTZWxmYCAtIHRoZSBhcHByb3ByaWF0ZSBwb3J0aW9uIGlzIGN1dCBmcm9tIHRoZSBiZWdpbm5pbmcgb2ZcXG4gIDY0OlxcdCAgICAvLy8gYGJ5dGVzYCwgYW5kIHRoZSByZW1haW5kZXIgcmV0dXJuZWQgYWxvbmdzaWRlIGBTZWxmYC5cXG4gIDY1OlxcdCAgICBmbiBmcm9tX2J5dGVzX3ByZWZpeChieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2MoXFx1MDAyNlNlbGYsIFxcdTAwMjZbdThdKVxcdTAwM2VcXG4gIDY2OlxcdCAgICB3aGVyZVxcbiAgNjc6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gIDY4OlxcdCAgICB7XFxuICA2OTpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfY2hlY2tlZChzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKSk/O1xcbiAgNzA6XFx0XFxuICA3MTpcXHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXMocHJlZml4KS5tYXAofHN8IChzLCByZW1haW5kZXIpKVxcbiAgNzI6XFx0ICAgIH1cXG4gIDczOlxcdFxcbiAgNzQ6XFx0ICAgIC8vLyBDb252ZXJ0cyBhIG11dGFibGUgc2xpY2Ugb2YgYnl0ZXMgdG8gYSByZWZlcmVuY2UgdG8gYFNlbGZgLlxcbiAgNzU6XFx0ICAgIC8vL1xcbiAgNzY6XFx0ICAgIC8vLyBTdWNjZWVkcyBpZiB0aGUgcmVmZXJlbmNlIGlzIHByb3Blcmx5IGFsaWduZWQsIGFuZCB0aGUgc2l6ZSBvZiBgYnl0ZXNgIGlzIGVxdWFsIHRvIHRoYXQgb2ZcXG4gIDc3OlxcdCAgICAvLy8gYFRgIGFuZCBkaWZmZXJlbnQgZnJvbSB6ZXJvLlxcbiAgNzg6XFx0ICAgIC8vL1xcbiAgNzk6XFx0ICAgIC8vLyBPdGhlcndpc2UsIHJldHVybnMgW2BOb25lYF0uXFxuICA4MDpcXHQgICAgZm4gZnJvbV9ieXRlc19tdXQoYnl0ZXM6IFxcdTAwMjZtdXQgW3U4XSkgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1xcdTAwMjZtdXQgU2VsZlxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NDAuMjY3NDI5MDA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODQ1MDI3MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0J3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhlIGNvZGUsIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYHJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYHRyYW5zbXV0ZS5yc2Agd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC4gSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYgaGVyZSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIHJlaW50ZXJwcmV0YXRpb25zIG9mIG1lbW9yeSBhbmQgcG9zc2libHkgc29tZSB1bmNoZWNrZWQgdHlwZSBjb252ZXJzaW9ucy4gSSdtIGhvcGluZyB0byBzZWUgd2VsbC1jb21tZW50ZWQgY29kZSwgZ2l2ZW4gdGhlIGluaGVyZW50IGRhbmdlcnMgb2YgdW5jaGVja2VkIHRyYW5zbXV0YXRpb24uIEknbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlcyBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gSSB3YW50IHRvIHNwb3QgYW55IHBsYWNlcyB3aGVyZSB0aGUgY29tcGlsZXIgbWlnaHQgYmUgbGVhbmluZyBvbiBvcHRpbWl6YXRpb25zLCBhbmQgaG93IHRoZSBjb2RlIGd1YXJkcyBhZ2FpbnN0IHRoYXQuIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkncmUgbWFuYWdpbmcgbGlmZXRpbWVzIGlmIHBvaW50ZXJzIGFyZSBpbnZvbHZlZCBpbiB0cmFuc211dGF0aW9uLiBJJ20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYHVuc2FmZWAgYmxvY2tzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIGludmFyaWFudHMgYXJlIHZlcnkgZXhwbGljaXRseSBkb2N1bWVudGVkLiBMZXQncyBzZWUgaWYgaXQncyB1c2luZyB0aGUgc3RhbmRhcmQgbGlicmFyeSBgdHJhbnNtdXRlYCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBmb3Iga2VybmVsLWxldmVsIG9wZXJhdGlvbnMuLi4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHBvdGVudGlhbCBpc3N1ZXMgYXJvdW5kIGFsaWFzaW5nIGFuZCBkYXRhIHJhY2VzIGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudC4gSSdtIGFsc28gaG9waW5nIHRoZXkncmUgYXZvaWRpbmcgYW55IHVuZGVmaW5lZCBiZWhhdmlvciwgb2YgY291cnNlISBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjI4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTo0Mi45NTE5MzU0NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL3RyYW5zbXV0ZS5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHQgICAgd2hlcmVcXG4gIDgyOlxcdCAgICAgICAgU2VsZjogQXNCeXRlcyArIFNpemVkLFxcbiAgODM6XFx0ICAgIHtcXG4gIDg0OlxcdCAgICAgICAgbGV0IHNsaWNlX3B0ciA9IGJ5dGVzLmFzX211dF9wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDg1OlxcdCAgICAgICAgbGV0IHNpemUgPSBzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0ICAgICAgICBpZiBieXRlcy5sZW4oKSA9PSBzaXplIFxcdTAwMjZcXHUwMDI2IHNsaWNlX3B0ci5pc19hbGlnbmVkKCkge1xcbiAgODg6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiBTaXplIGFuZCBhbGlnbm1lbnQgd2VyZSBqdXN0IGNoZWNrZWQuXFxuICA4OTpcXHQgICAgICAgICAgICB1bnNhZmUgeyBTb21lKFxcdTAwMjZtdXQgKnNsaWNlX3B0cikgfVxcbiAgOTA6XFx0ICAgICAgICB9IGVsc2Uge1xcbiAgOTE6XFx0ICAgICAgICAgICAgTm9uZVxcbiAgOTI6XFx0ICAgICAgICB9XFxuICA5MzpcXHQgICAgfVxcbiAgOTQ6XFx0XFxuICA5NTpcXHQgICAgLy8vIENvbnZlcnRzIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYCB0byBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGBTZWxmYC5cXG4gIDk2OlxcdCAgICAvLy9cXG4gIDk3OlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfbXV0YF0sIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBgYnl0ZXNgIGRvZXNcXG4gIDk4OlxcdCAgICAvLy8gbm90IG5lZWQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBvZiBgU2VsZmAgLSB0aGUgYXBwcm9wcmlhdGUgcG9ydGlvbiBpcyBjdXQgZnJvbSB0aGUgYmVnaW5uaW5nXFxuICA5OTpcXHQgICAgLy8vIG9mIGBieXRlc2AsIGFuZCB0aGUgcmVtYWluZGVyIHJldHVybmVkIGFsb25nc2lkZSBgU2VsZmAuXFxuIDEwMDpcXHQgICAgZm4gZnJvbV9ieXRlc19tdXRfcHJlZml4KGJ5dGVzOiBcXHUwMDI2bXV0IFt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2MoXFx1MDAyNm11dCBTZWxmLCBcXHUwMDI2bXV0IFt1OF0pXFx1MDAzZVxcbiAxMDE6XFx0ICAgIHdoZXJlXFxuIDEwMjpcXHQgICAgICAgIFNlbGY6IEFzQnl0ZXMgKyBTaXplZCxcXG4gMTAzOlxcdCAgICB7XFxuIDEwNDpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfbXV0X2NoZWNrZWQoc2l6ZV9vZjo6XFx1MDAzY1NlbGZcXHUwMDNlKCkpPztcXG4gMTA1OlxcdFxcbiAxMDY6XFx0ICAgICAgICBTZWxmOjpmcm9tX2J5dGVzX211dChwcmVmaXgpLm1hcCh8c3wgKHMsIHJlbWFpbmRlcikpXFxuIDEwNzpcXHQgICAgfVxcbiAxMDg6XFx0XFxuIDEwOTpcXHQgICAgLy8vIENyZWF0ZXMgYW4gb3duZWQgaW5zdGFuY2Ugb2YgYFNlbGZgIGJ5IGNvcHlpbmcgYGJ5dGVzYC5cXG4gMTEwOlxcdCAgICAvLy9cXG4gMTExOlxcdCAgICAvLy8gVW5saWtlIFtgRnJvbUJ5dGVzOjpmcm9tX2J5dGVzYF0sIHdoaWNoIHJlcXVpcmVzIGFsaWduZWQgaW5wdXQsIHRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uXFxuIDExMjpcXHQgICAgLy8vIG5vbi1hbGlnbmVkIGRhdGEgYXQgdGhlIGNvc3Qgb2YgYSBjb3B5LlxcbiAxMTM6XFx0ICAgIGZuIGZyb21fYnl0ZXNfY29weShieXRlczogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NTZWxmXFx1MDAzZVxcbiAxMTQ6XFx0ICAgIHdoZXJlXFxuIDExNTpcXHQgICAgICAgIFNlbGY6IFNpemVkLFxcbiAxMTY6XFx0ICAgIHtcXG4gMTE3OlxcdCAgICAgICAgaWYgYnl0ZXMubGVuKCkgPT0gc2l6ZV9vZjo6XFx1MDAzY1NlbGZcXHUwMDNlKCkge1xcbiAxMTg6XFx0ICAgICAgICAgICAgLy8gU0FGRVRZOiB3ZSBqdXN0IHZlcmlmaWVkIHRoYXQgYGJ5dGVzYCBoYXMgdGhlIHNhbWUgc2l6ZSBhcyBgU2VsZmAsIGFuZCBwZXIgdGhlXFxuIDExOTpcXHQgICAgICAgICAgICAvLyBpbnZhcmlhbnRzIG9mIGBGcm9tQnl0ZXNgLCBhbnkgYnl0ZSBzZXF1ZW5jZSBvZiB0aGUgY29ycmVjdCBsZW5ndGggaXMgYSB2YWxpZCB2YWx1ZVxcbiAxMjA6XFx0ICAgICAgICAgICAgLy8gZm9yIGBTZWxmYC5cXG4gMTIxOlxcdCAgICAgICAgICAgIFNvbWUodW5zYWZlIHsgY29yZTo6cHRyOjpyZWFkX3VuYWxpZ25lZChieXRlcy5hc19wdHIoKS5jYXN0OjpcXHUwMDNjU2VsZlxcdTAwM2UoKSkgfSlcXG4gMTIyOlxcdCAgICAgICAgfSBlbHNlIHtcXG4gMTIzOlxcdCAgICAgICAgICAgIE5vbmVcXG4gMTI0OlxcdCAgICAgICAgfVxcbiAxMjU6XFx0ICAgIH1cXG4gMTI2OlxcdFxcbiAxMjc6XFx0ICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIGluc3RhbmNlIG9mIGBTZWxmYCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYGJ5dGVzYC5cXG4gMTI4OlxcdCAgICAvLy9cXG4gMTI5OlxcdCAgICAvLy8gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBbYFNlbGY6OmZyb21fYnl0ZXNfY29weWBdLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgYGJ5dGVzYCBkb2VzXFxuIDEzMDpcXHQgICAgLy8vIG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIHNpemUgb2YgYFNlbGZgIC0gdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24gaXMgY3V0IGZyb20gdGhlIGJlZ2lubmluZ1xcbiAxMzE6XFx0ICAgIC8vLyBvZiBgYnl0ZXNgLCBhbmQgdGhlIHJlbWFpbmRlciByZXR1cm5lZCBhbG9uZ3NpZGUgYFNlbGZgLlxcbiAxMzI6XFx0ICAgIGZuIGZyb21fYnl0ZXNfY29weV9wcmVmaXgoYnl0ZXM6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjKFNlbGYsIFxcdTAwMjZbdThdKVxcdTAwM2VcXG4gMTMzOlxcdCAgICB3aGVyZVxcbiAxMzQ6XFx0ICAgICAgICBTZWxmOiBTaXplZCxcXG4gMTM1OlxcdCAgICB7XFxuIDEzNjpcXHQgICAgICAgIGxldCAocHJlZml4LCByZW1haW5kZXIpID0gYnl0ZXMuc3BsaXRfYXRfY2hlY2tlZChzaXplX29mOjpcXHUwMDNjU2VsZlxcdTAwM2UoKSk/O1xcbiAxMzc6XFx0XFxuIDEzODpcXHQgICAgICAgIFNlbGY6OmZyb21fYnl0ZXNfY29weShwcmVmaXgpLm1hcCh8c3wgKHMsIHJlbWFpbmRlcikpXFxuIDEzOTpcXHQgICAgfVxcbiAxNDA6XFx0fVxcbiAxNDE6XFx0XFxuIDE0MjpcXHRtYWNyb19ydWxlcyEgaW1wbF9mcm9tYnl0ZXMge1xcbiAxNDM6XFx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XFx1MDAzZSB7XFxuIDE0NDpcXHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXFxuIDE0NTpcXHQgICAgICAgICQodW5zYWZlIGltcGwkKCQoJGdlbmVyaWNzKSopPyBGcm9tQnl0ZXMgZm9yICR0IHt9KSpcXG4gMTQ2OlxcdCAgICB9O1xcbiAxNDc6XFx0fVxcbiAxNDg6XFx0XFxuIDE0OTpcXHRpbXBsX2Zyb21ieXRlcyEge1xcbiAxNTA6XFx0ICAgIC8vIFNBRkVUWTogSW5oYWJpdGVkIFpTVHMgb25seSBoYXZlIG9uZSBwb3NzaWJsZSBiaXQgcGF0dGVybiwgYW5kIHRoZXNlIHR3byBoYXZlIG5vIGludmFyaWFudC5cXG4gMTUxOlxcdCAgICAoKSxcXG4gMTUyOlxcdCAgICB7XFx1MDAzY1RcXHUwMDNlfSBjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlLFxcbiAxNTM6XFx0XFxuIDE1NDpcXHQgICAgLy8gU0FGRVRZOiBBbGwgYml0IHBhdHRlcm5zIGFyZSBhY2NlcHRhYmxlIHZhbHVlcyBvZiB0aGUgdHlwZXMgYmVsb3cuXFxuIDE1NTpcXHQgICAgdTgsIHUxNiwgdTMyLCB1NjQsIHVzaXplLFxcbiAxNTY6XFx0ICAgIGk4LCBpMTYsIGkzMiwgaTY0LCBpc2l6ZSxcXG4gMTU3OlxcdFxcbiAxNTg6XFx0ICAgIC8vIFNBRkVUWTogSWYgYWxsIGJpdCBwYXR0ZXJucyBhcmUgYWNjZXB0YWJsZSBmb3IgaW5kaXZpZHVhbCB2YWx1ZXMgaW4gYW4gYXJyYXksIHRoZW4gYWxsIGJpdFxcbiAxNTk6XFx0ICAgIC8vIHBhdHRlcm5zIGFyZSBhbHNvIGFjY2VwdGFibGUgZm9yIGFycmF5cyBvZiB0aGF0IHR5cGUuXFxuIDE2MDpcXHQgICAge1xcdTAwM2NUOiBGcm9tQnl0ZXNcXHUwMDNlfSBbVF0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQyLjk1MjA2MzA0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDA0Njk5Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiB0aGlzIHBhcnRpY3VsYXIgYXJlYSBvZiB0aGUga2VybmVsLCBhbmQgbm93IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIGNvbnRleHQgSSdtIG9wZXJhdGluZyB3aXRoaW4gZGVtYW5kcyBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcsIHNvIEknbSBub3QganVzdCBnb2luZyB0byBzdG9wIGhlcmUuIEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIHJlZ2FyZGluZyBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYC4gSSBuZWVkIHRvIHJldmlldyB0aGUgZW50aXJlIGZpbGUuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMsIGFuZCwgb2YgY291cnNlLCBhbnkgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSBpbXByb3BlciB1c2Ugb3IgaW1wbGVtZW50YXRpb24gb2YgYHRyYW5zbXV0ZWAuIEl0J3MgZXNzZW50aWFsIHRvIGNvbnNpZGVyIHRoZSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGtlcm5lbCBtb2R1bGVzIGFuZCBob3cgdGhpcyBtZWNoYW5pc20gZml0cyB3aXRoaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBkZXNpZ24uIEknbSBhbnRpY2lwYXRpbmcgdGhhdCB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHJldmVhbCBtb3JlIGluc2lnaHRzIGludG8gdGhlIGRlc2lnbiB0cmFkZS1vZmZzIGFuZCBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIGJlIHByZXBhcmVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyB3aGVyZSBmdXJ0aGVyIHNjcnV0aW55IGlzIHdhcnJhbnRlZC4gTGV0J3Mgc2VlIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkyNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NDQuOTU2NzY1MjExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC90cmFuc211dGUucnNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYxOlxcdCAgICB7XFx1MDAzY1Q6IEZyb21CeXRlcywgY29uc3QgTjogdXNpemVcXHUwMDNlfSBbVDsgTl0sXFxuIDE2MjpcXHR9XFxuIDE2MzpcXHRcXG4gMTY0OlxcdC8vLyBUeXBlcyB0aGF0IGNhbiBiZSB2aWV3ZWQgYXMgYW4gaW1tdXRhYmxlIHNsaWNlIG9mIGluaXRpYWxpemVkIGJ5dGVzLlxcbiAxNjU6XFx0Ly8vXFxuIDE2NjpcXHQvLy8gSWYgYSBzdHJ1Y3QgaW1wbGVtZW50cyB0aGlzIHRyYWl0LCB0aGVuIGl0IGlzIG9rYXkgdG8gY29weSBpdCBieXRlLWZvci1ieXRlIHRvIHVzZXJzcGFjZS4gVGhpc1xcbiAxNjc6XFx0Ly8vIG1lYW5zIHRoYXQgaXQgc2hvdWxkIG5vdCBoYXZlIGFueSBwYWRkaW5nLCBhcyBwYWRkaW5nIGJ5dGVzIGFyZSB1bmluaXRpYWxpemVkLiBSZWFkaW5nXFxuIDE2ODpcXHQvLy8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm90IGp1c3QgdW5kZWZpbmVkIGJlaGF2aW9yLCBpdCBtYXkgZXZlbiBsZWFkIHRvIGxlYWtpbmcgc2Vuc2l0aXZlXFxuIDE2OTpcXHQvLy8gaW5mb3JtYXRpb24gb24gdGhlIHN0YWNrIHRvIHVzZXJzcGFjZS5cXG4gMTcwOlxcdC8vL1xcbiAxNzE6XFx0Ly8vIFRoZSBzdHJ1Y3Qgc2hvdWxkIGFsc28gbm90IGhvbGQga2VybmVsIHBvaW50ZXJzLCBhcyBrZXJuZWwgcG9pbnRlciBhZGRyZXNzZXMgYXJlIGFsc28gY29uc2lkZXJlZFxcbiAxNzI6XFx0Ly8vIHNlbnNpdGl2ZS4gSG93ZXZlciwgbGVha2luZyBrZXJuZWwgcG9pbnRlcnMgaXMgbm90IGNvbnNpZGVyZWQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ5IFJ1c3QsIHNvXFxuIDE3MzpcXHQvLy8gdGhpcyBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBidXQgbm90IGEgc2FmZXR5IHJlcXVpcmVtZW50LlxcbiAxNzQ6XFx0Ly8vXFxuIDE3NTpcXHQvLy8gIyBTYWZldHlcXG4gMTc2OlxcdC8vL1xcbiAxNzc6XFx0Ly8vIFZhbHVlcyBvZiB0aGlzIHR5cGUgbWF5IG5vdCBjb250YWluIGFueSB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGlzIHR5cGUgbXVzdCBub3QgaGF2ZSBpbnRlcmlvclxcbiAxNzg6XFx0Ly8vIG11dGFiaWxpdHkuXFxuIDE3OTpcXHRwdWIgdW5zYWZlIHRyYWl0IEFzQnl0ZXMge1xcbiAxODA6XFx0ICAgIC8vLyBSZXR1cm5zIGBzZWxmYCBhcyBhIHNsaWNlIG9mIGJ5dGVzLlxcbiAxODE6XFx0ICAgIGZuIGFzX2J5dGVzKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2W3U4XSB7XFxuIDE4MjpcXHQgICAgICAgIC8vIENBU1Q6IGBTZWxmYCBpbXBsZW1lbnRzIGBBc0J5dGVzYCB0aHVzIGFsbCBieXRlcyBvZiBgc2VsZmAgYXJlIGluaXRpYWxpemVkLlxcbiAxODM6XFx0ICAgICAgICBsZXQgZGF0YSA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikuY2FzdDo6XFx1MDAzY3U4XFx1MDAzZSgpO1xcbiAxODQ6XFx0ICAgICAgICBsZXQgbGVuID0gY29yZTo6bWVtOjpzaXplX29mX3ZhbChzZWxmKTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0ICAgICAgICAvLyBTQUZFVFk6IGBkYXRhYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHJlYWRzIG9mIGBsZW4gKiBzaXplb2Y6OlxcdTAwM2N1OFxcdTAwM2UoKWAgYnl0ZXMuXFxuIDE4NzpcXHQgICAgICAgIHVuc2FmZSB7IGNvcmU6OnNsaWNlOjpmcm9tX3Jhd19wYXJ0cyhkYXRhLCBsZW4pIH1cXG4gMTg4OlxcdCAgICB9XFxuIDE4OTpcXHRcXG4gMTkwOlxcdCAgICAvLy8gUmV0dXJucyBgc2VsZmAgYXMgYSBtdXRhYmxlIHNsaWNlIG9mIGJ5dGVzLlxcbiAxOTE6XFx0ICAgIGZuIGFzX2J5dGVzX211dChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFxcdTAwMjZtdXQgW3U4XVxcbiAxOTI6XFx0ICAgIHdoZXJlXFxuIDE5MzpcXHQgICAgICAgIFNlbGY6IEZyb21CeXRlcyxcXG4gMTk0OlxcdCAgICB7XFxuIDE5NTpcXHQgICAgICAgIC8vIENBU1Q6IGBTZWxmYCBpbXBsZW1lbnRzIGJvdGggYEFzQnl0ZXNgIGFuZCBgRnJvbUJ5dGVzYCB0aHVzIG1ha2luZyBgU2VsZmBcXG4gMTk2OlxcdCAgICAgICAgLy8gYmktZGlyZWN0aW9uYWxseSB0cmFuc211dGFibGUgdG8gYFt1ODsgc2l6ZV9vZl92YWwoc2VsZildYC5cXG4gMTk3OlxcdCAgICAgICAgbGV0IGRhdGEgPSBjb3JlOjpwdHI6OmZyb21fbXV0KHNlbGYpLmNhc3Q6OlxcdTAwM2N1OFxcdTAwM2UoKTtcXG4gMTk4OlxcdCAgICAgICAgbGV0IGxlbiA9IGNvcmU6Om1lbTo6c2l6ZV9vZl92YWwoc2VsZik7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdCAgICAgICAgLy8gU0FGRVRZOiBgZGF0YWAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciByZWFkIGFuZCB3cml0ZXMgb2YgYGxlbiAqIHNpemVvZjo6XFx1MDAzY3U4XFx1MDAzZSgpYFxcbiAyMDE6XFx0ICAgICAgICAvLyBieXRlcy5cXG4gMjAyOlxcdCAgICAgICAgdW5zYWZlIHsgY29yZTo6c2xpY2U6OmZyb21fcmF3X3BhcnRzX211dChkYXRhLCBsZW4pIH1cXG4gMjAzOlxcdCAgICB9XFxuIDIwNDpcXHR9XFxuIDIwNTpcXHRcXG4gMjA2OlxcdG1hY3JvX3J1bGVzISBpbXBsX2FzYnl0ZXMge1xcbiAyMDc6XFx0ICAgICgkKCQoeyQoJGdlbmVyaWNzOnR0KSp9KT8gJHQ6dHksICkqKSA9XFx1MDAzZSB7XFxuIDIwODpcXHQgICAgICAgIC8vIFNBRkVUWTogU2FmZXR5IGNvbW1lbnRzIHdyaXR0ZW4gaW4gdGhlIG1hY3JvIGludm9jYXRpb24uXFxuIDIwOTpcXHQgICAgICAgICQodW5zYWZlIGltcGwkKCQoJGdlbmVyaWNzKSopPyBBc0J5dGVzIGZvciAkdCB7fSkqXFxuIDIxMDpcXHQgICAgfTtcXG4gMjExOlxcdH1cXG4gMjEyOlxcdFxcbiAyMTM6XFx0aW1wbF9hc2J5dGVzISB7XFxuIDIxNDpcXHQgICAgLy8gU0FGRVRZOiBJbmhhYml0ZWQgWlNUcyBvbmx5IGhhdmUgb25lIHBvc3NpYmxlIGJpdCBwYXR0ZXJuLCBhbmQgdGhlc2UgdHdvIGhhdmUgbm8gaW52YXJpYW50LlxcbiAyMTU6XFx0ICAgICgpLFxcbiAyMTY6XFx0ICAgIHtcXHUwMDNjVFxcdTAwM2V9IGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGFcXHUwMDNjVFxcdTAwM2UsXFxuIDIxNzpcXHRcXG4gMjE4OlxcdCAgICAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucy5cXG4gMjE5OlxcdCAgICB1OCwgdTE2LCB1MzIsIHU2NCwgdXNpemUsXFxuIDIyMDpcXHQgICAgaTgsIGkxNiwgaTMyLCBpNjQsIGlzaXplLFxcbiAyMjE6XFx0ICAgIGJvb2wsXFxuIDIyMjpcXHQgICAgY2hhcixcXG4gMjIzOlxcdCAgICBzdHIsXFxuIDIyNDpcXHRcXG4gMjI1OlxcdCAgICAvLyBTQUZFVFk6IElmIGluZGl2aWR1YWwgdmFsdWVzIGluIGFuIGFycmF5IGhhdmUgbm8gdW5pbml0aWFsaXplZCBwb3J0aW9ucywgdGhlbiB0aGUgYXJyYXlcXG4gMjI2OlxcdCAgICAvLyBpdHNlbGYgZG9lcyBub3QgaGF2ZSBhbnkgdW5pbml0aWFsaXplZCBwb3J0aW9ucyBlaXRoZXIuXFxuIDIyNzpcXHQgICAge1xcdTAwM2NUOiBBc0J5dGVzXFx1MDAzZX0gW1RdLFxcbiAyMjg6XFx0ICAgIHtcXHUwMDNjVDogQXNCeXRlcywgY29uc3QgTjogdXNpemVcXHUwMDNlfSBbVDsgTl0sXFxuIDIyOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjQ0Ljk1NjkwMzc1MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NzE1MTc5Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWmVyb2NvcHkgTWlncmF0aW9uIGluIHRoZSBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgaGFwcGVuaW5nLiBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdoZXJlIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgYXdheSBmcm9tIGB0cmFuc211dGVgJ3MgYEFzQnl0ZXNgIGFuZCBgRnJvbUJ5dGVzYCB0cmFpdHMsIGFuZCBpbnN0ZWFkLCBpdCdzIGxldmVyYWdpbmcgYHplcm9jb3B5YCdzIGBGcm9tQnl0ZXNgIGFuZCBgSW50b0J5dGVzYCB0cmFpdHMuIFRoZSBjb3JlIGlkZWEgaXMgdG8gc2ltcGxpZnkgYW5kIHBvdGVudGlhbGx5IGltcHJvdmUgbWVtb3J5IHNhZmV0eSBhbmQgZWZmaWNpZW5jeSBieSB1c2luZyBgemVyb2NvcHlgIGZvciBzYWZlLCB6ZXJvLWNvcHkgY29udmVyc2lvbnMgYmV0d2VlbiBSdXN0IGRhdGEgc3RydWN0dXJlcyBhbmQgYnl0ZSByZXByZXNlbnRhdGlvbnMsIGEgd2VsbCBlc3RhYmxpc2hlZCBwYXR0ZXJuLlxuXG5TcGVjaWZpY2FsbHksIGluIGBydXN0L2tlcm5lbC9kbWEucnNgLCBgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgLCBhbmQgYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgLCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgaW1wb3J0aW5nIGB0cmFuc211dGU6OntBc0J5dGVzLCBGcm9tQnl0ZXN9YC4gVGhlIHBhdGNoIHJlbW92ZXMgdGhlIHVudXNlZCBpbXBvcnRzIGFuZCB1cGRhdGVzIHRvIGBJbnRvQnl0ZXNgIGFuZCB0aGUgYEZyb21CeXRlc2AgdGhhdCBpcyBwYXJ0IG9mIHRoZSBgcHJlbHVkZWAsIHdoaWNoLCBpbiB0aGlzIGNvbnRleHQsIG9yaWdpbmF0ZXMgZnJvbSBgemVyb2NvcHlgLlxuXG5BIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmIHJldmVhbHMgdGhlIGNoYW5nZXMgaW4gYHJ1c3Qva2VybmVsL2RtYS5yc2A6ICBgQ29oZXJlbnRCb3hgIGFuZCBgQ29oZXJlbnRgIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZWQgdG8gcmVxdWlyZSBgQXNCeXRlcyArIEZyb21CeXRlc2Agbm93IHJlcXVpcmUgYEludG9CeXRlcyArIEZyb21CeXRlc2AsIGluZGljYXRpbmcgdGhlIHNoaWZ0LiBBZGRpdGlvbmFsbHksIHRoZSBgd3JpdGVfZG1hYCBmdW5jdGlvbiBhbmQgYHdyaXRlYCBtZXRob2RzIGluIGBVc2VyU2xpY2VXcml0ZXJgIGFyZSBhbHNvIHVwZGF0ZWQgdG8gdXNlIGBJbnRvQnl0ZXNgLiBTaW1pbGFybHksIHRoZSBgR2VubE1zZzo6cHV0YCBtZXRob2QgaW4gYG5ldGxpbmsucnNgIG5vdyB1c2VzIGBJbnRvQnl0ZXNgIGluc3RlYWQgb2YgYEFzQnl0ZXNgLlxuXG5NeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gcmV2aWV3IHRoZSBgZ2l0IGxvZ2AgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgb2YgdGhlIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBtb3RpdmF0aW9ucyBhbmQgYW55IHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEknZCBhbHNvIHNlYXJjaCBmb3IgcGxhY2VzIHdoZXJlIGBDb2hlcmVudEJveGAsIGB3cml0ZV9kbWFgLCBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAsIGFuZCBgR2VubE1zZzo6cHV0YCBhcmUgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgY29kZWJhc2UgaXMgY29uc2lzdGVudCBhbmQgdGhhdCB0aGUgY2hhbmdlIGhhc24ndCBpbnRyb2R1Y2VkIGFueSByZWdyZXNzaW9ucyBvciBuZXcgaXNzdWVzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gRE1BIGFuZCB1c2VyIHNwYWNlIG1lbW9yeSBhY2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDE1LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM1OjUyLjY3MjA4NTQxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMTIyMDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDb2hlcmVudEJveFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTEwLSAgICAgICAgQ29oZXJlbnQsXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2ZhbGNvbi5yczoxMTogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnMtMTItICAgICAgICBEbWFBZGRyZXNzLCAvL1xcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2ZhbGNvbi5ycz01OTY9ICAgIGZuIGRtYV9sb2FkXFx1MDAzY0Y6IEZhbGNvbkZpcm13YXJlXFx1MDAzY1RhcmdldCA9IEVcXHUwMDNlICsgRmFsY29uRG1hTG9hZGFibGVcXHUwMDNlKFxcdTAwMjZzZWxmLCBmdzogXFx1MDAyNkYpIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzLTYwMi0gICAgICAgICAgICAvLyBhY2NvcmRpbmdseSBhbmQgZmlsbCB3aXRoIGAwYC5cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmFsY29uLnJzOjYwMzogICAgICAgICAgICBsZXQgbXV0IGRtYV9vYmogPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9mYWxjb24ucnMtNjA0LSAgICAgICAgICAgICAgICBzZWxmLmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtNi0gICAgICAgIENvaGVyZW50LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6NzogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtOC0gICAgICAgIERhdGFEaXJlY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzPTcwPSAgICBwdWIoY3JhdGUpIGZuIG5ld1xcdTAwM2MnYVxcdTAwM2UoXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUvZ3NwLnJzLTEyMi0gICAgICAgICAgICAgICAgICAgIC8vIHRhYmxlLlxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnM6MTIzOiAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBsZXZlbDAgPSBDb2hlcmVudEJveDo6XFx1MDAzY1t1NjRdXFx1MDAzZTo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS9nc3AucnMtMTI0LSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtMTAtICAgICAgICBDb2hlcmVudCxcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjExOiAgICAgICAgQ29oZXJlbnRCb3gsXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL2dzcC5ycy0xMi0gICAgICAgIENvaGVyZW50VmlldyxcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnM9MTY0PSAgICBwdWIoY3JhdGUpIGZuIG5ldyhwZGV2OiBcXHUwMDI2cGNpOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmLCBFcnJvclxcdTAwM2UgKyAnXyB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzLTE3OC0gICAgICAgICAgICAgICAgbGlib3M6IHtcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwLnJzOjE3OTogICAgICAgICAgICAgICAgICAgIGxldCBtdXQgbGlib3MgPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AucnMtMTgwLSAgICAgICAgICAgICAgICAgICAgICAgIGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xNi0gICAgICAgIENvaGVyZW50LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5yczoxNzogICAgICAgIENvaGVyZW50Qm94LFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5ycy0xOC0gICAgICAgIERtYUFkZHJlc3MsIC8vXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnM9MjM3PSAgICBmbiBuZXcoZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjZGV2aWNlOjpCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnMtMjQwLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9nc3AvY21kcS5yczoyNDE6ICAgICAgICBsZXQgbXV0IGdzcF9tZW0gPSBDb2hlcmVudEJveDo6XFx1MDAzY0dzcE1lbVxcdTAwM2U6Onplcm9lZChkZXYsIEdGUF9LRVJORUwpPztcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3NwL2NtZHEucnMtMjQyLSAgICAgICAgZ3NwX21lbS5jcHVxLnR4ID0gTXNncVR4SGVhZGVyOjpuZXcoTVNHUV9TSVpFLCBSWF9IRFJfT0ZGLCBNU0dRX05VTV9QQUdFUyk7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9MzU2PSAgICBmbiBmcm9tKGRpcmVjdGlvbjogRGF0YURpcmVjdGlvbikgLVxcdTAwM2UgU2VsZiB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzY2LS8vL1xcbnJ1c3Qva2VybmVsL2RtYS5yczozNjc6Ly8vIFVubGlrZSBbYENvaGVyZW50YF0sIGEgW2BDb2hlcmVudEJveGBdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZnVsbHkgb3duZWQgYnkgdGhlIENQVSAtLSBpdHMgRE1BXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM2OC0vLy8gYWRkcmVzcyBpcyBub3QgZXhwb3NlZCBhbmQgaXQgY2Fubm90IGJlIGFjY2Vzc2VkIGJ5IGEgZGV2aWNlLiBUaGlzIG1lYW5zIGl0IGNhbiBzYWZlbHkgYmUgdXNlZFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM3MC0vLy9cXG5ydXN0L2tlcm5lbC9kbWEucnM6MzcxOi8vLyBBIHR5cGljYWwgdXNlIGlzIHRvIGFsbG9jYXRlIGEgW2BDb2hlcmVudEJveGBdLCBwb3B1bGF0ZSBpdCB3aXRoIG5vcm1hbCBDUFUgYWNjZXNzLCBhbmQgdGhlblxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzItLy8vIGNvbnZlcnQgaXQgaW50byBhIFtgQ29oZXJlbnRgXSBvYmplY3QgdG8gc2hhcmUgaXQgd2l0aCB0aGUgZGV2aWNlLlxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTM3NS0vLy9cXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzc2Oi8vLyBgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VgOlxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zNzctLy8vXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg0LS8vLyAgICAgQ29oZXJlbnQsXFxucnVzdC9rZXJuZWwvZG1hLnJzOjM4NTovLy8gICAgIENvaGVyZW50Qm94LFxcbnJ1c3Qva2VybmVsL2RtYS5ycy0zODYtLy8vIH07XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzg4LS8vLyAjIGZuIHRlc3QoZGV2OiBcXHUwMDI2RGV2aWNlXFx1MDAzY0JvdW5kXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6Mzg5Oi8vLyBsZXQgbXV0IGRtZW06IENvaGVyZW50Qm94XFx1MDAzY3U2NFxcdTAwM2UgPSBDb2hlcmVudEJveDo6emVyb2VkKGRldiwgR0ZQX0tFUk5FTCk/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy0zOTAtLy8vICpkbWVtID0gNDI7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtMzk0LS8vL1xcbnJ1c3Qva2VybmVsL2RtYS5yczozOTU6Ly8vIGBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlYDpcXG5ydXN0L2tlcm5lbC9kbWEucnMtMzk2LS8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQwNC0vLy8gICAgIENvaGVyZW50LFxcbnJ1c3Qva2VybmVsL2RtYS5yczo0MDU6Ly8vICAgICBDb2hlcmVudEJveCxcXG5ydXN0L2tlcm5lbC9kbWEucnMtNDA2LS8vLyB9O1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQwOC0vLy8gIyBmbiB0ZXN0KGRldjogXFx1MDAyNkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdCB7XFxucnVzdC9rZXJuZWwvZG1hLnJzOjQwOTovLy8gbGV0IG11dCBkbWVtOiBDb2hlcmVudEJveFxcdTAwM2NbdTY0XVxcdTAwM2UgPSBDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlKGRldiwgNCwgR0ZQX0tFUk5FTCk/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy00MTAtLy8vIGRtZW0uZmlsbCg0Mik7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDEzLS8vLyBgYGBcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE0OnB1YiBzdHJ1Y3QgQ29oZXJlbnRCb3hcXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkXFx1MDAzZShDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSk7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQxNS1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE2OmltcGxcXHUwMDNjVDogSW50b0J5dGVzICsgRnJvbUJ5dGVzXFx1MDAzZSBDb2hlcmVudEJveFxcdTAwM2NbVF1cXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDE3OiAgICAvLy8gW2BDb2hlcmVudEJveGBdIHZhcmlhbnQgb2YgW2BDb2hlcmVudDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNgXS5cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDE4LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDE5PSAgICBwdWIgZm4gemVyb2VkX3NsaWNlX3dpdGhfYXR0cnMoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDI3LVxcbnJ1c3Qva2VybmVsL2RtYS5yczo0Mjg6ICAgIC8vLyBTYW1lIGFzIFtDb2hlcmVudEJveDo6emVyb2VkX3NsaWNlX3dpdGhfYXR0cnNdLCBidXQgd2l0aCBgZG1hOjpBdHRycygwKWAuXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQyOS0gICAgI1tpbmxpbmVdXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NDQxPSAgICBwdWIgZm4gaW5pdF9hdFxcdTAwM2NFXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIGk6IHVzaXplLCBpbml0OiBpbXBsIEluaXRcXHUwMDNjVCwgRVxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ2My0gICAgLy8vXFxucnVzdC9rZXJuZWwvZG1hLnJzOjQ2NDogICAgLy8vIFRoaXMgaXMgdGhlIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6OmZyb21fc2xpY2Vfd2l0aF9hdHRyc2BdLlxcbnJ1c3Qva2VybmVsL2RtYS5ycy00NjUtICAgIC8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3My0gICAgLy8vICAgICBhdHRyczo6KixcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDc0OiAgICAvLy8gICAgIENvaGVyZW50Qm94XFxucnVzdC9rZXJuZWwvZG1hLnJzLTQ3NS0gICAgLy8vIH07XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNDc4LSAgICAvLy8gbGV0IGRhdGEgPSBbMHU4LCAxdTgsIDJ1OCwgM3U4XTtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NDc5OiAgICAvLy8gbGV0IGM6IENvaGVyZW50Qm94XFx1MDAzY1t1OF1cXHUwMDNlID1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NDgwOiAgICAvLy8gICAgIENvaGVyZW50Qm94Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnMoZGV2LCBcXHUwMDI2ZGF0YSwgR0ZQX0tFUk5FTCwgRE1BX0FUVFJfTk9fV0FSTik/O1xcbnJ1c3Qva2VybmVsL2RtYS5ycy00ODEtICAgIC8vL1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTQ4NT0gICAgcHViIGZuIGZyb21fc2xpY2Vfd2l0aF9hdHRycyhcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MDYtXFxucnVzdC9rZXJuZWwvZG1hLnJzOjUwNzogICAgLy8vIFBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgW2BDb2hlcmVudEJveDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzYF0sIGV4Y2VwdCB0aGVcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTA4LSAgICAvLy8gYGRtYV9hdHRyc2AgaXMgMCBieSBkZWZhdWx0Llxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzPTUxMD0gICAgcHViIGZuIGZyb21fc2xpY2UoXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTIxLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1MjI6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXNcXHUwMDNlIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnM6NTIzOiAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc2BdLCBidXQgZm9yIGEgc2luZ2xlIGVsZW1lbnQuXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUyNC0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvZG1hLnJzPTUyNT0gICAgcHViIGZuIHplcm9lZF93aXRoX2F0dHJzKFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUzMi1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NTMzOiAgICAvLy8gU2FtZSBhcyBbYENvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2VgXSwgYnV0IGZvciBhIHNpbmdsZSBlbGVtZW50LlxcbnJ1c3Qva2VybmVsL2RtYS5ycy01MzQtICAgICNbaW5saW5lXVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01MzU9ICAgIHB1YiBmbiB6ZXJvZWQoZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQm91bmRcXHUwMDNlLCBnZnBfZmxhZ3M6IGtlcm5lbDo6YWxsb2M6OkZsYWdzKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTUzOS1cXG5ydXN0L2tlcm5lbC9kbWEucnM6NTQwOmltcGxcXHUwMDNjVDogS25vd25TaXplICsgP1NpemVkXFx1MDAzZSBEZXJlZiBmb3IgQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01NDEtICAgIHR5cGUgVGFyZ2V0ID0gVDtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz01NDQ9ICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy01NTItXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU1MzppbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlcyArIEtub3duU2l6ZSArID9TaXplZFxcdTAwM2UgRGVyZWZNdXQgZm9yIENvaGVyZW50Qm94XFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9kbWEucnMtNTU0LSAgICAjW2lubGluZV1cXG5ydXN0L2tlcm5lbC9kbWEucnM9NTU1PSAgICBmbiBkZXJlZl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBcXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnMtNTYzLVxcbnJ1c3Qva2VybmVsL2RtYS5yczo1NjQ6aW1wbFxcdTAwM2NUOiBJbnRvQnl0ZXMgKyBGcm9tQnl0ZXMgKyBLbm93blNpemUgKyA/U2l6ZWRcXHUwMDNlIEZyb21cXHUwMDNjQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBDb2hlcmVudFxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvZG1hLnJzLTU2NS0gICAgI1tpbmxpbmVdXFxucnVzdC9rZXJuZWwvZG1hLnJzOjU2NjogICAgZm4gZnJvbSh2YWx1ZTogQ29oZXJlbnRCb3hcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbnJ1c3Qva2VybmVsL2RtYS5ycy01NjctICAgICAgICB2YWx1ZS4wXFxuLS1cXG5ydXN0L2tlcm5lbC9kbWEucnM9ODgxPSAgICBwdWIgZm4gZnJvbV9zbGljZV93aXRoX2F0dHJzKFxcbi0tXFxucnVzdC9rZXJuZWwvZG1hLnJzLTg4OS0gICAge1xcbnJ1c3Qva2VybmVsL2RtYS5yczo4OTA6ICAgICAgICBDb2hlcmVudEJveDo6ZnJvbV9zbGljZV93aXRoX2F0dHJzKGRldiwgZGF0YSwgZ2ZwX2ZsYWdzLCBkbWFfYXR0cnMpLm1hcChJbnRvOjppbnRvKVxcbnJ1c3Qva2VybmVsL2RtYS5ycy04OTEtICAgIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NTQuOTkzMzExNjAyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NDIxMTcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBhcm91bmQgYENvaGVyZW50Qm94YCwgc3BlY2lmaWNhbGx5IHdoZXJlIGl0J3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBgbm92YS1jb3JlYCBkcml2ZXIuIFRoYXQgaW1wbGllcyBpdCdzIGVpdGhlciBhbiBvdXQtb2YtdHJlZSwgc3RhZ2luZywgb3IgZXhwZXJpbWVudGFsIEdQVSBkcml2ZXIuIFNvLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9ncHUvbm92YS1jb3JlL2AgZGlyZWN0b3J5IGFuZCBsb29rIGZvciBhbnkgZGlyZWN0IHVzZXMgdGhlcmUuIEknbGwgYWxzbyBkbyBhIGJyb2FkZXIgc2NhbiBvZiBvdGhlciBsaWtlbHkgbG9jYXRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5UaGVuLCB3YWl0IGEgc2Vjb25kLCBJIHNob3VsZCBjaGVjayB0aGUgUnVzdCBrZXJuZWwgY29kZS4gSSdtIHRoaW5raW5nIG9mIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCwgYmVjYXVzZSB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IHNwb3RzIHdoZXJlIHNvbWV0aGluZyBsaWtlIGBDb2hlcmVudEJveGAgbWlnaHQgYmUgdXRpbGl6ZWQsIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IG9yIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBoZXJlOyBpdCdzIGVhc3kgdG8gZ2V0IHR1bm5lbCB2aXNpb24uXG5cbkZpbmFsbHksIHdoaWxlIEknbSBpbiBzZWFyY2ggbW9kZSwgSSdsbCBzd2l0Y2ggZ2VhcnMgdG8gZXhhbWluZSB0aGUgYnJvYWRlciBrZXJuZWwgdG8gc2VlIHdoZXJlIGBVc2VyU2xpY2VXcml0ZXJgIGFuZCBgR2VubE1zZ2AgYXJlIGJlaW5nIHVzZWQuIFRoZXNlIG1pZ2h0IHBvaW50IHRvIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyB0aGF0IEkgbWlnaHQgd2FudCB0byBleGFtaW5lLiBLZWVwaW5nIHRyYWNrIG9mIHRob3NlIHJlZmVyZW5jZXMgaXMga2V5IHRvIHNlZWluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDMyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzU6NTcuNDM1NDMxMjk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU2MjkxNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkdlbmxNc2dcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzLTctICAgICAgICBGYW1pbHksXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9uZXRsaW5rLnJzOjg6ICAgICAgICBHZW5sTXNnLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy05LSAgICAgICAgTXVsdGljYXN0R3JvdXAsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnM9Mjg9cHViIHN0cnVjdCBSZXBvcnQge1xcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5yczoyOTogICAgc2tiOiBHZW5sTXNnLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvbmV0bGluay5ycy0zMC19XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycz00OT0gICAgcHViIGZuIGdlbmxtc2dfcHV0KFxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTQtICAgICAgICBjbWQ6IHU4LFxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjU1OiAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NHZW5sTXNnLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNTYtICAgICAgICBsZXQgc2tiID0gc2VsZi5za2IuYXNfcHRyKCk7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy01OS0gICAgICAgIGxldCBoZHIgPSBOb25OdWxsOjpuZXcoaGRyKS5va19vcihBbGxvY0Vycm9yKT87XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM6NjA6ICAgICAgICBPayhHZW5sTXNnIHsgc2tiOiBzZWxmLCBoZHIgfSlcXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy02MS0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9NjU9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy03NS0vLy8gYGhkcmAgcmVmZXJlbmNlcyB0aGUgaGVhZGVyIGluIHRoaXMgbmV0bGluayBtZXNzYWdlLlxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjc2OnB1YiBzdHJ1Y3QgR2VubE1zZyB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtNzctICAgIHNrYjogTmV0bGlua1NrQnVmZixcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzLTgwLVxcbnJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzOjgxOmltcGwgR2VubE1zZyB7XFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtODItICAgIC8vLyBQdXRzIGFuIGF0dHJpYnV0ZSBpbnRvIHRoZSBtZXNzYWdlLlxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnM9MTE5PSAgICBwdWIgZm4gbXVsdGljYXN0KFxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnMtMTQwLX1cXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yczoxNDE6aW1wbCBEcm9wIGZvciBHZW5sTXNnIHtcXG5ydXN0L2tlcm5lbC9uZXQvbmV0bGluay5ycy0xNDItICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk9NDYxPWRlZiBfZ2VubF9sb2FkX2ZhbWlsaWVzKCk6XFxuLS1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNDgyLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weTo0ODM6ICAgICAgICAgICAgICAgIGdtID0gR2VubE1zZyhubF9tc2cpXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTQ4NC0gICAgICAgICAgICAgICAgZmFtID0ge31cXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weT01MDk9ZGVmIF9nZW5sX3BvbGljeV9kdW1wKGZhbWlseV9pZCwgb3ApOlxcbi0tXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5LTUzMy1cXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHk6NTM0OiAgICAgICAgICAgICAgICBnbSA9IEdlbmxNc2cobmxfbXNnKVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01MzUtICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIE5sQXR0cnMoZ20ucmF3KTpcXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTMtXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5OjU1NDpjbGFzcyBHZW5sTXNnOlxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS01NTUtICAgIGRlZiBfX2luaXRfXyhzZWxmLCBubF9tc2cpOlxcbi0tXFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5PTYwNj1jbGFzcyBHZW5sUHJvdG9jb2woTmV0bGlua1Byb3RvY29sKTpcXG4tLVxcbnRvb2xzL25ldC95bmwvcHl5bmwvbGliL3lubC5weS02MjMtICAgIGRlZiBfZGVjb2RlKHNlbGYsIG5sX21zZyk6XFxudG9vbHMvbmV0L3lubC9weXlubC9saWIveW5sLnB5OjYyNDogICAgICAgIHJldHVybiBHZW5sTXNnKG5sX21zZylcXG50b29scy9uZXQveW5sL3B5eW5sL2xpYi95bmwucHktNjI1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNTo1OS42OTE3Mjc2ODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkzNjM3Mzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRob3NlIGNvZGUgc25pcHBldHM6XG5cbioqRGlnZ2luZyBpbnRvIE5ldGxpbmsgYW5kIFVzZXIgTWVtb3J5IEFjY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB3ZSdyZSBoYW5kbGluZyBuZXR3b3JrIGludGVyZmFjZXMgYW5kIHVzZXItc3BhY2UgbWVtb3J5IGFjY2Vzcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL25ldGxpbmsucnNgIGJlY2F1c2UgSSByZWNhbGwgdGhhdCB1c2luZyBgR2VubE1zZ2AgaXMgcmVsZXZhbnQgaGVyZS4gTmV4dCwgSSB3YW50IHRvIHBpdm90IHRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGRhdGEgdHJhbnNmZXJzLiBJJ2xsIGZvY3VzIG9uIGB1YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgVXNlclNsaWNlV3JpdGVyOjp3cml0ZWAgYW5kIGB3cml0ZV9kbWFgIGFyZSBiZWluZyBjYWxsZWQsIGFzIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhvbGQgdGhlIGNyaXRpY2FsIG9wZXJhdGlvbnMgZm9yIHdyaXRpbmcgaW50byB1c2VyIG1lbW9yeSBzcGFjZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBzaGVkIGxpZ2h0IG9uIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkgcmlza3Mgb3IgYXJlYXMgd2hlcmUgd2UgbWlnaHQgYmUgc2VlaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIG5ldHdvcmsgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NDYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjowMS42MjgxMDU0MzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMxNjY3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVXNlclNsaWNlV3JpdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0yMy0gICAgdHlwZXM6OkZvcmVpZ25Pd25hYmxlLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoyNDogICAgdWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyLFxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5ycy0yNS19O1xcbi0tXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzPTk4PWZuIG5leHRfZGVidWdfaWQoKSAtXFx1MDAzZSB1c2l6ZSB7XFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA0LS8vLyBQcm92aWRlcyBhIHNpbmdsZSBwbGFjZSB0byB3cml0ZSBCaW5kZXIgcmV0dXJuIHZhbHVlcyB2aWEgdGhlXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzOjEwNTovLy8gc3VwcGxpZWQgYFVzZXJTbGljZVdyaXRlcmAuXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci9ydXN0X2JpbmRlcl9tYWluLnJzLTEwNi1wdWIoY3JhdGUpIHN0cnVjdCBCaW5kZXJSZXR1cm5Xcml0ZXJcXHUwMDNjJ2FcXHUwMDNlIHtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM6MTA3OiAgICB3cml0ZXI6IFVzZXJTbGljZVdyaXRlcixcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTA4LSAgICB0aHJlYWQ6IFxcdTAwMjYnYSBUaHJlYWQsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnM9MTExPWltcGxcXHUwMDNjJ2FcXHUwMDNlIEJpbmRlclJldHVybldyaXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcnVzdF9iaW5kZXJfbWFpbi5yczoxMTI6ICAgIGZuIG5ldyh3cml0ZXI6IFVzZXJTbGljZVdyaXRlciwgdGhyZWFkOiBcXHUwMDI2J2EgVGhyZWFkKSAtXFx1MDAzZSBTZWxmIHtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3J1c3RfYmluZGVyX21haW4ucnMtMTEzLSAgICAgICAgQmluZGVyUmV0dXJuV3JpdGVyIHsgd3JpdGVyLCB0aHJlYWQgfVxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjItICAgICAgICBVc2VyU2xpY2VSZWFkZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MjM6ICAgICAgICBVc2VyU2xpY2VXcml0ZXIsIC8vXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMjQtICAgIH0sXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz03MD0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzEtICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczo3MjogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtNzMtICAgICAgICBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9Nzk9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgwLSAgICAgICAgXFx1MDAyNnNlbGYsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6ODE6ICAgICAgICB3cml0ZXI6IFxcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTgyLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTkwPSAgICBmbiB3cml0ZV90b19zbGljZShcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05MS0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjkyOiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy05My0gICAgICAgIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xMDc9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEwOC0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjEwOTogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTEwLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzPTEyMj0gICAgZm4gd3JpdGVfdG9fc2xpY2UoXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTIzLSAgICAgICAgXFx1MDAyNnNlbGYsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM6MTI0OiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0xMjUtICAgICAgICBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0LFxcbi0tXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnM9MTM2PSAgICBmbiB3cml0ZV90b19zbGljZShcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycy0xMzctICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5yczoxMzg6ICAgICAgICB3cml0ZXI6IFxcdTAwMjZtdXQgVXNlclNsaWNlV3JpdGVyLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTEzOS0gICAgICAgIG9mZnNldDogXFx1MDAyNm11dCBmaWxlOjpPZmZzZXQsXFxuLS1cXG5ydXN0L2tlcm5lbC9kZWJ1Z2ZzL3RyYWl0cy5ycz0xNTE9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzLTE1Mi0gICAgICAgIFxcdTAwMjZzZWxmLFxcbnJ1c3Qva2VybmVsL2RlYnVnZnMvdHJhaXRzLnJzOjE1MzogICAgICAgIHdyaXRlcjogXFx1MDAyNm11dCBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvZGVidWdmcy90cmFpdHMucnMtMTU0LSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycy0yNy0gICAgc3luYzo6YXJlZjo6QVJlZixcXG5ydXN0L2tlcm5lbC9kbWEucnM6Mjg6ICAgIHVhY2Nlc3M6OlVzZXJTbGljZVdyaXRlciwgLy9cXG5ydXN0L2tlcm5lbC9kbWEucnMtMjktfTtcXG4tLVxcbnJ1c3Qva2VybmVsL2RtYS5ycz05NTA9ICAgIGZuIHdyaXRlX3RvX3NsaWNlKFxcbnJ1c3Qva2VybmVsL2RtYS5ycy05NTEtICAgICAgICBcXHUwMDI2c2VsZixcXG5ydXN0L2tlcm5lbC9kbWEucnM6OTUyOiAgICAgICAgd3JpdGVyOiBcXHUwMDI2bXV0IFVzZXJTbGljZVdyaXRlcixcXG5ydXN0L2tlcm5lbC9kbWEucnMtOTUzLSAgICAgICAgb2Zmc2V0OiBcXHUwMDI2bXV0IGZpbGU6Ok9mZnNldCxcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NjA9ICAgIHB1YiBmbiB3cmFwcGluZ19ieXRlX2FkZChzZWxmLCBhZGQ6IHVzaXplKSAtXFx1MDAzZSBVc2VyUHRyIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtODAtLy8vXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczo4MTovLy8gQ3JlYXRpbmcgYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZC9vciBbYFVzZXJTbGljZVdyaXRlcmBdIGNvbnN1bWVzIHRoZSBgVXNlclNsaWNlYCwgaGVscGluZ1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtODItLy8vIGVuc3VyZSB0aGF0IHRoZXJlIGFyZW4ndCBtdWx0aXBsZSByZWFkZXJzIG9yIHdyaXRlcnMgdG8gdGhlIHNhbWUgbG9jYXRpb24uXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTE3OD0gICAgcHViIGZuIHJlYWRlcihzZWxmKSAtXFx1MDAzZSBVc2VyU2xpY2VSZWFkZXIge1xcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xODQtXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxODU6ICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BVc2VyU2xpY2VXcml0ZXJgXS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjE4NjogICAgcHViIGZuIHdyaXRlcihzZWxmKSAtXFx1MDAzZSBVc2VyU2xpY2VXcml0ZXIge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6MTg3OiAgICAgICAgVXNlclNsaWNlV3JpdGVyIHtcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTE4OC0gICAgICAgICAgICBwdHI6IHNlbGYucHRyLFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTItXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxOTM6ICAgIC8vLyBDb25zdHJ1Y3RzIGJvdGggYSBbYFVzZXJTbGljZVJlYWRlcmBdIGFuZCBhIFtgVXNlclNsaWNlV3JpdGVyYF0uXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0xOTQtICAgIC8vL1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk1LSAgICAvLy8gVXN1YWxseSB3aGVuIHRoaXMgaXMgdXNlZCwgeW91IHdpbGwgZmlyc3QgcmVhZCB0aGUgZGF0YSwgYW5kIHRoZW4gb3ZlcndyaXRlIGl0IGFmdGVyd2FyZHMuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5yczoxOTY6ICAgIHB1YiBmbiByZWFkZXJfd3JpdGVyKHNlbGYpIC1cXHUwMDNlIChVc2VyU2xpY2VSZWFkZXIsIFVzZXJTbGljZVdyaXRlcikge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMTk3LSAgICAgICAgKFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy0yMDEtICAgICAgICAgICAgfSxcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjIwMjogICAgICAgICAgICBVc2VyU2xpY2VXcml0ZXIge1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtMjAzLSAgICAgICAgICAgICAgICBwdHI6IHNlbGYucHRyLFxcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz0zOTE9ICAgIHB1YiBmbiBzdHJjcHlfaW50b19idWZcXHUwMDNjJ2J1ZlxcdTAwM2Uoc2VsZiwgYnVmOiBcXHUwMDI2J2J1ZiBtdXQgW3U4XSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1xcdTAwMjYnYnVmIENTdHJcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ0LS8vLyBVc2VkIHRvIGluY3JlbWVudGFsbHkgd3JpdGUgaW50byB0aGUgdXNlciBzbGljZS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjQ0NTpwdWIgc3RydWN0IFVzZXJTbGljZVdyaXRlciB7XFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy00NDYtICAgIHB0cjogVXNlclB0cixcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDQ5LVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDUwOmltcGwgVXNlclNsaWNlV3JpdGVyIHtcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ1MS0gICAgLy8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSByZW1haW5pbmcgaW4gdGhpcyBidWZmZXIuXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzPTQ2OD0gICAgdW5zYWZlIGZuIHdyaXRlX3JhdyhcXHUwMDI2bXV0IHNlbGYsIGZyb206ICpjb25zdCB1OCwgbGVuOiB1c2l6ZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNDg2LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NDg3OiAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTQ4OC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycz00ODk9ICAgIHB1YiBmbiB3cml0ZV9zbGljZShcXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MDQtICAgIC8vLyAtIFtgRUZBVUxUYF06IHRoZSB3cml0ZSBoaXRzIGEgYmFkIGFkZHJlc3Mgb3IgZ29lcyBvdXQgb2YgYm91bmRzIG9mIHRoaXNcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUwNTogICAgLy8vICAgW2BVc2VyU2xpY2VXcml0ZXJgXS5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUwNi0gICAgLy8vXFxuLS1cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTUxNi0gICAgLy8vIGBgYG5vX3J1blxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTE3OiAgICAvLy8gdXNlIGtlcm5lbDo6dWFjY2Vzczo6VXNlclNsaWNlV3JpdGVyO1xcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTE4LSAgICAvLy8gdXNlIGtlcm5lbDo6ZG1hOjpDb2hlcmVudDtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTIwLSAgICAvLy8gZm4gY29weV9kbWFfdG9fdXNlcihcXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzOjUyMTogICAgLy8vICAgICBtdXQgd3JpdGVyOiBVc2VyU2xpY2VXcml0ZXIsXFxucnVzdC9rZXJuZWwvdWFjY2Vzcy5ycy01MjItICAgIC8vLyAgICAgYWxsb2M6IFxcdTAwMjZDb2hlcmVudFxcdTAwM2NbdThdXFx1MDAzZSxcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM9NTc5PSAgICBwdWIgZm4gd3JpdGVfc2xpY2VfZmlsZShcXHUwMDI2bXV0IHNlbGYsIGRhdGE6IFxcdTAwMjZbdThdLCBvZmZzZXQ6IFxcdTAwMjZtdXQgZmlsZTo6T2Zmc2V0KSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdXNpemVcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnMtNTk4LSAgICAvLy8gRmFpbHMgd2l0aCBbYEVGQVVMVGBdIGlmIHRoZSB3cml0ZSBoYXBwZW5zIG9uIGEgYmFkIGFkZHJlc3MsIG9yIGlmIHRoZSB3cml0ZSBnb2VzIG91dCBvZlxcbnJ1c3Qva2VybmVsL3VhY2Nlc3MucnM6NTk5OiAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG5ydXN0L2tlcm5lbC91YWNjZXNzLnJzLTYwMC0gICAgLy8vIGlmIGl0IHJldHVybnMgYW4gZXJyb3IuXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9taXNjX2RldmljZS5ycy0xMjctICAgICAgICBVc2VyU2xpY2VSZWFkZXIsXFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnM6MTI4OiAgICAgICAgVXNlclNsaWNlV3JpdGVyLCAvL1xcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTEyOS0gICAgfSxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzPTI1NT0gICAgZm4gc2V0X3ZhbHVlKFxcdTAwMjZzZWxmLCBtdXQgcmVhZGVyOiBVc2VyU2xpY2VSZWFkZXIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2Npc2l6ZVxcdTAwM2Uge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfbWlzY19kZXZpY2UucnMtMjY4LVxcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzOjI2OTogICAgZm4gZ2V0X3ZhbHVlKFxcdTAwMjZzZWxmLCBtdXQgd3JpdGVyOiBVc2VyU2xpY2VXcml0ZXIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2Npc2l6ZVxcdTAwM2Uge1xcbnNhbXBsZXMvcnVzdC9ydXN0X21pc2NfZGV2aWNlLnJzLTI3MC0gICAgICAgIGxldCBndWFyZCA9IHNlbGYuaW5uZXIubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjowNC4wMTEyNzg2ODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2MDQ4MjUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgbG90IG9mIGNoYW5nZXMgdGhhdCBzZWVtIHJlbGF0ZWQuIEZpcnN0LCBJIHNlZSBtb2RpZmljYXRpb25zIGFjcm9zcyBgcnVzdC9rZXJuZWwvZG1hLnJzYCwgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgYW5kIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYC4gU3BlY2lmaWNhbGx5LCB0aGUgdHJhaXQgYm91bmRzIGludm9sdmluZyBgQXNCeXRlc2AgYXJlIGJlaW5nIHJlcGxhY2VkIHdpdGggYEludG9CeXRlc2AuIEkgc2VlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczpcblxuKiAgIEluIGBydXN0L2tlcm5lbC9kbWEucnNgLCBpdCBsb29rcyBsaWtlIGluc3RhbmNlcyBvZiBgVDogQXNCeXRlc2AgaGF2ZSBjaGFuZ2VkIHRvIGBUOiBJbnRvQnl0ZXNgLCBhbmQgc2ltaWxhciBjaGFuZ2VzIGFyZSBhcHBsaWVkIHdoZXJlIGBBc0J5dGVzYCBpcyBwcmVzZW50LlxuKiAgIGBydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc2AgYWxzbyBzaG93cyBhIHNpbWlsYXIgc3dhcCB3aXRoIGBHZW5sTXNnOjpwdXRcdTAwM2NUXHUwMDNlYC5cbiogICBGaW5hbGx5LCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AgaGFzIGFsc28gcmVwbGFjZWQgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgZm9yIGB3cml0ZV9kbWFgIGFuZCBgd3JpdGVgLlxuXG5XYWl0LCB0aGlzIHNlZW1zIGZhbWlsaWFyLi4uIHdoYXQncyB0aGUgZGVhbCB3aXRoIGBJbnRvQnl0ZXNgIHZlcnN1cyBgQXNCeXRlc2A/IE9oIHJpZ2h0ISBJbiB6ZXJvY29weSAwLjgrLCB0aGUgYEFzQnl0ZXNgIHRyYWl0IHdhcyByZW5hbWVkIHRvIGBJbnRvQnl0ZXNgLiBCZWZvcmUgdGhpcyBjb21taXQsIHRoZSBrZXJuZWwncyBjb2RlIHNlZW1zIHRvIGhhdmUgYmVlbiBlaXRoZXIgdXNpbmcgaXRzIG93biBgdHJhbnNtdXRlOjpBc0J5dGVzYCAvIGB0cmFuc211dGU6OkZyb21CeXRlc2AgaW1wbGVtZW50YXRpb24gb3IsIGl0IGxvb2tzIGxpa2UsIHdhcyBhZG9wdGluZyB0aGUgemVyb2NvcHkgbGlicmFyeS4gTGV0IG1lIGRvdWJsZS1jaGVjayBgcnVzdC9rZXJuZWwvdHJhbnNtdXRlLnJzYCBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSB6ZXJvY29weSBjb2RlLiBBaCwgeWVzLCBiZWZvcmUgdGhpcyBjb21taXQsIHRoZXNlIGZpbGVzIHdlcmUgaW1wb3J0aW5nIGB0cmFuc211dGU6OkFzQnl0ZXNgLCBidXQgbm93IHRoZXkgYXJlIGltcG9ydGluZyBgemVyb2NvcHk6OkludG9CeXRlc2AgdGhyb3VnaCB0aGUgcHJlbHVkZS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGp1c3QgcmVwcmVzZW50IGEgcmVuYW1lIG9mIHRoZSB0cmFpdCwgb3IgaXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZD8gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbiBib2RpZXMgdGhlbXNlbHZlczogYHdyaXRlYCwgYHdyaXRlX2RtYWAsIGBwdXRgLCBhbmQgdGhlIGBDb2hlcmVudEJveGAgbWV0aG9kcywgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC91YWNjZXNzLnJzYCBsaW5lcyA1OTUtNjEwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHJlbWFpbnMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjg1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM2OjA3Ljc3MTc2NDUzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC91YWNjZXNzLnJzXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU5NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU5NTpcXHRcXG4gNTk2OlxcdCAgICAvLy8gV3JpdGVzIHRoZSBwcm92aWRlZCBSdXN0IHZhbHVlIHRvIHRoaXMgdXNlcnNwYWNlIHBvaW50ZXIuXFxuIDU5NzpcXHQgICAgLy8vXFxuIDU5ODpcXHQgICAgLy8vIEZhaWxzIHdpdGggW2BFRkFVTFRgXSBpZiB0aGUgd3JpdGUgaGFwcGVucyBvbiBhIGJhZCBhZGRyZXNzLCBvciBpZiB0aGUgd3JpdGUgZ29lcyBvdXQgb2ZcXG4gNTk5OlxcdCAgICAvLy8gYm91bmRzIG9mIHRoaXMgW2BVc2VyU2xpY2VXcml0ZXJgXS4gVGhpcyBjYWxsIG1heSBtb2RpZnkgdGhlIGFzc29jaWF0ZWQgdXNlcnNwYWNlIHNsaWNlIGV2ZW5cXG4gNjAwOlxcdCAgICAvLy8gaWYgaXQgcmV0dXJucyBhbiBlcnJvci5cXG4gNjAxOlxcdCAgICBwdWIgZm4gd3JpdGVcXHUwMDNjVDogSW50b0J5dGVzXFx1MDAzZShcXHUwMDI2bXV0IHNlbGYsIHZhbHVlOiBcXHUwMDI2VCkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gNjAyOlxcdCAgICAgICAgbGV0IGxlbiA9IHNpemVfb2Y6OlxcdTAwM2NUXFx1MDAzZSgpO1xcbiA2MDM6XFx0ICAgICAgICBpZiBsZW4gXFx1MDAzZSBzZWxmLmxlbmd0aCB7XFxuIDYwNDpcXHQgICAgICAgICAgICByZXR1cm4gRXJyKEVGQVVMVCk7XFxuIDYwNTpcXHQgICAgICAgIH1cXG4gNjA2OlxcdCAgICAgICAgLy8gU0FGRVRZOiBUaGUgcmVmZXJlbmNlIHBvaW50cyB0byBhIHZhbHVlIG9mIHR5cGUgYFRgLCBzbyBpdCBpcyB2YWxpZCBmb3IgcmVhZGluZ1xcbiA2MDc6XFx0ICAgICAgICAvLyBgc2l6ZV9vZjo6XFx1MDAzY1RcXHUwMDNlKClgIGJ5dGVzLlxcbiA2MDg6XFx0ICAgICAgICAvL1xcbiA2MDk6XFx0ICAgICAgICAvLyBCeSB1c2luZyB0aGUgX2NvcHlfdG9fdXNlciB2YXJpYW50LCB3ZSBza2lwIHRoZSBjaGVja19vYmplY3Rfc2l6ZSBjaGVjayB0aGF0IHZlcmlmaWVzIHRoZVxcbiA2MTA6XFx0ICAgICAgICAvLyBrZXJuZWwgcG9pbnRlci4gVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBvbiB0aGUgQyBzaWRlIHRoYXQgc2tpcHMgdGhlIGNoZWNrIHdoZW4gdGhlIGxlbmd0aFxcbiA2MTE6XFx0ICAgICAgICAvLyBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC5cXG4gNjEyOlxcdCAgICAgICAgbGV0IHJlcyA9IHVuc2FmZSB7XFxuIDYxMzpcXHQgICAgICAgICAgICBiaW5kaW5nczo6X2NvcHlfdG9fdXNlcihcXG4gNjE0OlxcdCAgICAgICAgICAgICAgICBzZWxmLnB0ci5hc19tdXRfcHRyKCksXFxuIDYxNTpcXHQgICAgICAgICAgICAgICAgY29yZTo6cHRyOjpmcm9tX3JlZih2YWx1ZSkuY2FzdDo6XFx1MDAzY2Nfdm9pZFxcdTAwM2UoKSxcXG4gNjE2OlxcdCAgICAgICAgICAgICAgICBsZW4sXFxuIDYxNzpcXHQgICAgICAgICAgICApXFxuIDYxODpcXHQgICAgICAgIH07XFxuIDYxOTpcXHQgICAgICAgIGlmIHJlcyAhPSAwIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MDcuNzcxODU2MjAyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NTczNTgxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFJ1c3QgS2VybmVsIERhdGEgVHJhbnNmZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJJ20gdGFraW5nIGEgbG9vayBhdCBgcnVzdC9rZXJuZWwvdWFjY2Vzcy5yc2AsIHNwZWNpZmljYWxseSB0aGUgYHdyaXRlYCBmdW5jdGlvbi4gSXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCBhY2NlcHRzIGEgcmVmZXJlbmNlIHRvIGEgdmFsdWUsIGB2YWx1ZTogXHUwMDI2VGAsIGFuZCB0aGVuIGNhbGxzIGBfY29weV90b191c2VyYCB3aXRoIGEgc2l6ZSBkZXRlcm1pbmVkIGJ5IGBzaXplX29mOjpcdTAwM2NUXHUwMDNlKClgLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBgVDogSW50b0J5dGVzYCB0cmFpdCBib3VuZC4gVGhpcyBpcyBlc3NlbnRpYWxseSBhIGNvbXBpbGUtdGltZSBzYWZldHkgY2hlY2ssIGVuc3VyaW5nIHRoYXQgd2hhdGV2ZXIgZGF0YSB0eXBlIGBUYCBpcywgaXQgY2FuIGJlIHNhZmVseSB0cmVhdGVkIGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMuIEkgYXBwcmVjaWF0ZSB0aGlzIOKAkyBhdm9pZGluZyBwYWRkaW5nIGlzc3VlcyBhbmQgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMgYXQgcnVudGltZSBpcyBjcnVjaWFsIGZvciBrZXJuZWwtbGV2ZWwgbWVtb3J5IG1hbmlwdWxhdGlvbi4gSXQgaGVscHMgZW5zdXJlIHRoYXQgYW55IHR5cGUgdGhhdCBpcyBzZW50IGlzIGluIHRoZSBtb3N0IGlkZWFsIGZvcm1hdC5cblxuTmV4dCwgSSdsbCBzd2l0Y2ggZ2VhcnMgYW5kIGV4YW1pbmUgYHJ1c3Qva2VybmVsL25ldC9uZXRsaW5rLnJzYCwgbGluZXMgODAtMTAwLiBMZXQncyBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgZGF0YSBtb3ZlbWVudCBpbiB0aGUgbmV0d29yayBsYXllci4gSSdtIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZSBgSW50b0J5dGVzYCBmdW5jdGlvbmFsaXR5IGluIHRoaXMgbW9yZSBjb21wbGV4IGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MTAuNTI5MjE3MDQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJydXN0L2tlcm5lbC9uZXQvbmV0bGluay5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXG4gIDgxOlxcdGltcGwgR2VubE1zZyB7XFxuICA4MjpcXHQgICAgLy8vIFB1dHMgYW4gYXR0cmlidXRlIGludG8gdGhlIG1lc3NhZ2UuXFxuICA4MzpcXHQgICAgI1tpbmxpbmVdXFxuICA4NDpcXHQgICAgZm4gcHV0XFx1MDAzY1RcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZiwgYXR0cnR5cGU6IGNfaW50LCB2YWx1ZTogXFx1MDAyNlQpIC1cXHUwMDNlIFJlc3VsdFxcbiAgODU6XFx0ICAgIHdoZXJlXFxuICA4NjpcXHQgICAgICAgIFQ6ID9TaXplZCArIEludG9CeXRlcyxcXG4gIDg3OlxcdCAgICB7XFxuICA4ODpcXHQgICAgICAgIGxldCBza2IgPSBzZWxmLnNrYi5za2IuYXNfcHRyKCk7XFxuICA4OTpcXHQgICAgICAgIGxldCBsZW4gPSBzaXplX29mX3ZhbCh2YWx1ZSk7XFxuICA5MDpcXHQgICAgICAgIGxldCBwdHIgPSBjb3JlOjpwdHI6OmZyb21fcmVmKHZhbHVlKS5jYXN0OjpcXHUwMDNjY192b2lkXFx1MDAzZSgpO1xcbiAgOTE6XFx0ICAgICAgICAvLyBTQUZFVFk6IGBza2JgIGlzIHZhbGlkIGJ5IGBOZXRsaW5rU2tCdWZmYCB0eXBlIGludmFyaWFudHMsIGFuZCB0aGUgcHJvdmlkZWQgdmFsdWUgaXNcXG4gIDkyOlxcdCAgICAgICAgLy8gcmVhZGFibGUgYW5kIGluaXRpYWxpemVkIGZvciBpdHMgYHNpemVfb2ZgIGJ5dGVzLlxcbiAgOTM6XFx0ICAgICAgICB0b19yZXN1bHQodW5zYWZlIHsgYmluZGluZ3M6Om5sYV9wdXQoc2tiLCBhdHRydHlwZSwgbGVuIGFzIGNfaW50LCBwdHIpIH0pXFxuICA5NDpcXHQgICAgfVxcbiAgOTU6XFx0XFxuICA5NjpcXHQgICAgLy8vIFB1dHMgYSBgdTMyYCBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cXG4gIDk3OlxcdCAgICAjW2lubGluZV1cXG4gIDk4OlxcdCAgICBwdWIgZm4gcHV0X3UzMihcXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IHUzMikgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDk5OlxcdCAgICAgICAgc2VsZi5wdXQoYXR0cnR5cGUsIFxcdTAwMjZ2YWx1ZSlcXG4gMTAwOlxcdCAgICB9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdCAgICAvLy8gUHV0cyBhIHN0cmluZyBhdHRyaWJ1dGUgaW50byB0aGUgbWVzc2FnZS5cXG4gMTAzOlxcdCAgICAjW2lubGluZV1cXG4gMTA0OlxcdCAgICBwdWIgZm4gcHV0X3N0cmluZyhcXHUwMDI2bXV0IHNlbGYsIGF0dHJ0eXBlOiBjX2ludCwgdmFsdWU6IFxcdTAwMjZDU3RyKSAtXFx1MDAzZSBSZXN1bHQge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoxMC41MjkzMzUzOTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ0MTAxNjU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgRE1BIEltcGxlbWVudGF0aW9uIGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBETUEgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGljYWwgc2VjdGlvbnMgb2YgdGhlIERNQSBjb2RlLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBydXN0L2tlcm5lbC9kbWEucnNgLiBJIHdhbnQgdG8gc3BlY2lmaWNhbGx5IGV4YW1pbmUgbGluZXMgNDEwIHRocm91Z2ggNDYwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gbGluZXMgNTIwIHRocm91Z2ggNTcwLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBsb2dpYyBoZXJlOyB0aGVzZSByYW5nZXMgdXN1YWxseSBjb250YWluIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBmb3IgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBETUEgdHJhbnNmZXJzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGludGVyYWN0aW9uIHdpdGhpbiB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoxMS45NzAzNTUwNzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL2RtYS5yc1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MTU6XFx0XFxuIDQxNjpcXHRpbXBsXFx1MDAzY1Q6IEludG9CeXRlcyArIEZyb21CeXRlc1xcdTAwM2UgQ29oZXJlbnRCb3hcXHUwMDNjW1RdXFx1MDAzZSB7XFxuIDQxNzpcXHQgICAgLy8vIFtgQ29oZXJlbnRCb3hgXSB2YXJpYW50IG9mIFtgQ29oZXJlbnQ6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzYF0uXFxuIDQxODpcXHQgICAgI1tpbmxpbmVdXFxuIDQxOTpcXHQgICAgcHViIGZuIHplcm9lZF9zbGljZV93aXRoX2F0dHJzKFxcbiA0MjA6XFx0ICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuIDQyMTpcXHQgICAgICAgIGNvdW50OiB1c2l6ZSxcXG4gNDIyOlxcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcXG4gNDIzOlxcdCAgICAgICAgZG1hX2F0dHJzOiBBdHRycyxcXG4gNDI0OlxcdCAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuIDQyNTpcXHQgICAgICAgIENvaGVyZW50Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRycyhkZXYsIGNvdW50LCBnZnBfZmxhZ3MsIGRtYV9hdHRycykubWFwKFNlbGYpXFxuIDQyNjpcXHQgICAgfVxcbiA0Mjc6XFx0XFxuIDQyODpcXHQgICAgLy8vIFNhbWUgYXMgW0NvaGVyZW50Qm94Ojp6ZXJvZWRfc2xpY2Vfd2l0aF9hdHRyc10sIGJ1dCB3aXRoIGBkbWE6OkF0dHJzKDApYC5cXG4gNDI5OlxcdCAgICAjW2lubGluZV1cXG4gNDMwOlxcdCAgICBwdWIgZm4gemVyb2VkX3NsaWNlKFxcbiA0MzE6XFx0ICAgICAgICBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NCb3VuZFxcdTAwM2UsXFxuIDQzMjpcXHQgICAgICAgIGNvdW50OiB1c2l6ZSxcXG4gNDMzOlxcdCAgICAgICAgZ2ZwX2ZsYWdzOiBrZXJuZWw6OmFsbG9jOjpGbGFncyxcXG4gNDM0OlxcdCAgICApIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuIDQzNTpcXHQgICAgICAgIFNlbGY6Onplcm9lZF9zbGljZV93aXRoX2F0dHJzKGRldiwgY291bnQsIGdmcF9mbGFncywgQXR0cnMoMCkpXFxuIDQzNjpcXHQgICAgfVxcbiA0Mzc6XFx0XFxuIDQzODpcXHQgICAgLy8vIEluaXRpYWxpemVzIHRoZSBlbGVtZW50IGF0IGBpYCB1c2luZyB0aGUgZ2l2ZW4gaW5pdGlhbGl6ZXIuXFxuIDQzOTpcXHQgICAgLy8vXFxuIDQ0MDpcXHQgICAgLy8vIFJldHVybnMgYEVJTlZBTGAgaWYgYGlgIGlzIG91dCBvZiBib3VuZHMuXFxuIDQ0MTpcXHQgICAgcHViIGZuIGluaXRfYXRcXHUwMDNjRVxcdTAwM2UoXFx1MDAyNm11dCBzZWxmLCBpOiB1c2l6ZSwgaW5pdDogaW1wbCBJbml0XFx1MDAzY1QsIEVcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXG4gNDQyOlxcdCAgICB3aGVyZVxcbiA0NDM6XFx0ICAgICAgICBFcnJvcjogRnJvbVxcdTAwM2NFXFx1MDAzZSxcXG4gNDQ0OlxcdCAgICB7XFxuIDQ0NTpcXHQgICAgICAgIGlmIGkgXFx1MDAzZT0gc2VsZi4wLmxlbigpIHtcXG4gNDQ2OlxcdCAgICAgICAgICAgIHJldHVybiBFcnIoRUlOVkFMKTtcXG4gNDQ3OlxcdCAgICAgICAgfVxcbiA0NDg6XFx0XFxuIDQ0OTpcXHQgICAgICAgIGxldCBwdHIgPSBcXHUwMDI2cmF3IG11dCBzZWxmW2ldO1xcbiA0NTA6XFx0XFxuIDQ1MTpcXHQgICAgICAgIC8vIFNBRkVUWTpcXG4gNDUyOlxcdCAgICAgICAgLy8gLSBgcHRyYCBpcyB2YWxpZCwgcHJvcGVybHkgYWxpZ25lZCwgYW5kIHdpdGhpbiB0aGlzIGFsbG9jYXRpb24uXFxuIDQ1MzpcXHQgICAgICAgIC8vIC0gYFQ6IEludG9CeXRlcyArIEZyb21CeXRlc2AgZ3VhcmFudGVlcyBhbGwgYml0IHBhdHRlcm5zIGFyZSB2YWxpZCwgc28gcGFydGlhbCB3cml0ZXMgb25cXG4gNDU0OlxcdCAgICAgICAgLy8gICBlcnJvciBjYW5ub3QgbGVhdmUgdGhlIGVsZW1lbnQgaW4gYW4gaW52YWxpZCBzdGF0ZS5cXG4gNDU1OlxcdCAgICAgICAgLy8gLSBUaGUgRE1BIGFkZHJlc3MgaGFzIG5vdCBiZWVuIGV4cG9zZWQgeWV0LCBzbyB0aGVyZSBpcyBubyBjb25jdXJyZW50IGRldmljZSBhY2Nlc3MuXFxuIDQ1NjpcXHQgICAgICAgIHVuc2FmZSB7IHBpbl9pbml0OjpyYXdfdHJ5X2luaXQocHRyLCBpbml0KT8gfTtcXG4gNDU3OlxcdFxcbiA0NTg6XFx0ICAgICAgICBPaygoKSlcXG4gNDU5OlxcdCAgICB9XFxuIDQ2MDpcXHRcXG4gNDYxOlxcdCAgICAvLy8gQWxsb2NhdGVzIGEgcmVnaW9uIG9mIGNvaGVyZW50IG1lbW9yeSBvZiB0aGUgc2FtZSBzaXplIGFzIGBkYXRhYCBhbmQgaW5pdGlhbGl6ZXMgaXQgd2l0aCBhXFxuIDQ2MjpcXHQgICAgLy8vIGNvcHkgb2YgaXRzIGNvbnRlbnRzLlxcbiA0NjM6XFx0ICAgIC8vL1xcbiA0NjQ6XFx0ICAgIC8vLyBUaGlzIGlzIHRoZSBbYENvaGVyZW50Qm94YF0gdmFyaWFudCBvZiBbYENvaGVyZW50Ojpmcm9tX3NsaWNlX3dpdGhfYXR0cnNgXS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjE6MzY6MTEuOTcwNTA4NDU0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkyMzAzNTk4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFRyYWl0IEJvdW5kIENoYW5nZTogTm8gRnV6emluZyBOZWVkZWQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB1cGRhdGluZyB0cmFpdCBib3VuZHMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYEFzQnl0ZXNgIHdpdGggYEludG9CeXRlc2AgYWNyb3NzIHNvbWUgUnVzdCBrZXJuZWwgaGVscGVyIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuRmlyc3QsIGxldCdzIGNvbmZpcm0gdGhlIHNjb3BlLiBJIGtub3cgdGhhdCBgQXNCeXRlc2AgYW5kIGBJbnRvQnl0ZXNgIGFyZSBtYXJrZXIgdHJhaXRzIGluIFJ1c3QsIHNwZWNpZmljYWxseSB1bnNhZmUgbWFya2VyIHRyYWl0cyBmcm9tIHRoZSBgemVyb2NvcHlgIGNyYXRlLiBUaGVzZSB0cmFpdHMgaW5kaWNhdGUgYSB0eXBlIGlzIHN1aXRhYmxlIGZvciBkaXJlY3QgbWVtb3J5IGludGVycHJldGF0aW9uLCBtZWFuaW5nIGl0IGNvbnRhaW5zIG5vIHBhZGRpbmcgYW5kIGNhbiBiZSB0cmVhdGVkIGFzIGEgYFx1MDAyNlt1OF1gLiBUaGUgZmFjdCB0aGF0IHRoZXNlIGFyZSBtYXJrZXIgdHJhaXRzIHRoYXQgYXJlIHplcm8tc2l6ZWQsIGFuZCB0aGF0IHRoZSBjaGFuZ2UgaXMgb24gZ2VuZXJpYyBmdW5jdGlvbnMvbWV0aG9kcyAod2hlcmUgVDogSW50b0J5dGVzKSB0ZWxscyBtZSB0aGlzIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0cmFpbnQsIG5vdCBzb21ldGhpbmcgdGhhdCBnZW5lcmF0ZXMgYW55IGFjdHVhbCBtYWNoaW5lIGNvZGUuIFNvLCB0aGUgdHJhaXQgYm91bmQgY2hhbmdlIHNob3VsZG4ndCBiZSBhbHRlcmluZyBhbnkgcnVudGltZSBsb2dpYywgd2hpY2ggaXMgdGhlIGtleSB0aGluZy5cblxuTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcnVudGltZSBpbXBsaWNhdGlvbnMuIEFyZSB3ZSBjaGFuZ2luZyB3aGF0IHR5cGVzIGNhbiBiZSBwYXNzZWQ/IElzIGFueSBpbXBsZW1lbnRhdGlvbiBsb2dpYyBhbHRlcmVkPyBJdCBsb29rcyBsaWtlIGBBc0J5dGVzYCB3YXMgdGhlIG9sZCBuYW1lIGZvciBgSW50b0J5dGVzYCDigJMgb3IgcmF0aGVyLCB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoZSB0cmFuc211dGUgdHJhaXQuIFRoZSBtZXRob2Qgc2lnbmF0dXJlcyB1c2UgdGhlIGBcdTAwMjZUYCwgY2FsY3VsYXRlIHRoZSBgc2l6ZV9vZjo6XHUwMDNjVFx1MDAzZSgpYCwgYW5kIGNhbGwgYGJpbmRpbmdzOjpfY29weV90b191c2VyYC4gVGhlIHVzZSBvZiBgVDogSW50b0J5dGVzYCBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgdHJhaXQgYm91bmQuIFRoZXJlJ3Mgbm8gcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRyYWl0LlxuXG5JJ2xsIHJldmlldyB0aGUgaW5zdHJ1Y3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGBXb3J0aEZ1enppbmdgIGNyaXRlcmlhLiBTZWN0aW9uIDIgY2xlYXJseSBzdGF0ZXMgdGhhdCBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXNcIiBkb24ndCB3YXJyYW50IGZ1enppbmcsIHdoaWNoIGluY2x1ZGVzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBldGMuIFNvIGlmIHRoaXMgaXMgYSBwdXJlbHkgY29tcGlsZS10aW1lIGNoYW5nZSwgaXQncyBub24tZXhlY3V0YWJsZS5cblxuVGltZSB0byBjb25maXJtIHRoaXMgcGF0Y2ggaXMgbm9uLWV4ZWN1dGFibGUuIEknbGwgbWV0aWN1bG91c2x5IGdvIHRocm91Z2ggdGhlIGRpZmYsIGxpbmUgYnkgbGluZS5cblxuQWxyaWdodCwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzpcblxuKiAgICoqYHJ1c3Qva2VybmVsL2RtYS5yc2AqKjogSSdtIG5vdGluZyB0aGUgcmVtb3ZhbCBvZiB1bnVzZWQgaW1wb3J0cyAoYHRyYW5zbXV0ZTo6e0FzQnl0ZXMsIEZyb21CeXRlc31gKS4gVGhlbiwgaXQncyBhbGwgdHJhaXQgYm91bmQgdXBkYXRlcyBmcm9tIGBBc0J5dGVzYCB0byBgSW50b0J5dGVzYCBhbmQgYXNzb2NpYXRlZCBjb21tZW50IGFkanVzdG1lbnRzIGluIGBpbXBsYCBibG9ja3MuXG4qICAgKipgcnVzdC9rZXJuZWwvbmV0L25ldGxpbmsucnNgKio6IFNpbWlsYXIgcGF0dGVybjogYW4gdW51c2VkIGltcG9ydCBpcyByZW1vdmVkLCBhbmQgdGhlbiB0aGUgdHJhaXQgYm91bmQgb24gYSBmdW5jdGlvbiBpcyB1cGRhdGVkIGZyb20gYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgLlxuKiAgICoqYHJ1c3Qva2VybmVsL3VhY2Nlc3MucnNgKio6IEFnYWluLCB1bnVzZWQgaW1wb3J0cyBhcmUgcmVtb3ZlZCwgZm9sbG93ZWQgYnkgbW9yZSB0cmFpdCBib3VuZCByZXBsYWNlbWVudHMgYW5kIGNvbW1lbnQgZWRpdHMuXG5cbkknbSBub3Qgc2VlaW5nIGFueSBjaGFuZ2VzIHRvIGV4ZWN1dGFibGUgY29kZSwgcnVudGltZSBjaGVja3MsIG9yIGRhdGEgc3RydWN0dXJlcy4gRXZlcnl0aGluZyBpcyBlaXRoZXIgYW4gaW1wb3J0IGNsZWFudXAsIHRyYWl0IGJvdW5kIHVwZGF0ZSwgb3IgYSBjb21tZW50IGFkanVzdG1lbnQuIFRoZSB0cmFpdCBib3VuZCB1cGRhdGVzIGFyZSAqcHVyZWx5KiBjb21waWxlLXRpbWUgbWFya2VyIHRyYWl0cywgbWVhbmluZyB0aGUgY2hhbmdlIGlzIGVudGlyZWx5IG5vbi1leGVjdXRhYmxlLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGxvb2sgZ29vZDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuKiAgIGBFbmFibGVDb25maWdzYDogbnVsbFxuKiAgIGBGb2N1c1N5bWJvbHNgOiBudWxsXG4qICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoYEFzQnl0ZXNgIHRvIGBJbnRvQnl0ZXNgIGZyb20gemVyb2NvcHkpIGFuZCB1cGRhdGVzIGNvbW1lbnRzIGFuZCBpbXBvcnRzLCB3aXRoIG5vIGNoYW5nZXMgdG8gZXhlY3V0YWJsZSBsb2dpYywgcnVudGltZSBhc3NlcnRpb25zLCBvciBjb250cm9sIGZsb3cuXG5cbk9rYXksIEknbSBjb25maWRlbnQuIFRoaXMgY2hhbmdlIGlzIG5vbi1leGVjdXRhYmxlIGFuZCBoYXMgbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGNvZGUuIEZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC4gSSdsbCBkb3VibGUtY2hlY2sgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjExLCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIxOjM2OjIxLjIwMDg3MTE1NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBSdXN0IGNvbXBpbGUtdGltZSB0cmFpdCBib3VuZHMgKHN3aXRjaGluZyBmcm9tIEFzQnl0ZXMgdG8gSW50b0J5dGVzIGZyb20gemVyb2NvcHkpLCByZW1vdmVzIHVudXNlZCBpbXBvcnRzLCBhbmQgdXBkYXRlcyBkb2Mvc2FmZXR5IGNvbW1lbnRzIGFjcm9zcyBrZXJuZWwgRE1BLCBuZXRsaW5rLCBhbmQgdWFjY2VzcyBoZWxwZXJzLiBObyBydW50aW1lIGV4ZWN1dGFibGUgbG9naWMsIGNvbnRyb2wgZmxvdywgc3RydWN0IGxheW91dHMsIG9yIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIFJ1c3QgY29tcGlsZS10aW1lIHRyYWl0IGJvdW5kcyAoc3dpdGNoaW5nIGZyb20gQXNCeXRlcyB0byBJbnRvQnl0ZXMgZnJvbSB6ZXJvY29weSksIHJlbW92ZXMgdW51c2VkIGltcG9ydHMsIGFuZCB1cGRhdGVzIGRvYy9zYWZldHkgY29tbWVudHMgYWNyb3NzIGtlcm5lbCBETUEsIG5ldGxpbmssIGFuZCB1YWNjZXNzIGhlbHBlcnMuIE5vIHJ1bnRpbWUgZXhlY3V0YWJsZSBsb2dpYywgY29udHJvbCBmbG93LCBzdHJ1Y3QgbGF5b3V0cywgb3IgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMTozNjoyMS4yMDA5MTY2NzZaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4czwh[1] Phase: Running StartedAt: 2026-09-06 21:36:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4czwh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 21:36:34 +0000 UTC FinishedAt: 2026-09-06 21:36:40 +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,}