Mw0NChZae2MUCAAA4wAAAAAAAAAAAAAAAAMAAABAAAAAcyoAAABkAGQBbABtAVoBAQBkB2QDZASEAVoCZQNlBGYCZgFkBWQGhAFaBWQCUwApCOkAAAAAKQHaC2ZpbHRlcmZhbHNlTmMCAAAAAAAAAAYAAAADAAAAYwAAAHNqAAAAdACDAH0CfAJqAX0DfAFkAWsIcjp4UHQCfAJqA3wAgwJEAF0SfQR8A3wEgwEBAHwEVgABAHEiVwBuLHgqfABEAF0ifQR8AXwEgwF9BXwFfAJrB3JAfAN8BYMBAQB8BFYAAQBxQFcAZAFTACkCekhMaXN0IHVuaXF1ZSBlbGVtZW50cywgcHJlc2VydmluZyBvcmRlci4gUmVtZW1iZXIgYWxsIGVsZW1lbnRzIGV2ZXIgc2Vlbi5OKQTaA3NldNoDYWRkcgIAAADaDF9fY29udGFpbnNfXykG2ghpdGVyYWJsZdoDa2V52gRzZWVuWghzZWVuX2FkZNoHZWxlbWVudNoBa6kAcgsAAAD6ji9ob21lL3VldGxoci9Eb2N1bWVudHMvU2VybW9QbG90X2JhY2tlbmQvZHJhZnRfU1JBTV9ibGFja2JveC9VRVRSVl9FU29DX21wdzgvdmVudi9saWIvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvaW1wb3J0bGliX21ldGFkYXRhL19pdGVydG9vbHMucHnaD3VuaXF1ZV9ldmVyc2VlbgQAAABzFgAAAAAEBgEGAQgBEgEIAQwCCgEIAQgBCAFyDQAAAGMCAAAAAAAAAAIAAAALAAAAQwAAAHNUAAAAfABkAWsIchB0AGYAgwFTAHwBZAFrCXIsdAF8AHwBgwJyLHQAfABmAYMBUwB5CHQAfACDAVMABAB0AmsKck4BAAEAAQB0AHwAZgGDAVMAWABkAVMAKQJheAQAAElmICpvYmoqIGlzIGl0ZXJhYmxlLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBpdHMgaXRlbXM6OgoKICAgICAgICA+Pj4gb2JqID0gKDEsIDIsIDMpCiAgICAgICAgPj4+IGxpc3QoYWx3YXlzX2l0ZXJhYmxlKG9iaikpCiAgICAgICAgWzEsIDIsIDNdCgogICAgSWYgKm9iaiogaXMgbm90IGl0ZXJhYmxlLCByZXR1cm4gYSBvbmUtaXRlbSBpdGVyYWJsZSBjb250YWluaW5nICpvYmoqOjoKCiAgICAgICAgPj4+IG9iaiA9IDEKICAgICAgICA+Pj4gbGlzdChhbHdheXNfaXRlcmFibGUob2JqKSkKICAgICAgICBbMV0KCiAgICBJZiAqb2JqKiBpcyBgYE5vbmVgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhYmxlOgoKICAgICAgICA+Pj4gb2JqID0gTm9uZQogICAgICAgID4+PiBsaXN0KGFsd2F5c19pdGVyYWJsZShOb25lKSkKICAgICAgICBbXQoKICAgIEJ5IGRlZmF1bHQsIGJpbmFyeSBhbmQgdGV4dCBzdHJpbmdzIGFyZSBub3QgY29uc2lkZXJlZCBpdGVyYWJsZTo6CgogICAgICAgID4+PiBvYmogPSAnZm9vJwogICAgICAgID4+PiBsaXN0KGFsd2F5c19pdGVyYWJsZShvYmopKQogICAgICAgIFsnZm9vJ10KCiAgICBJZiAqYmFzZV90eXBlKiBpcyBzZXQsIG9iamVjdHMgZm9yIHdoaWNoIGBgaXNpbnN0YW5jZShvYmosIGJhc2VfdHlwZSlgYAogICAgcmV0dXJucyBgYFRydWVgYCB3b24ndCBiZSBjb25zaWRlcmVkIGl0ZXJhYmxlLgoKICAgICAgICA+Pj4gb2JqID0geydhJzogMX0KICAgICAgICA+Pj4gbGlzdChhbHdheXNfaXRlcmFibGUob2JqKSkgICMgSXRlcmF0ZSBvdmVyIHRoZSBkaWN0J3Mga2V5cwogICAgICAgIFsnYSddCiAgICAgICAgPj4+IGxpc3QoYWx3YXlzX2l0ZXJhYmxlKG9iaiwgYmFzZV90eXBlPWRpY3QpKSAgIyBUcmVhdCBkaWN0cyBhcyBhIHVuaXQKICAgICAgICBbeydhJzogMX1dCgogICAgU2V0ICpiYXNlX3R5cGUqIHRvIGBgTm9uZWBgIHRvIGF2b2lkIGFueSBzcGVjaWFsIGhhbmRsaW5nIGFuZCB0cmVhdCBvYmplY3RzCiAgICBQeXRob24gY29uc2lkZXJzIGl0ZXJhYmxlIGFzIGl0ZXJhYmxlOgoKICAgICAgICA+Pj4gb2JqID0gJ2ZvbycKICAgICAgICA+Pj4gbGlzdChhbHdheXNfaXRlcmFibGUob2JqLCBiYXNlX3R5cGU9Tm9uZSkpCiAgICAgICAgWydmJywgJ28nLCAnbyddCiAgICBOKQPaBGl0ZXLaCmlzaW5zdGFuY2XaCVR5cGVFcnJvcikC2gNvYmpaCWJhc2VfdHlwZXILAAAAcgsAAAByDAAAANoPYWx3YXlzX2l0ZXJhYmxlFwAAAHMQAAAAACkIAQgCEgEKAgIBCAEOAXISAAAAKQFOKQbaCWl0ZXJ0b29sc3ICAAAAcg0AAADaA3N0ctoFYnl0ZXNyEgAAAHILAAAAcgsAAAByCwAAAHIMAAAA2gg8bW9kdWxlPgEAAABzBAAAAAwDChM=