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EABkigCDAAdlSABkCwBkiwBkZQBkjABkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkjQCDAAdlSABkCwBkjgBkZQBkjwBkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkkACDAAdlSABkCwBkkQBkZQBkkgBkZwBlHABkaABnAABkaQBlOgBnAQBkagBkawBkEABkkwCDAAdlSABkCwBklABkZQBklQBkZwBlHgBkaABnAABkaQBlOgBnAQBkagBkDgBkEABklgCDAAdlSABkCwBklwBkZQBkmABkZwBlJABkaABnAABkaQBlNgBnAQBkagBkawBkEABkmQCDAAdlSABkCwBkmgBkZQBkmwBkZwBlJgBkaABnAABkaQBlNgBnAQBkagBkDgBkEABknACDAAdlSABkCwBknQBkZQBkngBkZwBkFwFkaABnAABkaQBlQQBnAQBkagBkDgBkEABknwCDAAdlSABkCwBkoABkZQBkoQBkZwBkFwFkaABlQQBlRABnAgBkaQBlQQBnAQBkagBkawBkEABkogCDAAdlSABkCwBkowBkZQBkpABkZwBkFwFkaABlQQBlRQBlRgBnAwBkaQBlQQBnAQBkagBkDgBkEABkpQCDAAdlSABkCwBkpgBkZQBkpwBkZwBkFwFkaABlRQBlRgBnAgBkaQBlQQBnAQBkagBkawBkEABkqACDAAdlSABkCwBkqQBkZQBkqgBkZwBkFwFkaABnAABkaQBlPwBnAQBkagBkDgBkEABkqwCDAAdlSABkCwBkrABkZQBkrQBkZwBkFwFkaABlRQBlRgBnAgBkaQBlPwBnAQBkagBkawBkEABkrgCDAAdlSABkCwBkrwBkZQBksABkZwBkFwFkaABlRABnAQBkaQBlPwBnAQBkagBkFABkEABksQCDAAdlSABkCwBksgBkZQBkswBkZwBkFwFkaABlRABlRABnAgBkaQBlPwBnAQBkagBkFABkEABktACDAAdlSABkCwBktQBkZQBktgBkZwBkFwFkaABlRABlRABlRABnAwBkaQBlPwBnAQBkagBkFABkEABktwCDAAdlSABkCwBkuABkZQBkuQBkZwBkFwFkaABnAABkaQBlQwBnAQBkagBkDgBkEABkugCDAAdlSABkCwBkuwBkZQBkvABkZwBkFwFkaABlRQBlRgBnAgBkaQBlQwBnAQBkagBkawBkEABkvQCDAAdlSABkCwBkvgBkZQBkvwBkZwBkFwFkaABlQwBlRABlRABnAwBkaQBlQwBnAQBkagBkawBkEABkwACDAAdlSABkCwBkwQBkZQBkwgBkZwBkFwFkaABlQwBlRQBlRgBnAwBkaQBlQwBnAQBkagBkDgBkEABkwwCDAAdlSABkCwBkxABkZQBkxQBkZwBkFwFkaABlRABnAQBkaQBnAABkagBkawBkEABkxgCDAAdlSABkCwBkxwBkZQBkyABkZwBkFwFkaABlRABnAQBkaQBlRABlRABnAgBkagBkawBkEABkyQCDAAdlSABkCwBkygBkZQBkywBkZwBkFwFkaABnAABkaQBlRQBnAQBkagBkawBkEABkzACDAAdlSABkCwBkzQBkZQBkzgBkZwBkFwFkaABlRQBlRgBnAgBkaQBnAABkagBkDgBkEABkzwCDAAdlSABkCwBk0ABkZQBk0QBkZwBlIQBkaABnAABkaQBlRABnAQBkagBkawBkEABk0gCDAAdlSABkCwBk0wBkZQBk1ABkZwBlCwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk1QCDAAdlSABkCwBk1gBkZQBk1wBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk2ACDAAdlSABkCwBk2QBkZQBk2gBkZwBlIQBkaABnAABkaQBnAABkagBkawBkEABk2wCDAAdlSABkCwBk3ABkZQBk3QBkZwBlCwBkaABnAABkaQBnAABkagBkDgBkEABk3gCDAAdlSABkCwBk3wBkZQBk4ABkZwBlDwBkaABnAABkaQBnAABkagBkDgBkEABk4QCDAAdlSABkCwBk4gBkZQBk4wBkZwBlCwBkaABnAABkaQBlRABnAQBkagBkFABkEABk5ACDAAdlSABkCwBk5QBkZQBk5gBkZwBlDQBkaABnAABkaQBlRABnAQBkagBkFABkEABk5wCDAAdlSABkCwBk6ABkZQBk6QBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkFABkEABk6gCDAAdlSABkCwBk6wBkZQBk7ABkZwBlFgBkaABnAABkaQBlRABnAQBkagBkawBkEABk7QCDAAdlSABkCwBk7gBkZQBk7wBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkawBkEABk8ACDAAdlSABkCwBk8QBkZQBk8gBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkawBkEABk8wCDAAdlSABkCwBk9ABkZQBk9QBkZwBlFgBkaABlRQBlRgBnAgBkaQBlRABnAQBkagBkawBkEABk9gCDAAdlSABkCwBk9wBkZQBk+ABkZwBkFwFkaABlRQBlRABlRgBnAwBkaQBlRABnAQBkagBkDgBkEABk+QCDAAdlSABkCwBk+gBkZQBk+wBkZwBkFwFkaABlRABlRABnAgBkaQBlRABnAQBkagBkFABkEABk/ACDAAdlSABkCwBk/QBkZQBk/gBkZwBlCwBkaABnAABkaQBnAABkagBkFABkEABk/wCDAAdlSABkCwBkAAFkZQBkAQFkZwBkFwFkaABlRABnAQBkaQBnAABkagBkawBkEABkAgGDAAdlSABkCwBkAwFkZQBkBAFkZwBlFABkaABnAABkaQBlRABnAQBkagBkawBkEABkBQGDAAdlSABkCwBkBgFkZQBkBwFkZwBkFwFkaABlRABnAQBkaQBlRABnAQBkagBkDgBkEABkCAGDAAdnNQBaSQBbSABpAABaSgBpAABaSwB4ngBlTABlSQCDAQBEXZAAXAIAWk0AWk4AZU4Aak8AZUoAawYAchkQZVAAZAkBZU4Aak8AZUoAZU4Aak8AGWVNAGYDABaDAQCCAQBuAABlTgBqUQBlSwBrBgByThBlUABkCgFlTgBqUQBlSwBlTgBqUQAZZU0AZgMAFoMBAIIBAG4AAGVNAGVKAGVOAGpPADxlTQBlSwBlTgBqUQA8cdgPV1tKAFtLAFtNAFtOAGkAAFpSAHgbAGVJAERdEwBaTgBlTgBlUgBlTgBqUQA8cYUQV1tOAGVTAGQLAYQBAFpUAGVUAIMAAAFbVABkDAGEAABaVQBkDQGEAABaVgBkFwFkFwFkGABkDgGEAwBaVwBkDwFkGAFkEAGEAACDAABZWlgAZBEBWlkAZBIBWloAaQIAZVkAZBMBNmVaAGQUATZaWwBkFQGEAABaXABlXQBkFgFrAgByKxFlXACDAAABbgAAZBcBUygZAQAAc3IBAAAiRXhlY3V0YWJsZSBkb2N1bWVudGF0aW9uIiBmb3IgdGhlIHBpY2tsZSBtb2R1bGUuCgpFeHRlbnNpdmUgY29tbWVudHMgYWJvdXQgdGhlIHBpY2tsZSBwcm90b2NvbHMgYW5kIHBpY2tsZS1tYWNoaW5lIG9wY29kZXMKY2FuIGJlIGZvdW5kIGhlcmUuICBTb21lIGZ1bmN0aW9ucyBtZWFudCBmb3IgZXh0ZXJuYWwgdXNlOgoKZ2Vub3BzKHBpY2tsZSkKICAgR2VuZXJhdGUgYWxsIHRoZSBvcGNvZGVzIGluIGEgcGlja2xlLCBhcyAob3Bjb2RlLCBhcmcsIHBvc2l0aW9uKSB0cmlwbGVzLgoKZGlzKHBpY2tsZSwgb3V0PU5vbmUsIG1lbW89Tm9uZSwgaW5kZW50bGV2ZWw9NCkKICAgUHJpbnQgYSBzeW1ib2xpYyBkaXNhc3NlbWJseSBvZiBhIHBpY2tsZS4KdAMAAABkaXN0BgAAAGdlbm9wc3QIAAAAb3B0aW1pemVp/////2n+////af3///90EgAAAEFyZ3VtZW50RGVzY3JpcHRvcmMAAAAAAAAAAAQAAABCAAAAcxcAAABlAABaAQBkBQBaAgBkBACEAABaAwBSUygGAAAAdAQAAABuYW1ldAEAAABudAYAAAByZWFkZXJ0AwAAAGRvY2MFAAAABQAAAAYAAABDAAAAc4gAAAB0AAB8AQB0AQCDAgBzFQB0AgCCAQB8AQB8AABfAwB0AAB8AgB0BACDAgByTgB8AgBkAQBrBQBzVAB8AgB0BQB0BgB0BwBmAwBrBgBzVAB0AgCCAQB8AgB8AABfCAB8AwB8AABfCQB0AAB8BAB0AQCDAgBzewB0AgCCAQB8BAB8AABfCgBkAABTKAIAAABOaQAAAAAoCwAAAHQKAAAAaXNpbnN0YW5jZXQDAAAAc3RydA4AAABBc3NlcnRpb25FcnJvclIEAAAAdAMAAABpbnR0DQAAAFVQX1RPX05FV0xJTkV0FAAAAFRBS0VOX0ZST01fQVJHVU1FTlQxdBQAAABUQUtFTl9GUk9NX0FSR1VNRU5UNFIFAAAAUgYAAABSBwAAACgFAAAAdAQAAABzZWxmUgQAAABSBQAAAFIGAAAAUgcAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAgAAABfX2luaXRfX7gAAABzFAAAAAABFQEJAhsBBgEDARIBCQIJAhUBKAQAAABzBAAAAG5hbWVSBQAAAHMGAAAAcmVhZGVycwMAAABkb2MoBAAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX190CQAAAF9fc2xvdHNfX1IQAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UgMAAAClAAAAcwoAAAAGAwAFAAUAAwYDKAEAAAB0BgAAAHVucGFja2MBAAAAAgAAAAIAAABDAAAAcy8AAAB8AABqAABkAQCDAQB9AQB8AQByHwB0AQB8AQCDAQBTdAIAZAIAgwEAggEAZAMAUygEAAAAc1MAAAAKICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KICAgID4+PiByZWFkX3VpbnQxKFN0cmluZ0lPLlN0cmluZ0lPKCdceGZmJykpCiAgICAyNTUKICAgIGkBAAAAcycAAABub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgdWludDFOKAMAAAB0BAAAAHJlYWR0AwAAAG9yZHQKAAAAVmFsdWVFcnJvcigCAAAAdAEAAABmdAQAAABkYXRhKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weXQKAAAAcmVhZF91aW50MckAAABzCAAAAAAHDwEGAQoBUgQAAAB0BQAAAHVpbnQxUgUAAABpAQAAAFIGAAAAUgcAAABzGgAAAE9uZS1ieXRlIHVuc2lnbmVkIGludGVnZXIuYwEAAAACAAAAAwAAAEMAAABzQgAAAHwAAGoAAGQBAIMBAH0BAHQBAHwBAIMBAGQB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KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IG5vIG5ld2xpbmUgZm91bmQgd2hlbiB0cnlpbmcgdG8gcmVhZCBzdHJpbmdubAoKICAgIEVtYmVkZGVkIGVzY2FwZXMgYXJlIHVuZG9uZSBpbiB0aGUgcmVzdWx0LgogICAgPj4+IHJlYWRfc3RyaW5nbmwoU3RyaW5nSU8uU3RyaW5nSU8ociInYVxuXFxiXHgwMGNcdGQnIiArICJcbidlJyIpKQogICAgJ2FcblxcYlx4MDBjXHRkJwogICAgcwEAAAAKcy0AAABubyBuZXdsaW5lIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIHJlYWQgc3RyaW5nbmxp/////3MCAAAAJyJzLAAAAHN0cmlucSBxdW90ZSAlciBub3QgZm91bmQgYXQgYm90aCBlbmRzIG9mICVyaQEAAABzGgAAAG5vIHN0cmluZyBxdW90ZXMgYXJvdW5kICVydA0AAABzdHJpbmdfZXNjYXBlKAUAAAB0CAAAAHJlYWRsaW5ldAgAAABlbmRzd2l0aFIXAAAAdAoAAABzdGFydHN3aXRodAYAAABkZWNvZGUoBQAAAFIYAAAAUiYAAAB0CwAAAHN0cmlwcXVvdGVzUhkAAAB0AQAAAHEoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dA0AAAByZWFkX3N0cmluZ25sBgEAAHMgAAAAABsMAQ8BDwEKAgYBDQEPAQ8BBgETAQ0BCAITBAYBEgF0CAAAAHN0cmluZ25sc6IAAABBIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHJlcHItc3R5bGUgc3RyaW5nLCB3aXRoIGVtYmVkZGVkIGVzY2FwZXMsIGFuZAogICAgICAgICAgICAgICAgICAgYnJhY2tldGluZyBxdW90ZXMuCiAgICAgICAgICAgICAgICAgICBjAQAAAAEAAAAGAAAAQwAAAHMWAAAAdAAAfAAAZAEAdAEAZAIAdAEAgwECUygDAAAATlImAAAAUicAAAAoAgAAAFIpAAAAdAUAAABGYWxzZSgBAAAAUhgAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dBYAAAByZWFkX3N0cmluZ25sX25vZXNjYXBlQQEAAHMCAAAAAAF0EQAAAHN0cmluZ25sX25vZXNjYXBlcwMBAABBIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgc3RyLXN0eWxlIHN0cmluZywgd2l0aG91dCBlbWJlZGRlZCBlc2NhcGVzLAogICAgICAgICAgICAgICAgICAgICAgICBvciBicmFja2V0aW5nIHF1b3Rlcy4gIEl0IHNob3VsZCBjb25zaXN0IHNvbGVseSBvZgogICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgYwEAAAABAAAABAAAAEMAAABzGgAAAGQBAHQAAHwAAIMBAHQAAHwAAIMBAGYCABZTKAIAAABzfAAAAAogICAgPj4+IGltcG9ydCBTdHJpbmdJTwogICAgPj4+IHJlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpcihTdHJpbmdJTy5TdHJpbmdJTygiUXVldWVcbkVtcHR5XG5qdW5rIikpCiAgICAnUXVldWUgRW1wdHknCiAgICBzBQAAACVzICVzKAEAAABSLAAAACgBAAAAUhgAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dBsAAAByZWFkX3N0cmluZ25sX25v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L2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5dAgAAABfX3JlcHJfX9MCAABzAgAAAAABKAMAAABzBAAAAG5hbWVzBgAAAG9idHlwZXMDAAAAZG9jKAUAAABSEQAAAFISAAAAUhMAAABSEAAAAFJTAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5Uk4AAAC5AgAAcwoAAAAGAwAEAAMGAwkNUgsAAABSTwAAAHMzAAAAQSBzaG9ydCAoYXMgb3Bwb3NlZCB0byBsb25nKSBQeXRob24gaW50ZWdlciBvYmplY3QuUj4AAABzMwAAAEEgbG9uZyAoYXMgb3Bwb3NlZCB0byBzaG9ydCkgUHl0aG9uIGludGVnZXIgb2JqZWN0LnQLAAAAaW50X29yX2Jvb2xzOgAAAEEgUHl0aG9uIGludGVnZXIgb2JqZWN0IChzaG9ydCBvciBsb25nKSwgb3IgYSBQeXRob24gYm9vbC50BAAAAGJvb2xzFQAAAEEgUHl0aG9uIGJvb2wgb2JqZWN0LlJEAAAAcxYAAABBIFB5dGhvbiBmbG9hdCBvYmplY3QuUgkAAABzFwAAAEEgUHl0aG9uIHN0cmluZyBvYmplY3QuUjQAAABzHwAAAEEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nIG9iamVjdC50BAAAAE5vbmVzFwAAAFRoZSBQeXRob24gTm9uZSBvYmplY3QuUlEAAABzFgAAAEEgUHl0aG9uIHR1cGxlIG9iamVjdC50BAAAAGxpc3RzFQAAAEEgUHl0aG9uIGxpc3Qgb2JqZWN0LnQEAAAAZGljdHMVAAAAQSBQeXRob24gZGljdCBvYmplY3QudAMAAABhbnlzHgAAAEFueSBraW5kIG9mIG9iamVjdCB3aGF0c29ldmVyLnQEAAAAbWFya3MCAgAAJ1RoZSBtYXJrJyBpcyBhIHVuaXF1ZSBvYmplY3QuCgogICAgICAgICAgICAgICAgIE9wY29kZXMgdGhhdCBvcGVyYXRlIG9uIGEgdmFyaWFibGUgbnVtYmVyIG9mIG9iamVjdHMKICAgICAgICAgICAgICAgICBnZW5lcmFsbHkgZG9uJ3QgZW1iZWQgdGhlIGNvdW50IG9mIG9iamVjdHMgaW4gdGhlIG9wY29kZSwKICAgICAgICAgICAgICAgICBvciBwdWxsIGl0IG9mZiB0aGUgc3RhY2suICBJbnN0ZWFkIHRoZSBNQVJLIG9wY29kZSBpcyB1c2VkCiAgICAgICAgICAgICAgICAgdG8gcHVzaCBhIHNwZWNpYWwgbWFya2VyIG9iamVjdCBvbiB0aGUgc3RhY2ssIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgc29tZSBvdGhlciBvcGNvZGVzIGdyYWIgYWxsIHRoZSBvYmplY3RzIGZyb20gdGhlIHRvcCBvZgogICAgICAgICAgICAgICAgIHRoZSBzdGFjayBkb3duIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlIHRvcG1vc3QgbWFya2VyCiAgICAgICAgICAgICAgICAgb2JqZWN0LgogICAgICAgICAgICAgICAgIHQKAAAAc3RhY2tzbGljZXNMAgAAQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGNvbnRpZ3VvdXMgc2xpY2Ugb2YgdGhlIHN0YWNrLgoKICAgICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBtYXJrb2JqZWN0LCB0byByZXByZXNlbnQgYWxsCiAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LiAgRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAgdGhlIFBPUF9NQVJLIG9wY29kZSBjaGFuZ2VzIHRoZSBzdGFjayBmcm9tCgogICAgICAgICAgICAgICAgICAgICBbLi4uLCBtYXJrb2JqZWN0LCBzdGFja3NsaWNlXQogICAgICAgICAgICAgICAgIHRvCiAgICAgICAgICAgICAgICAgICAgIFsuLi5dCgogICAgICAgICAgICAgICAgIE5vIG1hdHRlciBob3cgbWFueSBvYmplY3QgYXJlIG9uIHRoZSBzdGFjayBhZnRlciB0aGUgdG9wbW9zdAogICAgICAgICAgICAgICAgIG1hcmtvYmplY3QsIFBPUF9NQVJLIGdldHMgcmlkIG9mIGFsbCBvZiB0aGVtIChpbmNsdWRpbmcgdGhlCiAgICAgICAgICAgICAgICAgdG9wbW9zdCBtYXJrb2JqZWN0IHRvbykuCiAgICAgICAgICAgICAgICAgdAoAAABPcGNvZGVJbmZvYwAAAAAAAAAABwAAAEIAAABzFwAAAGUAAFoBAGQIAFoCAGQHAIQAAFoDAFJTKAkAAABSBAAAAHQEAAAAY29kZXQDAAAAYXJndAwAAABzdGFja19iZWZvcmV0CwAAAHN0YWNrX2FmdGVydAUAAABwcm90b1IHAAAAYwgAAAAJAAAABgAAAEMAAABzYgEAAHQAAHwBAHQBAIMCAHMVAHQCAIIBAHwBAHwAAF8DAHQAAHwCAHQBAIMCAHMzAHQCAIIBAHQEAHwCAIMBAGQBAGsCAHNLAHQCAIIBAHwCAHwAAF8FAHwDAGQAAGsIAHN1AHQAAHwDAHQHAIMCAHN1AHQCAIIBAHwDAHwAAF8IAHQAAHwEAHQJAIMCAHOTAHQCAIIBAHgjAHwEAERdGwB9CAB0AAB8CAB0CgCDAgBzmgB0AgCCAQBxmgBXfAQAfAAAXwsAdAAAfAUAdAkAgwIAc9cAdAIAggEAeCMAfAUARF0bAH0IAHQAAHwIAHQKAIMCAHPeAHQCAIIBAHHeAFd8BQB8AABfDAB0AAB8BgB0DQCDAgByMQFkAgB8BgAEA2sBAG8sAWQDAGsBAG4CAAIBczcBdAIAggEAfAYAfAAAXw4AdAAAfAcAdAEAgwIAc1UBdAIAggEAfAcAfAAAXw8AZAAAUygEAAAATmkBAAAAaQAAAABpAgAAACgQAAAAUggAAABSCQAAAFIKAAAAUgQAAABSHAAAAFJdAAAAUlYAAABSAwAAAFJeAAAAUlcAAABSTgAAAFJfAAAAUmAAAABSCwAAAFJhAAAAUgcAAAAoCQAAAFIPAAAAUgQAAABSXQAAAFJeAAAAUl8AAABSYAAAAFJhAAAAUgcAAAB0AQAAAHgoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UhAAAABWAwAAcyYAAAAAAhUBCQIVARgBCQIhAQkCFQENARkBCQIVAQ0BGQEJAjEBCQIVASgHAAAAcwQAAABuYW1lcwQAAABjb2RlcwMAAABhcmdzDAAAAHN0YWNrX2JlZm9yZXMLAAAAc3RhY2tfYWZ0ZXJzBQAAAHByb3RvcwMAAABkb2MoBAAAAFIRAAAAUhIAAABSEwAAAFIQAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UlwAAAA3AwAAcxAAAAAGBAAEAAgAAwADAAMAAwYDdAMAAABJTlRSXQAAAHQBAAAASVJeAAAAUl8AAABSYAAAAFJhAAAAaQAAAABzpAMAAFB1c2ggYW4gaW50ZWdlciBvciBib29sLgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgbGl0ZXJhbCBzdHJpbmcuCgogICAgICBUaGUgaW50ZW50IG1heSBoYXZlIGJlZW4gdGhhdCB0aGlzIGFsd2F5cyBmaXQgaW4gYSBzaG9ydCBQeXRob24gaW50LAogICAgICBidXQgSU5UIGNhbiBiZSBnZW5lcmF0ZWQgaW4gcGlja2xlcyB3cml0dGVuIG9uIGEgNjQtYml0IGJveCB0aGF0CiAgICAgIHJlcXVpcmUgYSBQeXRob24gbG9uZyBvbiBhIDMyLWJpdCBib3guICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMKICAgICAgYW5kIExPTkcgdGhlbiBpcyB0aGF0IElOVCBza2lwcyBhIHRyYWlsaW5nICdMJywgYW5kIHByb2R1Y2VzIGEgc2hvcnQKICAgICAgaW50IHdoZW5ldmVyIHBvc3NpYmxlLgoKICAgICAgQW5vdGhlciBkaWZmZXJlbmNlIGlzIGR1ZSB0byB0aGF0LCB3aGVuIGJvb2wgd2FzIGludHJvZHVjZWQgYXMgYQogICAgICBkaXN0aW5jdCB0eXBlIGluIDIuMywgYnVpbHRpbiBuYW1lcyBUcnVlIGFuZCBGYWxzZSB3ZXJlIGFsc28gYWRkZWQgdG8KICAgICAgMi4yLjIsIG1hcHBpbmcgdG8gaW50cyAxIGFuZCAwLiAgRm9yIGNvbXBhdGliaWxpdHkgaW4gYm90aCBkaXJlY3Rpb25zLAogICAgICBUcnVlIGdldHMgcGlja2xlZCBhcyBJTlQgKyAiSTAxXG4iLCBhbmQgRmFsc2UgYXMgSU5UICsgIkkwMFxuIi4KICAgICAgTGVhZGluZyB6ZXJvZXMgYXJlIG5ldmVyIHByb2R1Y2VkIGZvciBhIGdlbnVpbmUgaW50ZWdlci4gIFRoZSAyLjMKICAgICAgKGFuZCBsYXRlcikgdW5waWNrbGVycyBzcGVjaWFsLWNhc2UgdGhlc2UgYW5kIHJldHVybiBib29sIGluc3RlYWQ7CiAgICAgIGVhcmxpZXIgdW5waWNrbGVycyBpZ25vcmUgdGhlIGxlYWRpbmcgIjAiIGFuZCByZXR1cm4gdGhlIGludC4KICAgICAgdAYAAABCSU5JTlR0AQAAAEpzMQEAAFB1c2ggYSBmb3VyLWJ5dGUgc2lnbmVkIGludGVnZXIuCgogICAgICBUaGlzIGhhbmRsZXMgdGhlIGZ1bGwgcmFuZ2Ugb2YgUHl0aG9uIChzaG9ydCkgaW50ZWdlcnMgb24gYSAzMi1iaXQKICAgICAgYm94LCBkaXJlY3RseSBhcyBiaW5hcnkgYnl0ZXMgKDEgZm9yIHRoZSBvcGNvZGUgYW5kIDQgZm9yIHRoZSBpbnRlZ2VyKS4KICAgICAgSWYgdGhlIGludGVnZXIgaXMgbm9uLW5lZ2F0aXZlIGFuZCBmaXRzIGluIDEgb3IgMiBieXRlcywgcGlja2xpbmcgdmlhCiAgICAgIEJJTklOVDEgb3IgQklOSU5UMiBzYXZlcyBzcGFjZS4KICAgICAgdAcAAABCSU5JTlQxdAEAAABLc4wAAABQdXNoIGEgb25lLWJ5dGUgdW5zaWduZWQgaW50ZWdlci4KCiAgICAgIFRoaXMgaXMgYSBzcGFjZSBvcHRpbWl6YXRpb24gZm9yIHBpY2tsaW5nIHZlcnkgc21hbGwgbm9uLW5lZ2F0aXZlIGludHMsCiAgICAgIGluIHJhbmdlKDI1NikuCiAgICAgIHQHAAAAQklOSU5UMnQBAAAATXPrAAAAUHVzaCBhIHR3by1ieXRlIHVuc2lnbmVkIGludGVnZXIuCgogICAgICBUaGlzIGlzIGEgc3BhY2Ugb3B0aW1pemF0aW9uIGZvciBwaWNrbGluZyBzbWFsbCBwb3NpdGl2ZSBpbnRzLCBpbgogICAgICByYW5nZSgyNTYsIDIqKjE2KS4gIEludGVnZXJzIGluIHJhbmdlKDI1NikgY2FuIGFsc28gYmUgcGlja2xlZCB2aWEKICAgICAgQklOSU5UMiwgYnV0IEJJTklOVDEgaW5zdGVhZCBzYXZlcyBhIGJ5dGUuCiAgICAgIHQEAAAATE9OR1I5AAAAc8cBAABQdXNoIGEgbG9uZyBpbnRlZ2VyLgoKICAgICAgVGhlIHNhbWUgYXMgSU5ULCBleGNlcHQgdGhhdCB0aGUgbGl0ZXJhbCBlbmRzIHdpdGggJ0wnLCBhbmQgYWx3YXlzCiAgICAgIHVucGlja2xlcyB0byBhIFB5dGhvbiBsb25nLiAgVGhlcmUgZG9lc24ndCBzZWVtIGEgcmVhbCBwdXJwb3NlIHRvIHRoZQogICAgICB0cmFpbGluZyAnTCcuCgogICAgICBOb3RlIHRoYXQgTE9ORyB0YWtlcyB0aW1lIHF1YWRyYXRpYyBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyB3aGVuCiAgICAgIHVucGlja2xpbmcgKHRoaXMgaXMgc2ltcGx5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIGRlY2ltYWwtPmJpbmFyeQogICAgICBjb252ZXJzaW9uKS4gIFByb3RvIDIgYWRkZWQgbGluZWFyLXRpbWUgKGluIEM7IHN0aWxsIHF1YWRyYXRpYy10aW1lCiAgICAgIGluIFB5dGhvbikgTE9ORzEgYW5kIExPTkc0IG9wY29kZXMuCiAgICAgIHQFAAAATE9ORzFzAQAAAIpzfAAAAExvbmcgaW50ZWdlciB1c2luZyBvbmUtYnl0ZSBsZW5ndGguCgogICAgICBBIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIGEgUHl0aG9uIGxvbmc7IHRoZSBsb25nMSBlbmNvZGluZwogICAgICBzYXlzIGl0IGFsbC50BQAAAExPTkc0cwEAAACLc34AAABMb25nIGludGVnZXIgdXNpbmcgZm91bmQtYnl0ZSBsZW5ndGguCgogICAgICBBIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIGEgUHl0aG9uIGxvbmc7IHRoZSBsb25nNCBlbmNvZGluZwogICAgICBzYXlzIGl0IGFsbC50BgAAAFNUUklOR3QBAAAAU3PTAAAAUHVzaCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgcmVwci1zdHlsZSBzdHJpbmcsIHdpdGggYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAogICAgICBhbmQgcGVyaGFwcyBlbWJlZGRlZCBlc2NhcGVzLiAgVGhlIGFyZ3VtZW50IGV4dGVuZHMgdW50aWwgdGhlIG5leHQKICAgICAgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAgIHQJAAAAQklOU1RSSU5HdAEAAABUc/0AAABQdXNoIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhIDQtYnl0ZSBsaXR0bGUtZW5kaWFuIHNpZ25lZCBpbnQKICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQgaXMgdGhhdCBtYW55CiAgICAgIGJ5dGVzLCB3aGljaCBhcmUgdGFrZW4gbGl0ZXJhbGx5IGFzIHRoZSBzdHJpbmcgY29udGVudC4KICAgICAgdA8AAABTSE9SVF9CSU5TVFJJTkd0AQAAAFVz8QAAAFB1c2ggYSBQeXRob24gc3RyaW5nIG9iamVjdC4KCiAgICAgIFRoZXJlIGFyZSB0d28gYXJndW1lbnRzOiAgdGhlIGZpcnN0IGlzIGEgMS1ieXRlIHVuc2lnbmVkIGludCBnaXZpbmcKICAgICAgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgc3RyaW5nLCBhbmQgdGhlIHNlY29uZCBpcyB0aGF0IG1hbnkgYnl0ZXMsCiAgICAgIHdoaWNoIGFyZSB0YWtlbiBsaXRlcmFsbHkgYXMgdGhlIHN0cmluZyBjb250ZW50LgogICAgICB0BAAAAE5PTkV0AQAAAE5zFwAAAFB1c2ggTm9uZSBvbiB0aGUgc3RhY2sudAcAAABORVdUUlVFcwEAAACIcyYAAABUcnVlLgoKICAgICAgUHVzaCBUcnVlIG9udG8gdGhlIHN0YWNrLnQIAAAATkVXRkFMU0VzAQAAAIlzJwAAAFRydWUuCgogICAgICBQdXNoIEZhbHNlIG9udG8gdGhlIHN0YWNrLnQHAAAAVU5JQ09ERXQBAAAAVnPnAAAAUHVzaCBhIFB5dGhvbiBVbmljb2RlIHN0cmluZyBvYmplY3QuCgogICAgICBUaGUgYXJndW1lbnQgaXMgYSByYXctdW5pY29kZS1lc2NhcGUgZW5jb2Rpbmcgb2YgYSBVbmljb2RlIHN0cmluZywKICAgICAgYW5kIHNvIG1heSBjb250YWluIGVtYmVkZGVkIGVzY2FwZSBzZXF1ZW5jZXMuICBUaGUgYXJndW1lbnQgZXh0ZW5kcwogICAgICB1bnRpbCB0aGUgbmV4dCBuZXdsaW5lIGNoYXJhY3Rlci4KICAgICAgdAoAAABCSU5VTklDT0RFdAEAAABYcwIBAABQdXNoIGEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4KCiAgICAgIFRoZXJlIGFyZSB0d28gYXJndW1lbnRzOiAgdGhlIGZpcnN0IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4gc2lnbmVkIGludAogICAgICBnaXZpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgc3RyaW5nLiAgVGhlIHNlY29uZCBpcyB0aGF0IG1hbnkKICAgICAgYnl0ZXMsIGFuZCBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlIFVuaWNvZGUgc3RyaW5nLgogICAgICB0BQAAAEZMT0FUdAEAAABGc40CAABOZXdsaW5lLXRlcm1pbmF0ZWQgZGVjaW1hbCBmbG9hdCBsaXRlcmFsLgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIHJlcHIoYV9mbG9hdCksIGFuZCBpbiBnZW5lcmFsIHJlcXVpcmVzIDE3IHNpZ25pZmljYW50CiAgICAgIGRpZ2l0cyBmb3Igcm91bmR0cmlwIGNvbnZlcnNpb24gdG8gYmUgYW4gaWRlbnRpdHkgKHRoaXMgaXMgc28gZm9yCiAgICAgIElFRUUtNzU0IGRvdWJsZSBwcmVjaXNpb24gdmFsdWVzLCB3aGljaCBpcyB3aGF0IFB5dGhvbiBmbG9hdCBtYXBzIHRvCiAgICAgIG9uIG1vc3QgYm94ZXMpLgoKICAgICAgSW4gZ2VuZXJhbCwgRkxPQVQgY2Fubm90IGJlIHVzZWQgdG8gdHJhbnNwb3J0IGluZmluaXRpZXMsIE5hTnMsIG9yCiAgICAgIG1pbnVzIHplcm8gYWNyb3NzIGJveGVzIChvciBldmVuIG9uIGEgc2luZ2xlIGJveCwgaWYgdGhlIHBsYXRmb3JtIEMKICAgICAgbGlicmFyeSBjYW4ndCByZWFkIHRoZSBzdHJpbmdzIGl0IHByb2R1Y2VzIGZvciBzdWNoIHRoaW5ncyAtLSBXaW5kb3dzCiAgICAgIGlzIGxpa2UgdGhhdCksIGJ1dCBtYXkgZG8gbGVzcyBkYW1hZ2UgdGhhbiBCSU5GTE9BVCBvbiBib3hlcyB3aXRoCiAgICAgIGdyZWF0ZXIgcHJlY2lzaW9uIG9yIGR5bmFtaWMgcmFuZ2UgdGhhbiBJRUVFLTc1NCBkb3VibGUuCiAgICAgIHQIAAAAQklORkxPQVR0AQAAAEdz3AEAAEZsb2F0IHN0b3JlZCBpbiBiaW5hcnkgZm9ybSwgd2l0aCA4IGJ5dGVzIG9mIGRhdGEuCgogICAgICBUaGlzIGdlbmVyYWxseSByZXF1aXJlcyBsZXNzIHRoYW4gaGFsZiB0aGUgc3BhY2Ugb2YgRkxPQVQgZW5jb2RpbmcuCiAgICAgIEluIGdlbmVyYWwsIEJJTkZMT0FUIGNhbm5vdCBiZSB1c2VkIHRvIHRyYW5zcG9ydCBpbmZpbml0aWVzLCBOYU5zLCBvcgogICAgICBtaW51cyB6ZXJvLCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBleHBvbmVudCBleGNlZWRzIHRoZSByYW5nZSBvZgogICAgICBhbiBJRUVFLTc1NCBkb3VibGUsIGFuZCByZXRhaW5zIG5vIG1vcmUgdGhhbiA1MyBiaXRzIG9mIHByZWNpc2lvbiAoaWYKICAgICAgdGhlcmUgYXJlIG1vcmUgdGhhbiB0aGF0LCAiYWRkIGEgaGFsZiBhbmQgY2hvcCIgcm91bmRpbmcgaXMgdXNlZCB0bwogICAgICBjdXQgaXQgYmFjayB0byA1MyBzaWduaWZpY2FudCBiaXRzKS4KICAgICAgdAoAAABFTVBUWV9MSVNUdAEAAABdcxMAAABQdXNoIGFuIGVtcHR5IGxpc3QudAYAAABBUFBFTkR0AQAAAGFzrQAAAEFwcGVuZCBhbiBvYmplY3QgdG8gYSBsaXN0LgoKICAgICAgU3RhY2sgYmVmb3JlOiAgLi4uIHB5bGlzdCBhbnlvYmplY3QKICAgICAgU3RhY2sgYWZ0ZXI6ICAgLi4uIHB5bGlzdCtbYW55b2JqZWN0XQoKICAgICAgYWx0aG91Z2ggcHlsaXN0IGlzIHJlYWxseSBleHRlbmRlZCBpbi1wbGFjZS4KICAgICAgdAcAAABBUFBFTkRTdAEAAABlc8cAAABFeHRlbmQgYSBsaXN0IGJ5IGEgc2xpY2Ugb2Ygc3RhY2sgb2JqZWN0cy4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWxpc3QgbWFya29iamVjdCBzdGFja3NsaWNlCiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWxpc3Qrc3RhY2tzbGljZQoKICAgICAgYWx0aG91Z2ggcHlsaXN0IGlzIHJlYWxseSBleHRlbmRlZCBpbi1wbGFjZS4KICAgICAgdAQAAABMSVNUdAEAAABsc3MBAABCdWlsZCBhIGxpc3Qgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gbGlzdCwgd2hpY2ggc2luZ2xlIGxpc3Qgb2JqZWN0IHJlcGxhY2VzIGFsbCBvZiB0aGUKICAgICAgc3RhY2sgZnJvbSB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IG9ud2FyZC4gIEZvciBleGFtcGxlLAoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gbWFya29iamVjdCAxIDIgMyAnYWJjJwogICAgICBTdGFjayBhZnRlcjogIC4uLiBbMSwgMiwgMywgJ2FiYyddCiAgICAgIHQLAAAARU1QVFlfVFVQTEV0AQAAAClzFAAAAFB1c2ggYW4gZW1wdHkgdHVwbGUudAUAAABUVVBMRXQBAAAAdHN2AQAAQnVpbGQgYSB0dXBsZSBvdXQgb2YgdGhlIHRvcG1vc3Qgc3RhY2sgc2xpY2UsIGFmdGVyIG1hcmtvYmplY3QuCgogICAgICBBbGwgdGhlIHN0YWNrIGVudHJpZXMgZm9sbG93aW5nIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QgYXJlIHBsYWNlZCBpbnRvCiAgICAgIGEgc2luZ2xlIFB5dGhvbiB0dXBsZSwgd2hpY2ggc2luZ2xlIHR1cGxlIG9iamVjdCByZXBsYWNlcyBhbGwgb2YgdGhlCiAgICAgIHN0YWNrIGZyb20gdGhlIHRvcG1vc3QgbWFya29iamVjdCBvbndhcmQuICBGb3IgZXhhbXBsZSwKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgMSAyIDMgJ2FiYycKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gKDEsIDIsIDMsICdhYmMnKQogICAgICB0BgAAAFRVUExFMXMBAAAAhXP8AAAAQnVpbGQgYSBvbmUtdHVwbGUgb3V0IG9mIHRoZSB0b3Btb3N0IGl0ZW0gb24gdGhlIHN0YWNrLgoKICAgICAgVGhpcyBjb2RlIHBvcHMgb25lIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIHB1c2hlcyBhIHR1cGxlIG9mCiAgICAgIGxlbmd0aCAxIHdob3NlIG9uZSBpdGVtIGlzIHRoYXQgdmFsdWUgYmFjayBvbnRvIGl0LiAgSW4gb3RoZXIKICAgICAgd29yZHM6CgogICAgICAgICAgc3RhY2tbLTFdID0gdHVwbGUoc3RhY2tbLTE6XSkKICAgICAgdAYAAABUVVBMRTJzAQAAAIZzAQEAAEJ1aWxkIGEgdHdvLXR1cGxlIG91dCBvZiB0aGUgdG9wIHR3byBpdGVtcyBvbiB0aGUgc3RhY2suCgogICAgICBUaGlzIGNvZGUgcG9wcyB0d28gdmFsdWVzIG9mZiB0aGUgc3RhY2sgYW5kIHB1c2hlcyBhIHR1cGxlIG9mCiAgICAgIGxlbmd0aCAyIHdob3NlIGl0ZW1zIGFyZSB0aG9zZSB2YWx1ZXMgYmFjayBvbnRvIGl0LiAgSW4gb3RoZXIKICAgICAgd29yZHM6CgogICAgICAgICAgc3RhY2tbLTI6XSA9IFt0dXBsZShzdGFja1stMjpdKV0KICAgICAgdAYAAABUVVBMRTNzAQAAAIdzBwEAAEJ1aWxkIGEgdGhyZWUtdHVwbGUgb3V0IG9mIHRoZSB0b3AgdGhyZWUgaXRlbXMgb24gdGhlIHN0YWNrLgoKICAgICAgVGhpcyBjb2RlIHBvcHMgdGhyZWUgdmFsdWVzIG9mZiB0aGUgc3RhY2sgYW5kIHB1c2hlcyBhIHR1cGxlIG9mCiAgICAgIGxlbmd0aCAzIHdob3NlIGl0ZW1zIGFyZSB0aG9zZSB2YWx1ZXMgYmFjayBvbnRvIGl0LiAgSW4gb3RoZXIKICAgICAgd29yZHM6CgogICAgICAgICAgc3RhY2tbLTM6XSA9IFt0dXBsZShzdGFja1stMzpdKV0KICAgICAgdAoAAABFTVBUWV9ESUNUdAEAAAB9cxMAAABQdXNoIGFuIGVtcHR5IGRpY3QudAQAAABESUNUdAEAAABkc7IBAABCdWlsZCBhIGRpY3Qgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gZGljdCwgd2hpY2ggc2luZ2xlIGRpY3Qgb2JqZWN0IHJlcGxhY2VzIGFsbCBvZiB0aGUKICAgICAgc3RhY2sgZnJvbSB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IG9ud2FyZC4gIFRoZSBzdGFjayBzbGljZSBhbHRlcm5hdGVzCiAgICAgIGtleSwgdmFsdWUsIGtleSwgdmFsdWUsIC4uLi4gIEZvciBleGFtcGxlLAoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gbWFya29iamVjdCAxIDIgMyAnYWJjJwogICAgICBTdGFjayBhZnRlcjogIC4uLiB7MTogMiwgMzogJ2FiYyd9CiAgICAgIHQHAAAAU0VUSVRFTVI/AAAAc7oAAABBZGQgYSBrZXkrdmFsdWUgcGFpciB0byBhbiBleGlzdGluZyBkaWN0LgoKICAgICAgU3RhY2sgYmVmb3JlOiAgLi4uIHB5ZGljdCBrZXkgdmFsdWUKICAgICAgU3RhY2sgYWZ0ZXI6ICAgLi4uIHB5ZGljdAoKICAgICAgd2hlcmUgcHlkaWN0IGhhcyBiZWVuIG1vZGlmaWVkIHZpYSBweWRpY3Rba2V5XSA9IHZhbHVlLgogICAgICB0CAAAAFNFVElURU1TdAEAAAB1c1wCAABBZGQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBrZXkrdmFsdWUgcGFpcnMgdG8gYW4gZXhpc3RpbmcgZGljdC4KCiAgICAgIFRoZSBzbGljZSBvZiB0aGUgc3RhY2sgZm9sbG93aW5nIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QgaXMgdGFrZW4gYXMKICAgICAgYW4gYWx0ZXJuYXRpbmcgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgdmFsdWVzLCBhZGRlZCB0byB0aGUgZGljdAogICAgICBpbW1lZGlhdGVseSB1bmRlciB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LiAgRXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdGhlCiAgICAgIHRvcG1vc3QgbWFya29iamVjdCBpcyBwb3BwZWQsIGxlYXZpbmcgdGhlIG11dGF0ZWQgZGljdCBhdCB0aGUgdG9wCiAgICAgIG9mIHRoZSBzdGFjay4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWRpY3QgbWFya29iamVjdCBrZXlfMSB2YWx1ZV8xIC4uLiBrZXlfbiB2YWx1ZV9uCiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWRpY3QKCiAgICAgIHdoZXJlIHB5ZGljdCBoYXMgYmVlbiBtb2RpZmllZCB2aWEgcHlkaWN0W2tleV9pXSA9IHZhbHVlX2kgZm9yIGkgaW4KICAgICAgMSwgMiwgLi4uLCBuLCBhbmQgaW4gdGhhdCBvcmRlci4KICAgICAgdAMAAABQT1B0AQAAADBzPAAAAERpc2NhcmQgdGhlIHRvcCBzdGFjayBpdGVtLCBzaHJpbmtpbmcgdGhlIHN0YWNrIGJ5IG9uZSBpdGVtLnQDAAAARFVQdAEAAAAycz0AAABQdXNoIHRoZSB0b3Agc3RhY2sgaXRlbSBvbnRvIHRoZSBzdGFjayBhZ2FpbiwgZHVwbGljYXRpbmcgaXQudAQAAABNQVJLdAEAAAAoc/IAAABQdXNoIG1hcmtvYmplY3Qgb250byB0aGUgc3RhY2suCgogICAgICBtYXJrb2JqZWN0IGlzIGEgdW5pcXVlIG9iamVjdCwgdXNlZCBieSBvdGhlciBvcGNvZGVzIHRvIGlkZW50aWZ5IGEKICAgICAgcmVnaW9uIG9mIHRoZSBzdGFjayBjb250YWluaW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIG9iamVjdHMgZm9yIHRoZW0KICAgICAgdG8gd29yayBvbi4gIFNlZSBtYXJrb2JqZWN0LmRvYyBmb3IgbW9yZSBkZXRhaWwuCiAgICAgIHQIAAAAUE9QX01BUkt0AQAAADFzFQEAAFBvcCBhbGwgdGhlIHN0YWNrIG9iamVjdHMgYXQgYW5kIGFib3ZlIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QuCgogICAgICBXaGVuIGFuIG9wY29kZSB1c2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBzdGFjayBvYmplY3RzIGlzIGRvbmUsCiAgICAgIFBPUF9NQVJLIGlzIHVzZWQgdG8gcmVtb3ZlIHRob3NlIG9iamVjdHMsIGFuZCB0byByZW1vdmUgdGhlIG1hcmtvYmplY3QKICAgICAgdGhhdCBkZWxpbWl0ZWQgdGhlaXIgc3RhcnRpbmcgcG9zaXRpb24gb24gdGhlIHN0YWNrLgogICAgICB0AwAAAEdFVHQBAAAAZ3PoAAAAUmVhZCBhbiBvYmplY3QgZnJvbSB0aGUgbWVtbyBhbmQgcHVzaCBpdCBvbiB0aGUgc3RhY2suCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gb2JqZWN0IHRvIHB1c2ggaXMgZ2l2ZW4gYnkgdGhlIG5ld2xpbmUtdGVybWluYXRlZAogICAgICBkZWNpbWFsIHN0cmluZyBmb2xsb3dpbmcuICBCSU5HRVQgYW5kIExPTkdfQklOR0VUIGFyZSBzcGFjZS1vcHRpbWl6ZWQKICAgICAgdmVyc2lvbnMuCiAgICAgIHQGAAAAQklOR0VUdAEAAABoc6IAAABSZWFkIGFuIG9iamVjdCBmcm9tIHRoZSBtZW1vIGFuZCBwdXNoIGl0IG9uIHRoZSBzdGFjay4KCiAgICAgIFRoZSBpbmRleCBvZiB0aGUgbWVtbyBvYmplY3QgdG8gcHVzaCBpcyBnaXZlbiBieSB0aGUgMS1ieXRlIHVuc2lnbmVkCiAgICAgIGludGVnZXIgZm9sbG93aW5nLgogICAgICB0CwAAAExPTkdfQklOR0VUdAEAAABqc64AAABSZWFkIGFuIG9iamVjdCBmcm9tIHRoZSBtZW1vIGFuZCBwdXNoIGl0IG9uIHRoZSBzdGFjay4KCiAgICAgIFRoZSBpbmRleCBvZiB0aGUgbWVtbyBvYmplY3QgdG8gcHVzaCBpcyBnaXZlbiBieSB0aGUgNC1ieXRlIHNpZ25lZAogICAgICBsaXR0bGUtZW5kaWFuIGludGVnZXIgZm9sbG93aW5nLgogICAgICB0AwAAAFBVVHQBAAAAcHP3AAAAU3RvcmUgdGhlIHN0YWNrIHRvcCBpbnRvIHRoZSBtZW1vLiAgVGhlIHN0YWNrIGlzIG5vdCBwb3BwZWQuCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gbG9jYXRpb24gdG8gd3JpdGUgaW50byBpcyBnaXZlbiBieSB0aGUgbmV3bGluZS0KICAgICAgdGVybWluYXRlZCBkZWNpbWFsIHN0cmluZyBmb2xsb3dpbmcuICBCSU5QVVQgYW5kIExPTkdfQklOUFVUIGFyZQogICAgICBzcGFjZS1vcHRpbWl6ZWQgdmVyc2lvbnMuCiAgICAgIHQGAAAAQklOUFVUUigAAABzsAAAAFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIDEtYnl0ZQogICAgICB1bnNpZ25lZCBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAsAAABMT05HX0JJTlBVVHQBAAAAcnO8AAAAU3RvcmUgdGhlIHN0YWNrIHRvcCBpbnRvIHRoZSBtZW1vLiAgVGhlIHN0YWNrIGlzIG5vdCBwb3BwZWQuCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gbG9jYXRpb24gdG8gd3JpdGUgaW50byBpcyBnaXZlbiBieSB0aGUgNC1ieXRlCiAgICAgIHNpZ25lZCBsaXR0bGUtZW5kaWFuIGludGVnZXIgZm9sbG93aW5nLgogICAgICB0BAAAAEVYVDFzAQAAAIJzjAIAAEV4dGVuc2lvbiBjb2RlLgoKICAgICAgVGhpcyBjb2RlIGFuZCB0aGUgc2ltaWxhciBFWFQyIGFuZCBFWFQ0IGFsbG93IHVzaW5nIGEgcmVnaXN0cnkKICAgICAgb2YgcG9wdWxhciBvYmplY3RzIHRoYXQgYXJlIHBpY2tsZWQgYnkgbmFtZSwgdHlwaWNhbGx5IGNsYXNzZXMuCiAgICAgIEl0IGlzIGVudmlzaW9uZWQgdGhhdCB0aHJvdWdoIGEgZ2xvYmFsIG5lZ290aWF0aW9uIGFuZAogICAgICByZWdpc3RyYXRpb24gcHJvY2VzcywgdGhpcmQgcGFydGllcyBjYW4gc2V0IHVwIGEgbWFwcGluZyBiZXR3ZWVuCiAgICAgIGludHMgYW5kIG9iamVjdCBuYW1lcy4KCiAgICAgIEluIG9yZGVyIHRvIGd1YXJhbnRlZSBwaWNrbGUgaW50ZXJjaGFuZ2VhYmlsaXR5LCB0aGUgZXh0ZW5zaW9uCiAgICAgIGNvZGUgcmVnaXN0cnkgb3VnaHQgdG8gYmUgZ2xvYmFsLCBhbHRob3VnaCBhIHJhbmdlIG9mIGNvZGVzIG1heQogICAgICBiZSByZXNlcnZlZCBmb3IgcHJpdmF0ZSB1c2UuCgogICAgICBFWFQxIGhhcyBhIDEtYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LiAgVGhpcyBpcyB1c2VkIHRvIGluZGV4IGludG8gdGhlCiAgICAgIGV4dGVuc2lvbiByZWdpc3RyeSwgYW5kIHRoZSBvYmplY3QgYXQgdGhhdCBpbmRleCBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgogICAgICB0BAAAAEVYVDJzAQAAAINzTgAAAEV4dGVuc2lvbiBjb2RlLgoKICAgICAgU2VlIEVYVDEuICBFWFQyIGhhcyBhIHR3by1ieXRlIGludGVnZXIgYXJndW1lbnQuCiAgICAgIHQEAAAARVhUNHMBAAAAhHNPAAAARXh0ZW5zaW9uIGNvZGUuCgogICAgICBTZWUgRVhUMS4gIEVYVDQgaGFzIGEgZm91ci1ieXRlIGludGVnZXIgYXJndW1lbnQuCiAgICAgIHQGAAAAR0xPQkFMdAEAAABjc6cBAABQdXNoIGEgZ2xvYmFsIG9iamVjdCAobW9kdWxlLmF0dHIpIG9uIHRoZSBzdGFjay4KCiAgICAgIFR3byBuZXdsaW5lLXRlcm1pbmF0ZWQgc3RyaW5ncyBmb2xsb3cgdGhlIEdMT0JBTCBvcGNvZGUuICBUaGUgZmlyc3QgaXMKICAgICAgdGFrZW4gYXMgYSBtb2R1bGUgbmFtZSwgYW5kIHRoZSBzZWNvbmQgYXMgYSBjbGFzcyBuYW1lLiAgVGhlIGNsYXNzCiAgICAgIG9iamVjdCBtb2R1bGUuY2xhc3MgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4gIE1vcmUgYWNjdXJhdGVseSwgdGhlCiAgICAgIG9iamVjdCByZXR1cm5lZCBieSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBjbGFzcykgaXMgcHVzaGVkIG9uIHRoZQogICAgICBzdGFjaywgc28gdW5waWNrbGluZyBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIGZvcm0gb2YgbG9va3VwLgogICAgICB0BgAAAFJFRFVDRXQBAAAAUnNOBAAAUHVzaCBhbiBvYmplY3QgYnVpbHQgZnJvbSBhIGNhbGxhYmxlIGFuZCBhbiBhcmd1bWVudCB0dXBsZS4KCiAgICAgIFRoZSBvcGNvZGUgaXMgbmFtZWQgdG8gcmVtaW5kIG9mIHRoZSBfX3JlZHVjZV9fKCkgbWV0aG9kLgoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gY2FsbGFibGUgcHl0dXBsZQogICAgICBTdGFjayBhZnRlcjogIC4uLiBjYWxsYWJsZSgqcHl0dXBsZSkKCiAgICAgIFRoZSBjYWxsYWJsZSBhbmQgdGhlIGFyZ3VtZW50IHR1cGxlIGFyZSB0aGUgZmlyc3QgdHdvIGl0ZW1zIHJldHVybmVkCiAgICAgIGJ5IGEgX19yZWR1Y2VfXyBtZXRob2QuICBBcHBseWluZyB0aGUgY2FsbGFibGUgdG8gdGhlIGFyZ3R1cGxlIGlzCiAgICAgIHN1cHBvc2VkIHRvIHJlcHJvZHVjZSB0aGUgb3JpZ2luYWwgb2JqZWN0LCBvciBhdCBsZWFzdCBnZXQgaXQgc3RhcnRlZC4KICAgICAgSWYgdGhlIF9fcmVkdWNlX18gbWV0aG9kIHJldHVybnMgYSAzLXR1cGxlLCB0aGUgbGFzdCBjb21wb25lbnQgaXMgYW4KICAgICAgYXJndW1lbnQgdG8gYmUgcGFzc2VkIHRvIHRoZSBvYmplY3QncyBfX3NldHN0YXRlX18sIGFuZCB0aGVuIHRoZSBSRURVQ0UKICAgICAgb3Bjb2RlIGlzIGZvbGxvd2VkIGJ5IGNvZGUgdG8gY3JlYXRlIHNldHN0YXRlJ3MgYXJndW1lbnQsIGFuZCB0aGVuIGEKICAgICAgQlVJTEQgb3Bjb2RlIHRvIGFwcGx5ICBfX3NldHN0YXRlX18gdG8gdGhhdCBhcmd1bWVudC4KCiAgICAgIElmIHR5cGUoY2FsbGFibGUpIGlzIG5vdCBDbGFzc1R5cGUsIFJFRFVDRSBjb21wbGFpbnMgdW5sZXNzIHRoZQogICAgICBjYWxsYWJsZSBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNvcHlfcmVnIG1vZHVsZSdzCiAgICAgIHNhZmVfY29uc3RydWN0b3JzIGRpY3QsIG9yIHRoZSBjYWxsYWJsZSBoYXMgYSBtYWdpYwogICAgICAnX19zYWZlX2Zvcl91bnBpY2tsaW5nX18nIGF0dHJpYnV0ZSB3aXRoIGEgdHJ1ZSB2YWx1ZS4gIEknbSBub3Qgc3VyZQogICAgICB3aHkgaXQgZG9lcyB0aGlzLCBidXQgSSd2ZSBzdXJlIHNlZW4gdGhpcyBjb21wbGFpbnQgb2Z0ZW4gZW5vdWdoIHdoZW4KICAgICAgSSBkaWRuJ3Qgd2FudCB0byA8d2luaz4uCiAgICAgIHQFAAAAQlVJTER0AQAAAGJzyAIAAEZpbmlzaCBidWlsZGluZyBhbiBvYmplY3QsIHZpYSBfX3NldHN0YXRlX18gb3IgZGljdCB1cGRhdGUuCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBhbnlvYmplY3QgYXJndW1lbnQKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gYW55b2JqZWN0CgogICAgICB3aGVyZSBhbnlvYmplY3QgbWF5IGhhdmUgYmVlbiBtdXRhdGVkLCBhcyBmb2xsb3dzOgoKICAgICAgSWYgdGhlIG9iamVjdCBoYXMgYSBfX3NldHN0YXRlX18gbWV0aG9kLAoKICAgICAgICAgIGFueW9iamVjdC5fX3NldHN0YXRlX18oYXJndW1lbnQpCgogICAgICBpcyBjYWxsZWQuCgogICAgICBFbHNlIHRoZSBhcmd1bWVudCBtdXN0IGJlIGEgZGljdCwgdGhlIG9iamVjdCBtdXN0IGhhdmUgYSBfX2RpY3RfXywgYW5kCiAgICAgIHRoZSBvYmplY3QgaXMgdXBkYXRlZCB2aWEKCiAgICAgICAgICBhbnlvYmplY3QuX19kaWN0X18udXBkYXRlKGFyZ3VtZW50KQoKICAgICAgVGhpcyBtYXkgcmFpc2UgUnVudGltZUVycm9yIGluIHJlc3RyaWN0ZWQgZXhlY3V0aW9uIG1vZGUgKHdoaWNoCiAgICAgIGRpc2FsbG93cyBhY2Nlc3MgdG8gX19kaWN0X18gZGlyZWN0bHkpOyBpbiB0aGF0IGNhc2UsIHRoZSBvYmplY3QKICAgICAgaXMgdXBkYXRlZCBpbnN0ZWFkIHZpYQoKICAgICAgICAgIGZvciBrLCB2IGluIGFyZ3VtZW50Lml0ZW1zKCk6CiAgICAgICAgICAgICAgYW55b2JqZWN0W2tdID0gdgogICAgICB0BAAAAElOU1R0AQAAAGlzkwkAAEJ1aWxkIGEgY2xhc3MgaW5zdGFuY2UuCgogICAgICBUaGlzIGlzIHRoZSBwcm90b2NvbCAwIHZlcnNpb24gb2YgcHJvdG9jb2wgMSdzIE9CSiBvcGNvZGUuCiAgICAgIElOU1QgaXMgZm9sbG93ZWQgYnkgdHdvIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmdzLCBnaXZpbmcgYQogICAgICBtb2R1bGUgYW5kIGNsYXNzIG5hbWUsIGp1c3QgYXMgZm9yIHRoZSBHTE9CQUwgb3Bjb2RlIChhbmQgc2VlCiAgICAgIEdMT0JBTCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoYXQpLiAgc2VsZi5maW5kX2NsYXNzKG1vZHVsZSwgbmFtZSkKICAgICAgaXMgdXNlZCB0byBnZXQgYSBjbGFzcyBvYmplY3QuCgogICAgICBJbiBhZGRpdGlvbiwgYWxsIHRoZSBvYmplY3RzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgdGhlIHRvcG1vc3QKICAgICAgbWFya29iamVjdCBhcmUgZ2F0aGVyZWQgaW50byBhIHR1cGxlIGFuZCBwb3BwZWQgKGFsb25nIHdpdGggdGhlCiAgICAgIHRvcG1vc3QgbWFya29iamVjdCksIGp1c3QgYXMgZm9yIHRoZSBUVVBMRSBvcGNvZGUuCgogICAgICBOb3cgaXQgZ2V0cyBjb21wbGljYXRlZC4gIElmIGFsbCBvZiB0aGVzZSBhcmUgdHJ1ZToKCiAgICAgICAgKyBUaGUgYXJndHVwbGUgaXMgZW1wdHkgKG1hcmtvYmplY3Qgd2FzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrCiAgICAgICAgICBhdCB0aGUgc3RhcnQpLgoKICAgICAgICArIEl0J3MgYW4gb2xkLXN0eWxlIGNsYXNzIG9iamVjdCAodGhlIHR5cGUgb2YgdGhlIGNsYXNzIG9iamVjdCBpcwogICAgICAgICAgQ2xhc3NUeXBlKS4KCiAgICAgICAgKyBUaGUgY2xhc3Mgb2JqZWN0IGRvZXMgbm90IGhhdmUgYSBfX2dldGluaXRhcmdzX18gYXR0cmlidXRlLgoKICAgICAgdGhlbiB3ZSB3YW50IHRvIGNyZWF0ZSBhbiBvbGQtc3R5bGUgY2xhc3MgaW5zdGFuY2Ugd2l0aG91dCBpbnZva2luZwogICAgICBpdHMgX19pbml0X18oKSBtZXRob2QgKHBpY2tsZSBoYXMgd2FmZmxlZCBvbiB0aGlzIG92ZXIgdGhlIHllYXJzOyBub3QKICAgICAgY2FsbGluZyBfX2luaXRfXygpIGlzIGN1cnJlbnQgd2lzZG9tKS4gIEluIHRoaXMgY2FzZSwgYW4gaW5zdGFuY2Ugb2YKICAgICAgYW4gb2xkLXN0eWxlIGR1bW15IGNsYXNzIGlzIGNyZWF0ZWQsIGFuZCB0aGVuIHdlIHRyeSB0byByZWJpbmQgaXRzCiAgICAgIF9fY2xhc3NfXyBhdHRyaWJ1dGUgdG8gdGhlIGRlc2lyZWQgY2xhc3Mgb2JqZWN0LiAgSWYgdGhpcyBzdWNjZWVkcywKICAgICAgdGhlIG5ldyBpbnN0YW5jZSBvYmplY3QgaXMgcHVzaGVkIG9uIHRoZSBzdGFjaywgYW5kIHdlJ3JlIGRvbmUuICBJbgogICAgICByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlIGl0IGNhbiBmYWlsIChhc3NpZ25tZW50IHRvIF9fY2xhc3NfXyBpcwogICAgICBkaXNhbGxvd2VkKSwgYW5kIEknbSBub3QgcmVhbGx5IHN1cmUgd2hhdCBoYXBwZW5zIHRoZW4gLS0gaXQgbG9va3MKICAgICAgbGlrZSB0aGUgY29kZSBlbmRzIHVwIGNhbGxpbmcgdGhlIGNsYXNzIG9iamVjdCdzIF9faW5pdF9fIGFueXdheSwKICAgICAgdmlhIGZhbGxpbmcgaW50byB0aGUgbmV4dCBjYXNlLgoKICAgICAgRWxzZSAodGhlIGFyZ3R1cGxlIGlzIG5vdCBlbXB0eSwgaXQncyBub3QgYW4gb2xkLXN0eWxlIGNsYXNzIG9iamVjdCwKICAgICAgb3IgdGhlIGNsYXNzIG9iamVjdCBkb2VzIGhhdmUgYSBfX2dldGluaXRhcmdzX18gYXR0cmlidXRlKSwgdGhlIGNvZGUKICAgICAgZmlyc3QgaW5zaXN0cyB0aGF0IHRoZSBjbGFzcyBvYmplY3QgaGF2ZSBhIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fCiAgICAgIGF0dHJpYnV0ZS4gIFVubGlrZSBhcyBmb3IgdGhlIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGNoZWNrIGluIFJFRFVDRSwKICAgICAgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciB0aGlzIGF0dHJpYnV0ZSBoYXMgYSB0cnVlIG9yIGZhbHNlIHZhbHVlLCBpdAogICAgICBvbmx5IG1hdHRlcnMgd2hldGhlciBpdCBleGlzdHMgKFhYWCB0aGlzIGlzIGEgYnVnOyBjUGlja2xlCiAgICAgIHJlcXVpcmVzIHRoZSBhdHRyaWJ1dGUgdG8gYmUgdHJ1ZSkuICBJZiBfX3NhZmVfZm9yX3VucGlja2xpbmdfXwogICAgICBkb2Vzbid0IGV4aXN0LCBVbnBpY2tsaW5nRXJyb3IgaXMgcmFpc2VkLgoKICAgICAgRWxzZSAodGhlIGNsYXNzIG9iamVjdCBkb2VzIGhhdmUgYSBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBhdHRyKSwKICAgICAgdGhlIGNsYXNzIG9iamVjdCBvYnRhaW5lZCBmcm9tIElOU1QncyBhcmd1bWVudHMgaXMgYXBwbGllZCB0byB0aGUKICAgICAgYXJndHVwbGUgb2J0YWluZWQgZnJvbSB0aGUgc3RhY2ssIGFuZCB0aGUgcmVzdWx0aW5nIGluc3RhbmNlIG9iamVjdAogICAgICBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgoKICAgICAgTk9URTogIGNoZWNrcyBmb3IgX19zYWZlX2Zvcl91bnBpY2tsaW5nX18gd2VudCBhd2F5IGluIFB5dGhvbiAyLjMuCiAgICAgIHQDAAAAT0JKdAEAAABvc9gEAABCdWlsZCBhIGNsYXNzIGluc3RhbmNlLgoKICAgICAgVGhpcyBpcyB0aGUgcHJvdG9jb2wgMSB2ZXJzaW9uIG9mIHByb3RvY29sIDAncyBJTlNUIG9wY29kZSwgYW5kIGlzCiAgICAgIHZlcnkgbXVjaCBsaWtlIGl0LiAgVGhlIG1ham9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgY2xhc3Mgb2JqZWN0CiAgICAgIGlzIHRha2VuIG9mZiB0aGUgc3RhY2ssIGFsbG93aW5nIGl0IHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBtZW1vCiAgICAgIHJlcGVhdGVkbHkgaWYgc2V2ZXJhbCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MgYXJlIGNyZWF0ZWQuICBUaGlzCiAgICAgIGNhbiBiZSBtdWNoIG1vcmUgZWZmaWNpZW50IChpbiBib3RoIHRpbWUgYW5kIHNwYWNlKSB0aGFuIHJlcGVhdGVkbHkKICAgICAgZW1iZWRkaW5nIHRoZSBtb2R1bGUgYW5kIGNsYXNzIG5hbWVzIGluIElOU1Qgb3Bjb2Rlcy4KCiAgICAgIFVubGlrZSBJTlNULCBPQkogdGFrZXMgbm8gYXJndW1lbnRzIGZyb20gdGhlIG9wY29kZSBzdHJlYW0uICBJbnN0ZWFkCiAgICAgIHRoZSBjbGFzcyBvYmplY3QgaXMgdGFrZW4gb2ZmIHRoZSBzdGFjaywgaW1tZWRpYXRlbHkgYWJvdmUgdGhlCiAgICAgIHRvcG1vc3QgbWFya29iamVjdDoKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgY2xhc3NvYmplY3Qgc3RhY2tzbGljZQogICAgICBTdGFjayBhZnRlcjogIC4uLiBuZXdfaW5zdGFuY2Vfb2JqZWN0CgogICAgICBBcyBmb3IgSU5TVCwgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3RhY2sgYWJvdmUgdGhlIG1hcmtvYmplY3QgaXMKICAgICAgZ2F0aGVyZWQgaW50byBhbiBhcmd1bWVudCB0dXBsZSwgYW5kIHRoZW4gdGhlIGxvZ2ljIHNlZW1zIGlkZW50aWNhbCwKICAgICAgZXhjZXB0IHRoYXQgbm8gX19zYWZlX2Zvcl91bnBpY2tsaW5nX18gY2hlY2sgaXMgZG9uZSAoWFhYIHRoaXMgaXMKICAgICAgYSBidWc7IGNQaWNrbGUgZG9lcyB0ZXN0IF9fc2FmZV9mb3JfdW5waWNrbGluZ19fKS4gIFNlZSBJTlNUIGZvcgogICAgICB0aGUgZ29yeSBkZXRhaWxzLgoKICAgICAgTk9URTogIEluIFB5dGhvbiAyLjMsIElOU1QgYW5kIE9CSiBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgaG93IHRoZXkKICAgICAgZ2V0IHRoZSBjbGFzcyBvYmplY3QuICBUaGF0IHdhcyBhbHdheXMgdGhlIGludGVudDsgdGhlIGltcGxlbWVudGF0aW9ucwogICAgICBoYWQgZGl2ZXJnZWQgZm9yIGFjY2lkZW50YWwgcmVhc29ucy4KICAgICAgdAYAAABORVdPQkpzAQAAAIFzTAEAAEJ1aWxkIGFuIG9iamVjdCBpbnN0YW5jZS4KCiAgICAgIFRoZSBzdGFjayBiZWZvcmUgc2hvdWxkIGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyBhIGNsYXNzCiAgICAgIG9iamVjdCBmb2xsb3dlZCBieSBhbiBhcmd1bWVudCB0dXBsZSAodGhlIHR1cGxlIGJlaW5nIHRoZSBzdGFjawogICAgICB0b3ApLiAgQ2FsbCB0aGVzZSBjbHMgYW5kIGFyZ3MuICBUaGV5IGFyZSBwb3BwZWQgb2ZmIHRoZSBzdGFjaywKICAgICAgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjbHMuX19uZXdfXyhjbHMsICphcmdzKSBpcyBwdXNoZWQgYmFjawogICAgICBvbnRvIHRoZSBzdGFjay4KICAgICAgdAUAAABQUk9UT3MBAAAAgHOuAAAAUHJvdG9jb2wgdmVyc2lvbiBpbmRpY2F0b3IuCgogICAgICBGb3IgcHJvdG9jb2wgMiBhbmQgYWJvdmUsIGEgcGlja2xlIG11c3Qgc3RhcnQgd2l0aCB0aGlzIG9wY29kZS4KICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBwcm90b2NvbCB2ZXJzaW9uLCBhbiBpbnQgaW4gcmFuZ2UoMiwgMjU2KS4KICAgICAgdAQAAABTVE9QdAEAAAAuc88AAABTdG9wIHRoZSB1bnBpY2tsaW5nIG1hY2hpbmUuCgogICAgICBFdmVyeSBwaWNrbGUgZW5kcyB3aXRoIHRoaXMgb3Bjb2RlLiAgVGhlIG9iamVjdCBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjawogICAgICBpcyBwb3BwZWQsIGFuZCB0aGF0J3MgdGhlIHJlc3VsdCBvZiB1bnBpY2tsaW5nLiAgVGhlIHN0YWNrIHNob3VsZCBiZQogICAgICBlbXB0eSB0aGVuLgogICAgICB0BgAAAFBFUlNJRHQBAAAAUHMYAgAAUHVzaCBhbiBvYmplY3QgaWRlbnRpZmllZCBieSBhIHBlcnNpc3RlbnQgSUQuCgogICAgICBUaGUgcGlja2xlIG1vZHVsZSBkb2Vzbid0IGRlZmluZSB3aGF0IGEgcGVyc2lzdGVudCBJRCBtZWFucy4gIFBFUlNJRCdzCiAgICAgIGFyZ3VtZW50IGlzIGEgbmV3bGluZS10ZXJtaW5hdGVkIHN0ci1zdHlsZSAobm8gZW1iZWRkZWQgZXNjYXBlcywgbm8KICAgICAgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzKSBzdHJpbmcsIHdoaWNoICppcyogInRoZSBwZXJzaXN0ZW50IElEIi4KICAgICAgVGhlIHVucGlja2xlciBwYXNzZXMgdGhpcyBzdHJpbmcgdG8gc2VsZi5wZXJzaXN0ZW50X2xvYWQoKS4gIFdoYXRldmVyCiAgICAgIG9iamVjdCB0aGF0IHJldHVybnMgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4gIFRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uCiAgICAgIG9mIHBlcnNpc3RlbnRfbG9hZCgpIGluIFB5dGhvbidzIHVucGlja2xlcjogIGl0IG11c3QgYmUgc3VwcGxpZWQgYnkgYW4KICAgICAgdW5waWNrbGVyIHN1YmNsYXNzLgogICAgICB0CQAAAEJJTlBFUlNJRHQBAAAAUXNYAQAAUHVzaCBhbiBvYmplY3QgaWRlbnRpZmllZCBieSBhIHBlcnNpc3RlbnQgSUQuCgogICAgICBMaWtlIFBFUlNJRCwgZXhjZXB0IHRoZSBwZXJzaXN0ZW50IElEIGlzIHBvcHBlZCBvZmYgdGhlIHN0YWNrIChpbnN0ZWFkCiAgICAgIG9mIGJlaW5nIGEgc3RyaW5nIGVtYmVkZGVkIGluIHRoZSBvcGNvZGUgYnl0ZXN0cmVhbSkuICBUaGUgcGVyc2lzdGVudAogICAgICBJRCBpcyBwYXNzZWQgdG8gc2VsZi5wZXJzaXN0ZW50X2xvYWQoKSwgYW5kIHdoYXRldmVyIG9iamVjdCB0aGF0CiAgICAgIHJldHVybnMgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4gIFNlZSBQRVJTSUQgZm9yIG1vcmUgZGV0YWlsLgogICAgICBzJQAAAHJlcGVhdGVkIG5hbWUgJXIgYXQgaW5kaWNlcyAlZCBhbmQgJWRzJQAAAHJlcGVhdGVkIGNvZGUgJXIgYXQgaW5kaWNlcyAlZCBhbmQgJWRjAQAAAAkAAAAHAAAAQwAAAHOP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dXJyZW50IHBpY2tsZSBwb3NpdGlvbiwKICAgIHN0b3BwaW5nIGFmdGVyIGEgU1RPUCBvcGNvZGUgaXMgZGVsaXZlcmVkLiAgQSB0cmlwbGUgaXMgZ2VuZXJhdGVkIGZvcgogICAgZWFjaCBvcGNvZGU6CgogICAgICAgIG9wY29kZSwgYXJnLCBwb3MKCiAgICBvcGNvZGUgaXMgYW4gT3Bjb2RlSW5mbyByZWNvcmQsIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgb3Bjb2RlLgoKICAgIElmIHRoZSBvcGNvZGUgaGFzIGFuIGFyZ3VtZW50IGVtYmVkZGVkIGluIHRoZSBwaWNrbGUsIGFyZyBpcyBpdHMgZGVjb2RlZAogICAgdmFsdWUsIGFzIGEgUHl0aG9uIG9iamVjdC4gIElmIHRoZSBvcGNvZGUgZG9lc24ndCBoYXZlIGFuIGFyZ3VtZW50LCBhcmcKICAgIGlzIE5vbmUuCgogICAgSWYgdGhlIHBpY2tsZSBoYXMgYSB0ZWxsKCkgbWV0aG9kLCBwb3Mgd2FzIHRoZSB2YWx1ZSBvZiBwaWNrbGUudGVsbCgpCiAgICBiZWZvcmUgcmVhZGluZyB0aGUgY3VycmVudCBvcGNvZGUuICBJZiB0aGUgcGlja2xlIGlzIGEgc3RyaW5nIG9iamVjdCwKICAgIGl0J3Mgd3JhcHBlZCBpbiBhIFN0cmluZ0lPIG9iamVjdCwgYW5kIHRoZSBsYXR0ZXIncyB0ZWxsKCkgcmVzdWx0IGlzCiAgICB1c2VkLiAgRWxzZSAodGhlIHBpY2tsZSBkb2Vzbid0IGhhdmUgYSB0ZWxsKCksIGFuZCBpdCdzIG5vdCBvYnZpb3VzIGhvdwogICAgdG8gcXVlcnkgaXRzIGN1cnJlbnQgcG9zaXRpb24pIHBvcyBpcyBOb25lLgogICAgaf////9OdAQAAAB0ZWxsYwAAAAAAAAAAAQAAAFMAAABzBAAAAGQAAFMoAQAAAE4oAQAAAFJWAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0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ZWQgYnkgZGlzKCksIGlmIHRoZSBwaWNrbGUgY29udGFpbnMgUFVUIG9yIEJJTlBVVCBvcGNvZGVzLgogICAgUGFzc2luZyB0aGUgc2FtZSBtZW1vIG9iamVjdCB0byBhbm90aGVyIGRpcygpIGNhbGwgdGhlbiBhbGxvd3MgZGlzYXNzZW1ibHkKICAgIHRvIHByb2NlZWQgYWNyb3NzIG11bHRpcGxlIHBpY2tsZXMgdGhhdCB3ZXJlIGFsbCBjcmVhdGVkIGJ5IHRoZSBzYW1lCiAgICBwaWNrbGVyIHdpdGggdGhlIHNhbWUgbWVtby4gIE9yZGluYXJpbHkgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhpcy4KCiAgICBPcHRpb25hbCBhcmcgaW5kZW50bGV2ZWwgaXMgdGhlIG51bWJlciBvZiBibGFua3MgYnkgd2hpY2ggdG8gaW5kZW50CiAgICBhIG5ldyBNQVJLIGxldmVsLiAgSXQgZGVmYXVsdHMgdG8gNC4KCiAgICBJbiBhZGRpdGlvbiB0byBwcmludGluZyB0aGUgZGlzYXNzZW1ibHksIHNvbWUgc2FuaXR5IGNoZWNrcyBhcmUgbWFkZToKCiAgICArIEFsbCBlbWJlZGRlZCBvcGNvZGUgYXJndW1lbnRzICJtYWtlIHNlbnNlIi4KCiAgICArIEV4cGxpY2l0IGFuZCBpbXBsaWNpdCBwb3Agb3BlcmF0aW9ucyBoYXZlIGVub3VnaCBpdGVtcyBvbiB0aGUgc3RhY2suCgogICAgKyBXaGVuIGFuIG9wY29kZSBpbXBsaWNpdGx5IHJlZmVycyB0byBhIG1hcmtvYmplY3QsIGEgbWFya29iamVjdCBpcwogICAgICBhY3R1YWxseSBvbiB0aGUgc3RhY2suCgogICAgKyBBIG1lbW8gZW50cnkgaXNuJ3QgcmVmZXJlbmNlZCBiZWZvcmUgaXQncyBkZWZpbmVkLgoKICAgICsgVGhlIG1hcmtvYmplY3QgaXNuJ3Qgc3RvcmVkIGluIHRoZSBtZW1vLgoKICAgICsgQSBtZW1vIGVudHJ5IGlzbid0IHJlZGVmaW5lZC4KICAgIGn/////dAEAAAAgcwQAAAAlNWQ6cwkAAAAlLTRzICVzJXNpAQAAAFKWAAAAcx8AAAAoTUFSSyBhdCB1bmtub3duIG9wY29kZSBvZmZzZXQpcwwAAAAoTUFSSyBhdCAlZClpAAAAAHMXAAAAbm8gTUFSSyBleGlzdHMgb24gc3RhY2tSpAAAAFKmAAAAUqcAAABzGwAAAG1lbW8ga2V5ICVyIGFscmVhZHkgZGVmaW5lZHMnAAAAc3RhY2sgaXMgZW1wdHkgLS0gY2FuJ3Qgc3RvcmUgaW50byBtZW1vcyIAAABjYW4ndCBzdG9yZSBtYXJrb2JqZWN0IGluIHRoZSBtZW1vUp4AAABSoAAAAFKiAAAAcyYAAABtZW1vIGtleSAlciBoYXMgbmV2ZXIgYmVlbiBzdG9yZWQgaW50b2kKAAAAczMAAAB0cmllcyB0byBwb3AgJWQgaXRlbXMgZnJvbSBzdGFjayB3aXRoIG9ubHkgJWQgaXRlbXNzIAAAAGhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9cx4AAABzdGFjayBub3QgZW1wdHkgYWZ0ZXIgU1RPUDogJXJOKAMAAABzAwAAAFBVVFKmAAAAUqcAAAAoAwAAAHMDAAAAR0VUUqAAAABSogAAACgSAAAAUlYAAABSAQAAAHQEAAAAcmVwclJdAAAAUhwAAABSBAAAAHQDAAAAbWF4UmEAAABSXwAAAFJgAAAAdAoAAABtYXJrb2JqZWN0UgoAAABSWwAAAHQDAAAAcG9wdAUAAABpbmRleFIXAAAAUsYAAAB0BgAAAGV4dGVuZCgSAAAAUr4AAAB0AwAAAG91dHQEAAAAbWVtb3QLAAAAaW5kZW50bGV2ZWx0BQAAAHN0YWNrdAgAAABtYXhwcm90b3QJAAAAbWFya3N0YWNrdAsAAABpbmRlbnRjaHVua3QIAAAAZXJyb3Jtc2dS1QAAAFJeAAAAUtQAAAB0BAAAAGxpbmV0BgAAAGJlZm9yZXQFAAAAYWZ0ZXJ0CAAAAG51bXRvcG9wdAcAAABtYXJrbXNndAcAAABtYXJrcG9zKAAAAAAoAAAAAHN2AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weVIAAAAAYwcAAHOSAAAAACcGAQwBCQEGAQYBCgEGARwBDAERAhYBDQENAhIBCQEJAQwDBgEbAQYBEAESAgwBGQEGAQwBDAEJAgoCEwEOAQoCAwETAQ0BFQENAg0DDwESAQwBDQEGAQkBEAEJAhECDwEMARgBEAINAhICGwEMARcBBgEUAQoCBgMPAxIBBgEZAQYBCwEMARIBEAIRAhABBgF0CAAAAF9FeGFtcGxlYwAAAAAAAAAAAQAAAEIAAABzEQAAAGUAAFoBAGQAAIQAAFoCAFJTKAEAAABjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAEAfAAAXwAAZAAAUygBAAAATigBAAAAdAUAAAB2YWx1ZSgCAAAAUg8AAABS9AAAACgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHlSEAAAAO0HAABzAgAAAAABKAMAAABSEQAAAFISAAAAUhAAAAAoAAAAACgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHlS8wAAAOwHAABzAgAAAAYBc40TAAAKPj4+IGltcG9ydCBwaWNrbGUKPj4+IHggPSBbMSwgMiwgKDMsIDQpLCB7J2FiYyc6IHUiZGVmIn1dCj4+PiBwa2wgPSBwaWNrbGUuZHVtcHMoeCwgMCkKPj4+IGRpcyhwa2wpCiAgICAwOiAoICAgIE1BUksKICAgIDE6IGwgICAgICAgIExJU1QgICAgICAgKE1BUksgYXQgMCkKICAgIDI6IHAgICAgUFVUICAgICAgICAwCiAgICA1OiBJICAgIElOVCAgICAgICAgMQogICAgODogYSAgICBBUFBFTkQKICAgIDk6IEkgICAgSU5UICAgICAgICAyCiAgIDEyOiBhICAgIEFQUEVORAogICAxMzogKCAgICBNQVJLCiAgIDE0OiBJICAgICAgICBJTlQgICAgICAgIDMKICAgMTc6IEkgICAgICAgIElOVCAgICAgICAgNAogICAyMDogdCAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCAxMykKICAgMjE6IHAgICAgUFVUICAgICAgICAxCiAgIDI0OiBhICAgIEFQUEVORAogICAyNTogKCAgICBNQVJLCiAgIDI2OiBkICAgICAgICBESUNUICAgICAgIChNQVJLIGF0IDI1KQogICAyNzogcCAgICBQVVQgICAgICAgIDIKICAgMzA6IFMgICAgU1RSSU5HICAgICAnYWJjJwogICAzNzogcCAgICBQVVQgICAgICAgIDMKICAgNDA6IFYgICAgVU5JQ09ERSAgICB1J2RlZicKICAgNDU6IHAgICAgUFVUICAgICAgICA0CiAgIDQ4OiBzICAgIFNFVElURU0KICAgNDk6IGEgICAgQVBQRU5ECiAgIDUwOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKVHJ5IGFnYWluIHdpdGggYSAiYmluYXJ5IiBwaWNrbGUuCgo+Pj4gcGtsID0gcGlja2xlLmR1bXBzKHgsIDEpCj4+PiBkaXMocGtsKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiBLICAgICAgICBCSU5JTlQxICAgIDEKICAgIDY6IEsgICAgICAgIEJJTklOVDEgICAgMgogICAgODogKCAgICAgICAgTUFSSwogICAgOTogSyAgICAgICAgICAgIEJJTklOVDEgICAgMwogICAxMTogSyAgICAgICAgICAgIEJJTklOVDEgICAgNAogICAxMzogdCAgICAgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgOCkKICAgMTQ6IHEgICAgICAgIEJJTlBVVCAgICAgMQogICAxNjogfSAgICAgICAgRU1QVFlfRElDVAogICAxNzogcSAgICAgICAgQklOUFVUICAgICAyCiAgIDE5OiBVICAgICAgICBTSE9SVF9CSU5TVFJJTkcgJ2FiYycKICAgMjQ6IHEgICAgICAgIEJJTlBVVCAgICAgMwogICAyNjogWCAgICAgICAgQklOVU5JQ09ERSB1J2RlZicKICAgMzQ6IHEgICAgICAgIEJJTlBVVCAgICAgNAogICAzNjogcyAgICAgICAgU0VUSVRFTQogICAzNzogZSAgICAgICAgQVBQRU5EUyAgICAoTUFSSyBhdCAzKQogICAzODogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKCkV4ZXJjaXNlIHRoZSBJTlNUL09CSi9CVUlMRCBmYW1pbHkuCgo+Pj4gaW1wb3J0IHBpY2tsZXRvb2xzCj4+PiBkaXMocGlja2xlLmR1bXBzKHBpY2tsZXRvb2xzLmRpcywgMCkpCiAgICAwOiBjICAgIEdMT0JBTCAgICAgJ3BpY2tsZXRvb2xzIGRpcycKICAgMTc6IHAgICAgUFVUICAgICAgICAwCiAgIDIwOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKPj4+IGZyb20gcGlja2xldG9vbHMgaW1wb3J0IF9FeGFtcGxlCj4+PiB4ID0gW19FeGFtcGxlKDQyKV0gKiAyCj4+PiBkaXMocGlja2xlLmR1bXBzKHgsIDApKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBsICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDApCiAgICAyOiBwICAgIFBVVCAgICAgICAgMAogICAgNTogKCAgICBNQVJLCiAgICA2OiBpICAgICAgICBJTlNUICAgICAgICdwaWNrbGV0b29scyBfRXhhbXBsZScgKE1BUksgYXQgNSkKICAgMjg6IHAgICAgUFVUICAgICAgICAxCiAgIDMxOiAoICAgIE1BUksKICAgMzI6IGQgICAgICAgIERJQ1QgICAgICAgKE1BUksgYXQgMzEpCiAgIDMzOiBwICAgIFBVVCAgICAgICAgMgogICAzNjogUyAgICBTVFJJTkcgICAgICd2YWx1ZScKICAgNDU6IHAgICAgUFVUICAgICAgICAzCiAgIDQ4OiBJICAgIElOVCAgICAgICAgNDIKICAgNTI6IHMgICAgU0VUSVRFTQogICA1MzogYiAgICBCVUlMRAogICA1NDogYSAgICBBUFBFTkQKICAgNTU6IGcgICAgR0VUICAgICAgICAxCiAgIDU4OiBhICAgIEFQUEVORAogICA1OTogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKHgsIDEpKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiAoICAgICAgICBNQVJLCiAgICA1OiBjICAgICAgICAgICAgR0xPQkFMICAgICAncGlja2xldG9vbHMgX0V4YW1wbGUnCiAgIDI3OiBxICAgICAgICAgICAgQklOUFVUICAgICAxCiAgIDI5OiBvICAgICAgICAgICAgT0JKICAgICAgICAoTUFSSyBhdCA0KQogICAzMDogcSAgICAgICAgQklOUFVUICAgICAyCiAgIDMyOiB9ICAgICAgICBFTVBUWV9ESUNUCiAgIDMzOiBxICAgICAgICBCSU5QVVQgICAgIDMKICAgMzU6IFUgICAgICAgIFNIT1JUX0JJTlNUUklORyAndmFsdWUnCiAgIDQyOiBxICAgICAgICBCSU5QVVQgICAgIDQKICAgNDQ6IEsgICAgICAgIEJJTklOVDEgICAgNDIKICAgNDY6IHMgICAgICAgIFNFVElURU0KICAgNDc6IGIgICAgICAgIEJVSUxECiAgIDQ4OiBoICAgICAgICBCSU5HRVQgICAgIDIKICAgNTA6IGUgICAgICAgIEFQUEVORFMgICAgKE1BUksgYXQgMykKICAgNTE6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpUcnkgInRoZSBjYW5vbmljYWwiIHJlY3Vyc2l2ZS1vYmplY3QgdGVzdC4KCj4+PiBMID0gW10KPj4+IFQgPSBMLAo+Pj4gTC5hcHBlbmQoVCkKPj4+IExbMF0gaXMgVApUcnVlCj4+PiBUWzBdIGlzIEwKVHJ1ZQo+Pj4gTFswXVswXSBpcyBMClRydWUKPj4+IFRbMF1bMF0gaXMgVApUcnVlCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDApKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBsICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDApCiAgICAyOiBwICAgIFBVVCAgICAgICAgMAogICAgNTogKCAgICBNQVJLCiAgICA2OiBnICAgICAgICBHRVQgICAgICAgIDAKICAgIDk6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgNSkKICAgMTA6IHAgICAgUFVUICAgICAgICAxCiAgIDEzOiBhICAgIEFQUEVORAogICAxNDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDEpKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiBoICAgICAgICBCSU5HRVQgICAgIDAKICAgIDY6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgMykKICAgIDc6IHEgICAgQklOUFVUICAgICAxCiAgICA5OiBhICAgIEFQUEVORAogICAxMDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKCk5vdGUgdGhhdCwgaW4gdGhlIHByb3RvY29sIDAgcGlja2xlIG9mIHRoZSByZWN1cnNpdmUgdHVwbGUsIHRoZSBkaXNhc3NlbWJsZXIKaGFzIHRvIGVtdWxhdGUgdGhlIHN0YWNrIGluIG9yZGVyIHRvIHJlYWxpemUgdGhhdCB0aGUgUE9QIG9wY29kZSBhdCAxNiBnZXRzCnJpZCBvZiB0aGUgTUFSSyBhdCAwLgoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoVCwgMCkpCiAgICAwOiAoICAgIE1BUksKICAgIDE6ICggICAgICAgIE1BUksKICAgIDI6IGwgICAgICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDEpCiAgICAzOiBwICAgICAgICBQVVQgICAgICAgIDAKICAgIDY6ICggICAgICAgIE1BUksKICAgIDc6IGcgICAgICAgICAgICBHRVQgICAgICAgIDAKICAgMTA6IHQgICAgICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDYpCiAgIDExOiBwICAgICAgICBQVVQgICAgICAgIDEKICAgMTQ6IGEgICAgICAgIEFQUEVORAogICAxNTogMCAgICAgICAgUE9QCiAgIDE2OiAwICAgICAgICBQT1AgICAgICAgIChNQVJLIGF0IDApCiAgIDE3OiBnICAgIEdFVCAgICAgICAgMQogICAyMDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKFQsIDEpKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBdICAgICAgICBFTVBUWV9MSVNUCiAgICAyOiBxICAgICAgICBCSU5QVVQgICAgIDAKICAgIDQ6ICggICAgICAgIE1BUksKICAgIDU6IGggICAgICAgICAgICBCSU5HRVQgICAgIDAKICAgIDc6IHQgICAgICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDQpCiAgICA4OiBxICAgICAgICBCSU5QVVQgICAgIDEKICAgMTA6IGEgICAgICAgIEFQUEVORAogICAxMTogMSAgICAgICAgUE9QX01BUksgICAoTUFSSyBhdCAwKQogICAxMjogaCAgICBCSU5HRVQgICAgIDEKICAgMTQ6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpUcnkgcHJvdG9jb2wgMi4KCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDIpKQogICAgMDogXHg4MCBQUk9UTyAgICAgIDIKICAgIDI6IF0gICAgRU1QVFlfTElTVAogICAgMzogcSAgICBCSU5QVVQgICAgIDAKICAgIDU6IGggICAgQklOR0VUICAgICAwCiAgICA3OiBceDg1IFRVUExFMQogICAgODogcSAgICBCSU5QVVQgICAgIDEKICAgMTA6IGEgICAgQVBQRU5ECiAgIDExOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMgoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoVCwgMikpCiAgICAwOiBceDgwIFBST1RPICAgICAgMgogICAg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b21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHl0CAAAADxtb2R1bGU+CwAAAHNoBAAABgIPkQYEBgEGAhYiEAIJDAYBBgEGAQYBCQMJDgYBBgEGAQYBCQMJDgYBBgEGAQYBCQMPMQYBBgEGAQYFCQIJAwYBBgEGAQYGCQIJCQYBBgEGAQYICQIJFgYBBgEGAQYGCQMJEQYBBgEGAQYGCQMJDgYBBgEGAQYGCQIJGwYBBgEGAQYHCQMJHQkYBgEGAQYBBggJAgYBBgEGAQYFCQMJCQYBBgEGAQYICQIJEAYBBgEGAQYNCQQQAgkVBgEGAQYBBgYJAgkXBgEGAQYBBggJCRYeBgEGAQYBCQIGAQYBBgEJAgYBBgEPAQkDBgEGAQkBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQYBCQIGAQYBDAEJAgYBBgEGAQkCBgEGAQYBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQYKCQIGAQYBBg4JBRY7BgUMAQYBBgEGAQkBBhIGAgwBBgEGAQYBCQEGBwYCDAEGAQYBBgEJAQYFBgIMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGCwYCDAEGAQYBBgEJAQYEBgIMAQYBBgEGAQkBBgQGBAwBBgEGAQYBCQEGBgYCDAEGAQYBBgEJAQYGBgIMAQYBBgEGAQkBBgYGBAwBBgEGAQYBCQEGAQYFDAEGAQYBBgEJAQYDBgIMAQYBBgEGAQkBBgMGBAwBBgEGAQYBCQEGBgYCDAEGAQYBBgEJAQYGBgQMAQYBBgEGAQkBBg0GAgwBBgEGAQYBCQEGCQYEDAEGAQYBBgEJAQYBBgIMAQYBBgEMAQkBBgcGAgwBBgEGAQ8BCQEGBwYCDAEGAQYBDAEJAQYJBgQMAQYBBgEGAQkBBgEGAgwBBgEGAQwBCQEGCQYCDAEGAQYBCQEJAQYIBgIMAQYBBgEMAQkBBggGAgwBBgEGAQ8BCQEGCAYEDAEGAQYBBgEJAQYBBgIMAQYBBgEMAQkBBgoGAgwBBgEGAQ8BCQEGBwYCDAEGAQYBDwEJAQYOBgQMAQYBBgEJAQYBBgEGAgwBBgEGAQkBDAEGAQYCDAEGAQYBBgEJAQYGBgIMAQYBBgEMAQYBBgYGBQwBBgEGAQYBCQEGBgYCDAEGAQYBBgEJAQYFBgIMAQYBBgEGAQkBBgUGAgwBBgEGAQYBBgEGBgYCDAEGAQYBBgEGAQYFBgIMAQYBBgEGAQYBBgUGBQwBBgEGAQYBCQEGDwYCDAEGAQYBBgEJAQYEBgIMAQYBBgEGAQkBBgQGBQwBBgEGAQYBCQEGCAYHDAEGAQYBDAEJAQYWBgIMAQYBBgEMAQkBBhkGAgwBBgEGAQwBCQEGMQYCDAEGAQYBDwEJAQYaBgIMAQYBBgEMAQkBBggGBAwBBgEGAQYBBgEGBQYCDAEGAQYBCQEGAQYGBgQMAQYBBgEGAQkBBgoGAgwBBgEGAQkBCQEGBwwCAwMGAQYCGQEPAQYBIAEPAQYBIAINARECDAcGAQ0BEQEDAgwmBwEDBQk5CRsSiRPPBhwGAgoBCgMJBAwB