UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDE3IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZXlJZGVudGlmaWVyICAgICAgICAgICAgIFswXSBLZXlJZGVudGlmaWVyICAgICAgICAgICAgT1BUSU9OQUwsCiAgICAgIGF1dGhvcml0eUNlcnRJc3N1ZXIgICAgICAgWzFdIEdlbmVyYWxOYW1lcyAgICAgICAgICAgICBPUFRJT05BTCwKICAgICAgYXV0aG9yaXR5Q2VydFNlcmlhbE51bWJlciBbMl0gQ2VydGlmaWNhdGVTZXJpYWxOdW10eUNlcnRTZXJpYWxOdW1iZXIgWzJdIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyICBPUFRJT05BTCB9CiAgICAtLSBhdXRob3JpdHlDZXJ0SXNzdWVyIGFuZCBhdXRob3JpdHlDZXJ0U2VyaWFsTnVtYmVyIHNoYWxsIGJvdGgKICAgIC0tIGJlIHByZXNlbnQgb3IgYm90aCBiZSBhYnNnZW50CktleUlkZW50aWZpZXIgOjo9IE9DVEVUIFNUUklORwppZC1jZS1zdWJqeGN0S2V5SWRlbiwKICAgICBwb2xpY3lRdWFsaWZpZXJzICAgU0VRVUVOQ0UgU0laRSAoMS4uTUFYKSBPRgogICAgICAgICAgICAgUG9saWN5UXVhbGlmaWVySW5mbyBPUFRJT05BTCB9CkNlcnRQb2xpY3lJZCA6Oj0gT0JKRUNUIElERU5USUZJRVIKUG9saWN5UXVhbGlmaWVySW5mbyA6Oj0gU0VRVUVOQ0UgewogICAgICAgcG9saWN5UXVhbGlmaWVySWQgIFBvbGljeVF1YWxpZmllcklkLAogICAgICAgcXVhbGlmaWVyICAgICAgICBBTlkgREVGSU5FRCBCWSBwb2xpY3lRdWFsaWZpZXJJZCB9ClBvbGljeVF1YWxpZmllcklkIDo6PQogICAgT0JKRUNUIElERU5USUZJRVIgIC0tICggaWQtcXQtY3BzIHwgaWQtcXQtdW5vdGljZSApCkNQU3UAACA6Oj0gSUE1U3RyaW5nClVzZXJOb3RpY2UgOjo9IFNFUVVFTkNFIHsKICAgICBub3RpY2VSZWYgICAgICAgIE5vdGljZVJlZmVyZW5jZSBPUFRJT05OVElGSUVSIDo6PSB7IGlkLWNlIDIxIH0KQ1JMUmVhc29uIDo6PSBFTlVNRVJBVEVEIHsKICAgICB1bnNwZWNpZmllZCAgICAgICAgICAgICAoMCksCiAgICAga2V5Q29tcHJvbWlzZSAgICAgICAgICAgKDEpLAogICAgIGNBQ29tcHJvbWlzZSAgICAgICAgICAgICgyKSwKICAgICBhZmZpbGlhdGlvbkNoYW5nZWQgICAgICAoMyksCiAgIG9uT2ZPcGVyYXRpb24gICAgKDUpLAogICAgIGNlcnRpZmljYXRlSG9sZCAgICAgICAgICg2KSwKICAgICByZW1vdmVGcm9tQ1JMICAgICAgICAgICAoOCkgfQppZC1jZS1jZXJ0aWZpY2F0ZUlzc3VlciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZSAyOSB9CkNlcnRpZmljYXRlSXNzdWVyIDo6PSBHZW5lcmFsTmFtZXMKaWQtY2UtaG9sZEluc3RydWN0aW9uQ29kZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZTp7aCg5KTsgMjMgfQpIb2xkSW5zdHJ1Y3Rpb25Db2RlIDo6PSBPQkpFQ1REYXRlIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IGlkLWNlIDI0IH0KSW52YWxpZGl0eURhdGUgOjo9ICBHZW5lcmFsaXplZFRpbWUKVmlzaWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyNl0gSU1QTElDSVQgT0NURVQgU1RSSU5HCk51bWVyjptZAAAAAAAgOjo9IFtVTklWRVJTQUwgMThdIElNUExJQ0lUIE9DVEVUIFNUUklORwpJQTVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjJdIElNUExJQ0lUIE9DVEVUIFNUUklORwpUZWxldGV4U3RyaW5nIDo6PSBbVU5JVkVSU0FMIDIwXSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKUHJpbnRhYmxlU3RyaW5nIDo6PSBbVU5JVkVSU0FMIDE5XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKVW5pdmVyc2FsU3RyaW5nIDo6PSBbVU5JVkVSU0FMIDI4XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKICAgICAgICAtLSBVbml2ZXJzYWxTdHJpbmcgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDh9Clg1MjBTdGF0ZU9yUHJvdmluY2VOYW1lICAgICAgIAA1Ojo9IERpcmVjdG9yeVN0cmluZwppZC1hdC1vcmdhbml6YXRpb25OYW1lICAgICAgICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCAxMH0KWDUyME9yZ2FuaXphdGlvbk5hbWUgOjo9IERpcmVjdG9yeVN0cmluZwppZC1hdC1vcmdhbml6YXRpb25hbFVpbnROYW1lICAgIEF0dHJpYnN0cmlidXRpb25Qb2ludCAgICAgICBbMF0gICAgIEVYUExJQ0lUIERpc3RyaWJ1dGlvblBvaW50TmFtZSBPUFRJT05BTCwKICAgICByZWFzb25zICAgICAgICAgICAgICAgICBbMV0gICAgIFJlYXNvbkZsYWdzIE9QVElPTkFMLAogICAgIGNSTElzc3VlciAgICAgICAgICAgICAgIFsyXSAgICAgR2VuZXJhbE5hbWVzIE9QVElPTkFMCn0KRGlzdHJpYnV0aW97aWQtYXQgMTB9Clg1MjBPcmdhbml6YXRpb25OYW1lIDo6PSBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtb3JnYW5pemF0aW9uYWxVaW50TmFtZSAgICBBdHRyaWJzdHJpYnV0aW9uUG9pbnQgICAgICAgWzBdICAgICBFWFBMSUNJVCBEaXN0cmlidXRpb25Qb2ludE5hbWUgT1BUSU9OQUwsCiAgICAgcmVhc29ucyAgICAgICAgICAgICAgICAgWzFdICAgICBSZWFzb25GbGFncyBPUFRJT05BTCwKICAgICBjUkxJc3N1ZXIgICAgICAgICAgICAgICBbMl0gICAgIEdlbmVyYWxOYW1lcyBPUFRJT05BTAp9CkRpc3RyaWJ1dGlvblBvaW50TmFtZSA6Oj0gQ0hPSUNFIHsKICAgIGZ1bGxOYW1lICAgICAgICAgICAgICAgIFswXSAgICAgR2VuZXJhbE5hbWVzLAogICAgbmFtZVJlbGF0aXZlVG9DUkxJc3N1ZXIgWzFdICAgICBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lCn0KUmVhc29uRmxhZ3MgOjo9IEJJVCBTVFJJTkcgewogICAgIHVudXNlZCAgICAgICAgICAgICAgICAgICgwKSwKICAgICBrZXlDb21wcm9taXNlICAgYm9keSgyKSB1cyg4NDApIHg5Y20oMTAwNDApIDJCSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAge2hvbGRJblN0cn11Y0NUIElERU5USUZJRVIgOjo9IHsgaWQtY2UgMjkgfQpDZXJ0aWZpY2F0ZUlzc3VlciA6Oj0gR2VuZXJhbE5hbWVzCmlkLWNlLWhvbGRJbnN0cnVjdGlvbkNvZGUgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgaWQtY2U6e2goOSk7IDIzIH0KSG9sZEluc3RydWN0aW9uQ29kZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKaG9sZEluc3RydWN0aW9uIE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAge2pvaW50LWlzby1pdHUtdCgyKSBtZW1iZXItYm9keSgyKSB1cyg4NDApIHg5Y20oMTAwNDApIDJ9CmlkLWhvbGRpbnN0cnVjdGlvbi1ub25lIE9CSkVDVCBJREVOVElGSUVSICA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ1Y3Rpb24gMX0gLS0gZGVwcmVjYXRlZAppZC1ob2xkaW5zdHJ1Y3Rpb24tY2FsbGlzc3VlciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ9dWN0aW9uIDJ9CmlkLWhvbGRpbnN0cnVjdGlvbi1yZWplY3QgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RydWN0aW9uIDN9CmlkLWNlLWludmFsaWRpdH9EYXRlIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IGlkLWNlIDI0IH0KSW52YWxpZGl0eURhdGUgOjo9ICBHZW5lcmFsaXplZFRpbWUKVmlzaWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyNl0gSU1QTElDSVQgT0NURVQgU1RSSU5HCk51bWVyjptZAAAAAAAgOjo9IFtVTklWRVJTQUwgMThdIElNUExJQ0lUIE9DVEVUIFNUUklORwpJQTVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjJdIElNUExJQ0lUIE9DVEVUIFNUUklORwpUZWxldGV4U3RyaW5nIDo6PSBbVU5JVkVSU0FMIDIwXSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKUHJpbnRhYmxlU3RyaW5nIDo6PSBbVU5JVkVSU0FMIDE5XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKVW5pdmVyc2FsU3RyaW5nIDo6PSBbVU5JVkVSU0FMIDI4XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKICAgICAgICBFUiA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ9dWNDVCBJREVOVElGSUVSIDo6PSB7IGlkLWNlIDI5IH0KQ2VydGlmaWNhdGVJc3N1ZXIgOjo9IEdlbmVyYWxOYW1lcwppZC1jZS1ob2xkSW5zdHJ1Y3Rpb25Db2RlIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IGlkLWNlOntoKDkpOyAyMyB9CkhvbGRJbnN0cnVjdGlvbkNvZGUgOjo9IE9CSkVDVCBJREVOVElGSUVSCmhvbGRJbnN0cnVjdGlvbiBPQkpFQ1QgSURFTlRJRklFUiA6Oj0KICAgICAgICAgIHtqb2ludC1pc28taXR1LXQoMikgbWVtYmVyLWJvZHkoMikgdXMoODQwKSB4OWNtKDEwMDQwKSAyfQppZC1ob2xkaW5zdHJ1Y3Rpb24tbm9uZSBPQkpFQ1QgSURFTlRJRklFUiAgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RydWN0aW9uIDF9IC0tIGRlcHJlY2F0ZWQKaWQtaG9sZGluc3RydWN0aW9uLWNhbGxpc3N1ZXIgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RyfXVjdGlvbiAyfQppZC1ob2xkaW5zdHJ1Y3Rpb24tcmVqZWN0IE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAge2hvbGRJbnN0cnVjdGlvbiAzfQppZC1jZS1pbnZhbGlkaXR/RGF0ZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZSAyNCB9CkludmFsaWRpdHlEYXRlIDq6PSAgR2VuZXJhbGl6ZWRUaW1lClZpc2libGVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjZdIElNUExJQ0lUIE9DVEVUIFNUUklORwpOdW1lco6bWQAAAAAAIDo6PSBbVU5JVkVSU0FMIDE4XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKSUE1U3RyaW5nIDo6PSBbVU5JVkVSU0FMIDIyXSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKVGVsZXRleFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyMF0gSU1QTElDSVQgT0NURVQgU1RSSU5HClByaW50YWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAxOV0gSU1QTElDSVQgT0NURVQgU1RSSU5HClVuaXZlcnNhbFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyOF0gSU1QTElDSVQgT0NURVQgU1RSSU5HCiAgICAgICAgLS0gVW5pdmVyc2FsU3RyaW5nICAgIEF0dHJpYnV0ZVR5cGVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjBdIElNUExJQ0lUIE9DVEVUIFNUUklORwpQcmludGFibGVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMTldIElNUExJQ0lUIE9DVEVUIFNUUklORwpVbml2ZXJzYWxTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjhdIElNUExJQ0lUIE9DVEVUIFNUUklORwogICAgICAgIEVSIDo6PQogICAgICAgICAgICAgICAge2hvbGRJbnN0cn11Y0NUIElERU5USUZJRVIgOjo9IHsgaWQtY2UgMjkgfQpDZXJ0aWZpY2F0ZUlzc3VlciA6Oj0gR2VuZXJhbE5hbWVzCmlkLWNlLWhvbGRJbnN0cnVjdGlvbkNvZGUgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgaWQtY2U6e2goOSk7IDIzIH0KSG9sZEluc3RydWN0aW9uQ29kZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKaG9sZEluc3RydWN0aW9uIE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAge2pvaW50LWlzby1pdHUtdCgyKSBtZW1iZXItYm9keSgyKSB1cyg4NDApIHg5Y20oMTAwNDApIDJ9CmlkLWhvbGRpbnN0cnVjdGlvbi1ub25lIE9CSkVDVCBJREVOVElGSUVSICA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ1Y3Rpb24gMX0gLS0gZGVwcmVjYXRlZAppZC1ob2xkaW5zdHJ1Y3Rpb24tY2FsbGlzc3VlciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ9dWN0aW9uIDJ9CmlkLWhvbGRpbnN0cnVjdGlvbi1yZWplY3QgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RydWN0aW9uIDN9CmlkLWNlLWludmFsaWRpdH9EYXRlIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IGlkLWNlIDI0IH0KSW52YWxpZGl0eURhdGUgOjo9ICBHZW5lcmFsaXplZFRpbWUKVmlzaWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyNl0gSU1QTElDSVQgT0NURVQgU1RSSU5HCk51bWVyjptZAAAAAAAgOjo9IFtVTklWRVJTQUwgMThdIElNUExJQ0lUIE9DVEVUIFNUUklORwpJQTVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjJdIElNUExJQ2QtaG9sZGluc3RydWN0aW9uLWNhbGxpc3N1ZXIgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RyfXVjdGlvbiAyfQppZC1ob2xkaW5zdHJ1Y3Rpb24tcmVqZWN0IE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAge2hvbGRJbnN0cnVjdGlvbiAzfQppZC1jZS1pbnZhbGlkaXR/RGF0ZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZSAyNCB9CkludmFsaWRpdHlEYXRlIDo6PSAgR2VuZXJhbGl6ZWRUaW1lClZpc2libGVTdHJpbmcgOjo9IFtVTklWRVJTQUwgMjZdIElNUExJQ0lUIE9DVEVUIFNUUklORwpOdW1lco6bWQAAAAAAIDo6PSBbVU5JVkVSU0FMIDE4XSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKSUE1U3RyaW5nIDo6PSBbVU5JVkVSU0FMIDIyXSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKVGVsZXRleFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyMF0gSU1QTElDSVQgT0NURVQgU1RSSU5HClByaW50YWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAxOV0gSU1QTElDSVQgT0NURVQgU1RSSU5HClVuaXZlcnNhbFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyOF0gSU1QTElDSVQgT0NURVQgU1RSSU5HCiAgICAgICAgRVIgOjo9CiAgICAgICAgICAgICAgICB7aG9sZEluc3RyfXVjQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZSAyOSB9CkNlcnRpZmljYXRlSXNzdWVyIDo6PSBHZW5lcmFsTmFtZXMKaWQtY2UtaG9sZEluc3RydWN0aW9uQ29kZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBpZC1jZTp7aCg5KTsgMjMgfQpIb2xkSW5zdHJ1Y3Rpb25Db2RlIDo6PSBPQkpFQ1QgSURFTlRJRklFUgpob2xkSW5zdHJ1Y3Rpb24gT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICB7am9pbnQtaXNvLWl0dS10KDIpIG1lbWJlci1ib2R5KDIpIHVzKDg0MCkgeDljbSgxMDA0MCkgMn0KaWQtaG9sZGluc3RydWN0aW9uLW5vbmUgT0JKRUNUIElERU5USUZJRVIgIDo6PQogICAgICAgICAgICAgICAge2hvbGRJbnN0cnVjdGlvbiAxfSAtLSBkZXByZWNhdGVkCmlkLWhvbGRpbnN0cnVjdGlvbi1jYWxsaXNzdWVyIE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAge2hvbGRJbnN0cn11Y3Rpb24gMn0KaWQtaG9sZGluc3RydWN0aW9uLXJlamVjdCBPQkpFQ1QgSURFTlRJRklFUiA6Oj0KICAgICAgICAgICAgICAgIHtob2xkSW5zdHJ1Y3Rpb24gM30KaWQtY2UtaW52YWxpZGl0f0RhdFIgOjo9IHsgaWQtY2UgMjQgfQpJbnZhbGlkaXR5RGF0ZSA6Oj0gIEdlbmVyYWxpemVkVGltZQpWaXNpYmxlU3RyaW5nIDo6PSBbVU5JVkVSU0FMIDJTVFJJTkcKSUE1U3RyaW5nIDo6PSBbVU5JVkVSU0FMIDIyXSBJTVBMSUNJVCBPQ1RFVCBTVFJJTkcKVGVsZXRleFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyMF0gSU1QTElDSVQgT0NURVQgU1RSSU5HClByaW50YWJsZVN0cmluZyA6Oj0gW1VOSVZFUlNBTCAxOV0gSU1QTElDSVQgT0NURVQgU1RSSU5HClVuaXZlcnNhbFN0cmluZyA6Oj0gW1VOSVZFUlNBTCAyOF0gSU1QTElDSVQgT0NURVQgU1RSSU5HCiAgICAgICAgLS0gVW5pdmVyc2FsU3RyaW5nICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCA4fQpYNTIwU3RhdGVPclByb3ZpbmNlTmFtZSAgICAgICAgIDo6PSBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtb3JnYW5pemF0aW9uTmFtZSAgICAgICAgICBBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgMTB9Clg1MjBPcmdhbml6YXRpb25OYW1lIDo6PSBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtb3JnYW5pemF0aW9uYWxVbml0TmFtZSAgICBBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgMTF9Clg1MjBPcmdhbml6YXRpb25hbFVuaXROYW1l