1688054432
waR3U4bTeM%3A8453e56ff538a71058b34f60b9eebfe7-cff13e0d58976a762e815d5b787ecfbe
s:61336:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6Njc6IkNoZWNrcyB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIGNsYXNzIGFuZCBpdHMgaW5oZXJpdGFuY2UgaXMgY29ycmVjdC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJjZmYxM2UwZDU4OTc2YTc2MmU4MTVkNWI3ODdlY2ZiZSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI1OiJDbGFzc0RlY2xhcmF0aW9uU25pZmYucGhwIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6OTI6InZlbmRvci9zcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyL3NyYy9TdGFuZGFyZHMvUFNSMi9TbmlmZnMvQ2xhc3Nlcy9DbGFzc0RlY2xhcmF0aW9uU25pZmYucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czoyMjg1ODoiPD9waHAKLyoqCiAqIENoZWNrcyB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIGNsYXNzIGFuZCBpdHMgaW5oZXJpdGFuY2UgaXMgY29ycmVjdC4KICoKICogQGF1dGhvciAgICBHcmVnIFNoZXJ3b29kIDxnc2hlcndvb2RAc3F1aXoubmV0PgogKiBAY29weXJpZ2h0IDIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApCiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UKICovCgpuYW1lc3BhY2UgUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IyXFNuaWZmc1xDbGFzc2VzOwoKdXNlIFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQRUFSXFNuaWZmc1xDbGFzc2VzXENsYXNzRGVjbGFyYXRpb25TbmlmZiBhcyBQRUFSQ2xhc3NEZWNsYXJhdGlvblNuaWZmOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFV0aWxcVG9rZW5zOwoKY2xhc3MgQ2xhc3NEZWNsYXJhdGlvblNuaWZmIGV4dGVuZHMgUEVBUkNsYXNzRGVjbGFyYXRpb25TbmlmZgp7CgogICAgLyoqCiAgICAgKiBUaGUgbnVtYmVyIG9mIHNwYWNlcyBjb2RlIHNob3VsZCBiZSBpbmRlbnRlZC4KICAgICAqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRpbmRlbnQgPSA0OwoKCiAgICAvKioKICAgICAqIFByb2Nlc3NlcyB0aGlzIHRlc3QsIHdoZW4gb25lIG9mIGl0cyB0b2tlbnMgaXMgZW5jb3VudGVyZWQuCiAgICAgKgogICAgICogQHBhcmFtIFxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSAkcGhwY3NGaWxlIFRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciAgVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHN0YWNrIHBhc3NlZCBpbiAkdG9rZW5zLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcyhGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0cikKICAgIHsKICAgICAgICAvLyBXZSB3YW50IGFsbCB0aGUgZXJyb3JzIGZyb20gdGhlIFBFQVIgc3RhbmRhcmQsIHBsdXMgc29tZSBvZiBvdXIgb3duLgogICAgICAgIHBhcmVudDo6cHJvY2VzcygkcGhwY3NGaWxlLCAkc3RhY2tQdHIpOwoKICAgICAgICAvLyBKdXN0IGluIGNhc2UuCiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwogICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRzdGFja1B0cl1bJ3Njb3BlX29wZW5lciddKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnByb2Nlc3NPcGVuKCRwaHBjc0ZpbGUsICRzdGFja1B0cik7CiAgICAgICAgJHRoaXMtPnByb2Nlc3NDbG9zZSgkcGhwY3NGaWxlLCAkc3RhY2tQdHIpOwoKICAgIH0vL2VuZCBwcm9jZXNzKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhlIG9wZW5pbmcgc2VjdGlvbiBvZiBhIGNsYXNzIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgIFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NPcGVuKEZpbGUgJHBocGNzRmlsZSwgJHN0YWNrUHRyKQogICAgewogICAgICAgICR0b2tlbnMgICAgICAgPSAkcGhwY3NGaWxlLT5nZXRUb2tlbnMoKTsKICAgICAgICAkc3RhY2tQdHJUeXBlID0gc3RydG9sb3dlcigkdG9rZW5zWyRzdGFja1B0cl1bJ2NvbnRlbnQnXSk7CgogICAgICAgIC8vIENoZWNrIGFsaWdubWVudCBvZiB0aGUga2V5d29yZCBhbmQgYnJhY2VzLgogICAgICAgIGlmICgkdG9rZW5zWygkc3RhY2tQdHIgLSAxKV1bJ2NvZGUnXSA9PT0gVF9XSElURVNQQUNFKSB7CiAgICAgICAgICAgICRwcmV2Q29udGVudCA9ICR0b2tlbnNbKCRzdGFja1B0ciAtIDEpXVsnY29udGVudCddOwogICAgICAgICAgICBpZiAoJHByZXZDb250ZW50ICE9PSAkcGhwY3NGaWxlLT5lb2xDaGFyKSB7CiAgICAgICAgICAgICAgICAkYmxhbmtTcGFjZSA9IHN1YnN0cigkcHJldkNvbnRlbnQsIHN0cnBvcygkcHJldkNvbnRlbnQsICRwaHBjc0ZpbGUtPmVvbENoYXIpKTsKICAgICAgICAgICAgICAgICRzcGFjZXMgICAgID0gc3RybGVuKCRibGFua1NwYWNlKTsKCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRva2Vuc1soJHN0YWNrUHRyIC0gMildWydjb2RlJ10sIFtUX0FCU1RSQUNULCBUX0ZJTkFMXSwgdHJ1ZSkgPT09IHRydWUKICAgICAgICAgICAgICAgICAgICAmJiAkc3BhY2VzICE9PSAxCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkcHJldkNvbnRlbnQgPSBzdHJ0b2xvd2VyKCR0b2tlbnNbKCRzdGFja1B0ciAtIDIpXVsnY29udGVudCddKTsKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgICAgICAgPSAnRXhwZWN0ZWQgMSBzcGFjZSBiZXR3ZWVuICVzIGFuZCAlcyBrZXl3b3JkczsgJXMgZm91bmQnOwogICAgICAgICAgICAgICAgICAgICRkYXRhICAgICAgICA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJHByZXZDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAkc3BhY2VzLAogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICRmaXggPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkc3RhY2tQdHIsICdTcGFjZUJlZm9yZUtleXdvcmQnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigoJHN0YWNrUHRyIC0gMSksICcgJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKCR0b2tlbnNbKCRzdGFja1B0ciAtIDIpXVsnY29kZSddID09PSBUX0FCU1RSQUNUCiAgICAgICAgICAgICAgICB8fCAkdG9rZW5zWygkc3RhY2tQdHIgLSAyKV1bJ2NvZGUnXSA9PT0gVF9GSU5BTAogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRwcmV2Q29udGVudCA9IHN0cnRvbG93ZXIoJHRva2Vuc1soJHN0YWNrUHRyIC0gMildWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgJGVycm9yICAgICAgID0gJ0V4cGVjdGVkIDEgc3BhY2UgYmV0d2VlbiAlcyBhbmQgJXMga2V5d29yZHM7IG5ld2xpbmUgZm91bmQnOwogICAgICAgICAgICAgICAgJGRhdGEgICAgICAgID0gWwogICAgICAgICAgICAgICAgICAgICRwcmV2Q29udGVudCwKICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHJUeXBlLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkZml4ID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnTmV3bGluZUJlZm9yZUtleXdvcmQnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oKCRzdGFja1B0ciAtIDEpLCAnICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgLy8gV2UnbGwgbmVlZCB0aGUgaW5kZW50IG9mIHRoZSBjbGFzcy9pbnRlcmZhY2UgZGVjbGFyYXRpb24gZm9yIGxhdGVyLgogICAgICAgICRjbGFzc0luZGVudCA9IDA7CiAgICAgICAgZm9yICgkaSA9ICgkc3RhY2tQdHIgLSAxKTsgJGkgPiAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRpXVsnbGluZSddID09PSAkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFdlIGNoYW5nZWQgbGluZXMuCiAgICAgICAgICAgIGlmICgkdG9rZW5zWygkaSArIDEpXVsnY29kZSddID09PSBUX1dISVRFU1BBQ0UpIHsKICAgICAgICAgICAgICAgICRjbGFzc0luZGVudCA9ICR0b2tlbnNbKCRpICsgMSldWydsZW5ndGgnXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkY2xhc3NOYW1lICAgID0gbnVsbDsKICAgICAgICAkY2hlY2tTcGFjaW5nID0gdHJ1ZTsKCiAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddICE9PSBUX0FOT05fQ0xBU1MpIHsKICAgICAgICAgICAgJGNsYXNzTmFtZSA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfU1RSSU5HLCAkc3RhY2tQdHIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgc3BhY2luZyBjaGVjayBpZiB0aGlzIGlzIGEgc2ltcGxlIGFub24gY2xhc3MuCiAgICAgICAgICAgICRuZXh0ID0gJHBocGNzRmlsZS0+ZmluZE5leHQoVF9XSElURVNQQUNFLCAoJHN0YWNrUHRyICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICBpZiAoJG5leHQgPT09ICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfb3BlbmVyJ10KICAgICAgICAgICAgICAgICYmICR0b2tlbnNbJG5leHRdWydsaW5lJ10gPiAkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRjaGVja1NwYWNpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGVja1NwYWNpbmcgPT09IHRydWUpIHsKICAgICAgICAgICAgLy8gU3BhY2luZyBvZiB0aGUga2V5d29yZC4KICAgICAgICAgICAgaWYgKCR0b2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29kZSddICE9PSBUX1dISVRFU1BBQ0UpIHsKICAgICAgICAgICAgICAgICRnYXAgPSAwOwogICAgICAgICAgICB9IGVsc2UgaWYgKCR0b2tlbnNbKCRzdGFja1B0ciArIDIpXVsnbGluZSddICE9PSAkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgJGdhcCA9ICduZXdsaW5lJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRnYXAgPSAkdG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2xlbmd0aCddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGdhcCAhPT0gMSkgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ0V4cGVjdGVkIDEgc3BhY2UgYWZ0ZXIgJXMga2V5d29yZDsgJXMgZm91bmQnOwogICAgICAgICAgICAgICAgJGRhdGEgID0gWwogICAgICAgICAgICAgICAgICAgICRzdGFja1B0clR5cGUsCiAgICAgICAgICAgICAgICAgICAgJGdhcCwKICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgJGZpeCA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRzdGFja1B0ciwgJ1NwYWNlQWZ0ZXJLZXl3b3JkJywgJGRhdGEpOwogICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGdhcCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YWRkQ29udGVudCgkc3RhY2tQdHIsICcgJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigoJHN0YWNrUHRyICsgMSksICcgJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgIC8vIENoZWNrIGFmdGVyIHRoZSBjbGFzcy9pbnRlcmZhY2UgbmFtZS4KICAgICAgICBpZiAoJGNsYXNzTmFtZSAhPT0gbnVsbAogICAgICAgICAgICAmJiAkdG9rZW5zWygkY2xhc3NOYW1lICsgMildWydsaW5lJ10gPT09ICR0b2tlbnNbJGNsYXNzTmFtZV1bJ2xpbmUnXQogICAgICAgICkgewogICAgICAgICAgICAkZ2FwID0gJHRva2Vuc1soJGNsYXNzTmFtZSArIDEpXVsnY29udGVudCddOwogICAgICAgICAgICBpZiAoc3RybGVuKCRnYXApICE9PSAxKSB7CiAgICAgICAgICAgICAgICAkZm91bmQgPSBzdHJsZW4oJGdhcCk7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRXhwZWN0ZWQgMSBzcGFjZSBhZnRlciAlcyBuYW1lOyAlcyBmb3VuZCc7CiAgICAgICAgICAgICAgICAkZGF0YSAgPSBbCiAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyVHlwZSwKICAgICAgICAgICAgICAgICAgICAkZm91bmQsCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICRmaXggPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xhc3NOYW1lLCAnU3BhY2VBZnRlck5hbWUnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oKCRjbGFzc05hbWUgKyAxKSwgJyAnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG9wZW5pbmdCcmFjZSA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfb3BlbmVyJ107CgogICAgICAgIC8vIENoZWNrIHBvc2l0aW9ucyBvZiB0aGUgZXh0ZW5kcyBhbmQgaW1wbGVtZW50cyBrZXl3b3Jkcy4KICAgICAgICAkY29tcGFyZVRva2VuID0gJHN0YWNrUHRyOwogICAgICAgICRjb21wYXJlVHlwZSAgPSAnbmFtZSc7CiAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0FOT05fQ0xBU1MpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJHN0YWNrUHRyXVsncGFyZW50aGVzaXNfb3BlbmVyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkY29tcGFyZVRva2VuID0gJHRva2Vuc1skc3RhY2tQdHJdWydwYXJlbnRoZXNpc19jbG9zZXInXTsKICAgICAgICAgICAgICAgICRjb21wYXJlVHlwZSAgPSAnY2xvc2luZyBwYXJlbnRoZXNpcyc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY29tcGFyZVR5cGUgPSAna2V5d29yZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKFsnZXh0ZW5kcycsICdpbXBsZW1lbnRzJ10gYXMgJGtleXdvcmRUeXBlKSB7CiAgICAgICAgICAgICRrZXl3b3JkID0gJHBocGNzRmlsZS0+ZmluZE5leHQoY29uc3RhbnQoJ1RfJy5zdHJ0b3VwcGVyKCRrZXl3b3JkVHlwZSkpLCAoJGNvbXBhcmVUb2tlbiArIDEpLCAkb3BlbmluZ0JyYWNlKTsKICAgICAgICAgICAgaWYgKCRrZXl3b3JkICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGtleXdvcmRdWydsaW5lJ10gIT09ICR0b2tlbnNbJGNvbXBhcmVUb2tlbl1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdUaGUgJy4ka2V5d29yZFR5cGUuJyBrZXl3b3JkIG11c3QgYmUgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgJXMgJy4kY29tcGFyZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgJGRhdGEgID0gWyRzdGFja1B0clR5cGVdOwogICAgICAgICAgICAgICAgICAgICRmaXggICA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRrZXl3b3JkLCB1Y2ZpcnN0KCRrZXl3b3JkVHlwZSkuJ0xpbmUnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmJlZ2luQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50cyA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICgkY29tcGFyZVRva2VuICsgMSk7ICRpIDwgJGtleXdvcmQ7ICsrJGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRpXVsnY29kZSddID09PSBUX0NPTU1FTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudHNbXSA9IHRyaW0oJHRva2Vuc1skaV1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbJGldWydjb2RlJ10gPT09IFRfQ09NTUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkaSwgJyAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmFkZENvbnRlbnQoJGNvbXBhcmVUb2tlbiwgJyAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRjb21tZW50cykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSA9ICRrZXl3b3JkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCR0b2tlbnNbKCRpICsgMSldWydsaW5lJ10gPT09ICR0b2tlbnNbJGtleXdvcmRdWydsaW5lJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyRpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5hZGRDb250ZW50QmVmb3JlKCRpLCAnICcuaW1wbG9kZSgnICcsICRjb21tZW50cykpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+ZW5kQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSB3aGl0ZXNwYWNlIGJlZm9yZS4gV2hpdGVzcGFjZSBhZnRlciBpcyBjaGVja2VkCiAgICAgICAgICAgICAgICAgICAgLy8gbGF0ZXIgYnkgbG9va2luZyBhdCB0aGUgd2hpdGVzcGFjZSBiZWZvcmUgdGhlIGZpcnN0IGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbGlzdC4KICAgICAgICAgICAgICAgICAgICAkZ2FwID0gJHRva2Vuc1soJGtleXdvcmQgLSAxKV1bJ2xlbmd0aCddOwogICAgICAgICAgICAgICAgICAgIGlmICgkZ2FwICE9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdFeHBlY3RlZCAxIHNwYWNlIGJlZm9yZSAnLiRrZXl3b3JkVHlwZS4nIGtleXdvcmQ7ICVzIGZvdW5kJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGEgID0gWyRnYXBdOwogICAgICAgICAgICAgICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAka2V5d29yZCwgJ1NwYWNlQmVmb3JlJy51Y2ZpcnN0KCRrZXl3b3JkVHlwZSksICRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oKCRrZXl3b3JkIC0gMSksICcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgfS8vZW5kIGZvcmVhY2gKCiAgICAgICAgLy8gQ2hlY2sgZWFjaCBvZiB0aGUgZXh0ZW5kcy9pbXBsZW1lbnRzIGNsYXNzIG5hbWVzLiBJZiB0aGUgZXh0ZW5kcy9pbXBsZW1lbnRzCiAgICAgICAgLy8ga2V5d29yZCBpcyB0aGUgbGFzdCBjb250ZW50IG9uIHRoZSBsaW5lLCBpdCBtZWFucyB3ZSBuZWVkIHRvIGNoZWNrIGZvcgogICAgICAgIC8vIHRoZSBtdWx0aS1saW5lIGZvcm1hdCwgc28gd2UgZG8gbm90IGluY2x1ZGUgdGhlIGNsYXNzIG5hbWVzCiAgICAgICAgLy8gZnJvbSB0aGUgZXh0ZW5kcy9pbXBsZW1lbnRzIGxpc3QgaW4gdGhlIGZvbGxvd2luZyBjaGVjay4KICAgICAgICAvLyBOb3RlIHRoYXQgY2xhc3NlcyBjYW4gb25seSBleHRlbmQgb25lIG90aGVyIGNsYXNzLCBzbyB0aGV5IGNhbid0IHVzZSBhCiAgICAgICAgLy8gbXVsdGktbGluZSBleHRlbmRzIGZvcm1hdCwgd2hlcmVhcyBhbiBpbnRlcmZhY2UgY2FuIGV4dGVuZCBtdWx0aXBsZQogICAgICAgIC8vIG90aGVyIGludGVyZmFjZXMsIGFuZCBzbyB1c2VzIGEgbXVsdGktbGluZSBleHRlbmRzIGZvcm1hdC4KICAgICAgICBpZiAoJHRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfSU5URVJGQUNFKSB7CiAgICAgICAgICAgICRrZXl3b3JkVG9rZW5UeXBlID0gVF9FWFRFTkRTOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRrZXl3b3JkVG9rZW5UeXBlID0gVF9JTVBMRU1FTlRTOwogICAgICAgIH0KCiAgICAgICAgJGltcGxlbWVudHMgICAgICAgICAgPSAkcGhwY3NGaWxlLT5maW5kTmV4dCgka2V5d29yZFRva2VuVHlwZSwgKCRzdGFja1B0ciArIDEpLCAkb3BlbmluZ0JyYWNlKTsKICAgICAgICAkbXVsdGlMaW5lSW1wbGVtZW50cyA9IGZhbHNlOwogICAgICAgIGlmICgkaW1wbGVtZW50cyAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHByZXYgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVG9rZW5zOjokZW1wdHlUb2tlbnMsICgkb3BlbmluZ0JyYWNlIC0gMSksICRpbXBsZW1lbnRzLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHByZXZdWydsaW5lJ10gIT09ICR0b2tlbnNbJGltcGxlbWVudHNdWydsaW5lJ10pIHsKICAgICAgICAgICAgICAgICRtdWx0aUxpbmVJbXBsZW1lbnRzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGZpbmQgPSBbCiAgICAgICAgICAgIFRfU1RSSU5HLAogICAgICAgICAgICAka2V5d29yZFRva2VuVHlwZSwKICAgICAgICBdOwoKICAgICAgICBpZiAoJGNsYXNzTmFtZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkc3RhcnQgPSAkY2xhc3NOYW1lOwogICAgICAgIH0gZWxzZSBpZiAoaXNzZXQoJHRva2Vuc1skc3RhY2tQdHJdWydwYXJlbnRoZXNpc19jbG9zZXInXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgJHN0YXJ0ID0gJHRva2Vuc1skc3RhY2tQdHJdWydwYXJlbnRoZXNpc19jbG9zZXInXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc3RhcnQgPSAkc3RhY2tQdHI7CiAgICAgICAgfQoKICAgICAgICAkY2xhc3NOYW1lcyA9IFtdOwogICAgICAgICRuZXh0Q2xhc3MgID0gJHBocGNzRmlsZS0+ZmluZE5leHQoJGZpbmQsICgkc3RhcnQgKyAyKSwgKCRvcGVuaW5nQnJhY2UgLSAxKSk7CiAgICAgICAgd2hpbGUgKCRuZXh0Q2xhc3MgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICRjbGFzc05hbWVzW10gPSAkbmV4dENsYXNzOwogICAgICAgICAgICAkbmV4dENsYXNzICAgID0gJHBocGNzRmlsZS0+ZmluZE5leHQoJGZpbmQsICgkbmV4dENsYXNzICsgMSksICgkb3BlbmluZ0JyYWNlIC0gMSkpOwogICAgICAgIH0KCiAgICAgICAgJGNsYXNzQ291bnQgICAgICAgICA9IGNvdW50KCRjbGFzc05hbWVzKTsKICAgICAgICAkY2hlY2tpbmdJbXBsZW1lbnRzID0gZmFsc2U7CiAgICAgICAgJGltcGxlbWVudHNUb2tlbiAgICA9IG51bGw7CiAgICAgICAgZm9yZWFjaCAoJGNsYXNzTmFtZXMgYXMgJG4gPT4gJGNsYXNzTmFtZSkgewogICAgICAgICAgICBpZiAoJHRva2Vuc1skY2xhc3NOYW1lXVsnY29kZSddID09PSAka2V5d29yZFRva2VuVHlwZSkgewogICAgICAgICAgICAgICAgJGNoZWNraW5nSW1wbGVtZW50cyA9IHRydWU7CiAgICAgICAgICAgICAgICAkaW1wbGVtZW50c1Rva2VuICAgID0gJGNsYXNzTmFtZTsKCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRjaGVja2luZ0ltcGxlbWVudHMgPT09IHRydWUKICAgICAgICAgICAgICAgICYmICRtdWx0aUxpbmVJbXBsZW1lbnRzID09PSB0cnVlCiAgICAgICAgICAgICAgICAmJiAoJHRva2Vuc1soJGNsYXNzTmFtZSAtIDEpXVsnY29kZSddICE9PSBUX05TX1NFUEFSQVRPUgogICAgICAgICAgICAgICAgfHwgJHRva2Vuc1soJGNsYXNzTmFtZSAtIDIpXVsnY29kZSddICE9PSBUX1NUUklORykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcHJldiA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cygKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgIFRfTlNfU0VQQVJBVE9SLAogICAgICAgICAgICAgICAgICAgICAgICBUX1dISVRFU1BBQ0UsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAoJGNsYXNzTmFtZSAtIDEpLAogICAgICAgICAgICAgICAgICAgICRpbXBsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgIHRydWUKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRwcmV2ID09PSAkaW1wbGVtZW50c1Rva2VuICYmICR0b2tlbnNbJGNsYXNzTmFtZV1bJ2xpbmUnXSAhPT0gKCR0b2tlbnNbJHByZXZdWydsaW5lJ10gKyAxKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgka2V5d29yZFRva2VuVHlwZSA9PT0gVF9FWFRFTkRTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdUaGUgZmlyc3QgaXRlbSBpbiBhIG11bHRpLWxpbmUgZXh0ZW5kcyBsaXN0IG11c3QgYmUgb24gdGhlIGxpbmUgZm9sbG93aW5nIHRoZSBleHRlbmRzIGtleXdvcmQnOwogICAgICAgICAgICAgICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xhc3NOYW1lLCAnRmlyc3RFeHRlbmRzSW50ZXJmYWNlU2FtZUxpbmUnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnVGhlIGZpcnN0IGl0ZW0gaW4gYSBtdWx0aS1saW5lIGltcGxlbWVudHMgbGlzdCBtdXN0IGJlIG9uIHRoZSBsaW5lIGZvbGxvd2luZyB0aGUgaW1wbGVtZW50cyBrZXl3b3JkJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGNsYXNzTmFtZSwgJ0ZpcnN0SW50ZXJmYWNlU2FtZUxpbmUnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5iZWdpbkNoYW5nZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gKCRwcmV2ICsgMSk7ICRpIDwgJGNsYXNzTmFtZTsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydjb2RlJ10gIT09IFRfV0hJVEVTUEFDRSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oJGksICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmFkZE5ld2xpbmUoJHByZXYpOwogICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+ZW5kQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkdG9rZW5zWyRwcmV2XVsnbGluZSddICE9PSAoJHRva2Vuc1skY2xhc3NOYW1lXVsnbGluZSddIC0gMSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGtleXdvcmRUb2tlblR5cGUgPT09IFRfRVhURU5EUykgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnT25seSBvbmUgaW50ZXJmYWNlIG1heSBiZSBzcGVjaWZpZWQgcGVyIGxpbmUgaW4gYSBtdWx0aS1saW5lIGV4dGVuZHMgZGVjbGFyYXRpb24nOwogICAgICAgICAgICAgICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xhc3NOYW1lLCAnRXh0ZW5kc0ludGVyZmFjZVNhbWVMaW5lJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ09ubHkgb25lIGludGVyZmFjZSBtYXkgYmUgc3BlY2lmaWVkIHBlciBsaW5lIGluIGEgbXVsdGktbGluZSBpbXBsZW1lbnRzIGRlY2xhcmF0aW9uJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGNsYXNzTmFtZSwgJ0ludGVyZmFjZVNhbWVMaW5lJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YmVnaW5DaGFuZ2VzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICgkcHJldiArIDEpOyAkaSA8ICRjbGFzc05hbWU7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRpXVsnY29kZSddICE9PSBUX1dISVRFU1BBQ0UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRpLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5hZGROZXdsaW5lKCRwcmV2KTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHByZXYgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVF9XSElURVNQQUNFLCAoJGNsYXNzTmFtZSAtIDEpLCAkaW1wbGVtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHByZXZdWydsaW5lJ10gIT09ICR0b2tlbnNbJGNsYXNzTmFtZV1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQgPSAwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZCA9ICR0b2tlbnNbJHByZXZdWydsZW5ndGgnXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICgkY2xhc3NJbmRlbnQgKyAkdGhpcy0+aW5kZW50KTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZvdW5kICE9PSAkZXhwZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ0V4cGVjdGVkICVzIHNwYWNlcyBiZWZvcmUgaW50ZXJmYWNlIG5hbWU7ICVzIGZvdW5kJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGEgID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xhc3NOYW1lLCAnSW50ZXJmYWNlV3JvbmdJbmRlbnQnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyA9IHN0cl9yZXBlYXQoJyAnLCAkZXhwZWN0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmb3VuZCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5hZGRDb250ZW50KCRwcmV2LCAkcGFkZGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oJHByZXYsICRwYWRkaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICB9IGVsc2UgaWYgKCR0b2tlbnNbKCRjbGFzc05hbWUgLSAxKV1bJ2NvZGUnXSAhPT0gVF9OU19TRVBBUkFUT1IKICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbKCRjbGFzc05hbWUgLSAyKV1bJ2NvZGUnXSAhPT0gVF9TVFJJTkcKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBOb3QgcGFydCBvZiBhIGxvbmdlciBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZS4KICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWygkY2xhc3NOYW1lIC0gMSldWydjb2RlJ10gPT09IFRfQ09NTUEKICAgICAgICAgICAgICAgICAgICB8fCAoJHRva2Vuc1soJGNsYXNzTmFtZSAtIDEpXVsnY29kZSddID09PSBUX05TX1NFUEFSQVRPUgogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNbKCRjbGFzc05hbWUgLSAyKV1bJ2NvZGUnXSA9PT0gVF9DT01NQSkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdFeHBlY3RlZCAxIHNwYWNlIGJlZm9yZSAiJXMiOyAwIGZvdW5kJzsKICAgICAgICAgICAgICAgICAgICAkZGF0YSAgPSBbJHRva2Vuc1skY2xhc3NOYW1lXVsnY29udGVudCddXTsKICAgICAgICAgICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAoJG5leHRDb21tYSArIDEpLCAnTm9TcGFjZUJlZm9yZU5hbWUnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmFkZENvbnRlbnRCZWZvcmUoKCRuZXh0Q29tbWEgKyAxKSwgJyAnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWygkY2xhc3NOYW1lIC0gMSldWydjb2RlJ10gPT09IFRfTlNfU0VQQVJBVE9SKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2ID0gKCRjbGFzc05hbWUgLSAyKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcHJldiA9ICgkY2xhc3NOYW1lIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkbGFzdCAgICA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cyhUX1dISVRFU1BBQ0UsICRwcmV2LCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRwaHBjc0ZpbGUtPmdldFRva2Vuc0FzU3RyaW5nKCgkbGFzdCArIDEpLCAoJHByZXYgLSAkbGFzdCkpOwogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudCAhPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZCA9IHN0cmxlbigkY29udGVudCk7CgogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRXhwZWN0ZWQgMSBzcGFjZSBiZWZvcmUgIiVzIjsgJXMgZm91bmQnOwogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zWyRjbGFzc05hbWVdWydjb250ZW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICAgICAkZml4ID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGNsYXNzTmFtZSwgJ1NwYWNlQmVmb3JlTmFtZScsICRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRwcmV2XVsnY29kZSddID09PSBUX1dISVRFU1BBQ0UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YmVnaW5DaGFuZ2VzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRwcmV2LCAnICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkdG9rZW5zWy0tJHByZXZdWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRwcmV2LCAnICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YWRkQ29udGVudCgkcHJldiwgJyAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgaWYgKCRjaGVja2luZ0ltcGxlbWVudHMgPT09IHRydWUKICAgICAgICAgICAgICAgICYmICR0b2tlbnNbKCRjbGFzc05hbWUgKyAxKV1bJ2NvZGUnXSAhPT0gVF9OU19TRVBBUkFUT1IKICAgICAgICAgICAgICAgICYmICR0b2tlbnNbKCRjbGFzc05hbWUgKyAxKV1bJ2NvZGUnXSAhPT0gVF9DT01NQQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmICgkbiAhPT0gKCRjbGFzc0NvdW50IC0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbGFzdCBjbGFzcyBuYW1lLCBhbmQgdGhlIGNvbW1hCiAgICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IHdoZXJlIHdlIGV4cGVjdCBpdCB0byBiZS4KICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1soJGNsYXNzTmFtZSArIDIpXVsnY29kZSddICE9PSAka2V5d29yZFRva2VuVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRXhwZWN0ZWQgMCBzcGFjZXMgYmV0d2VlbiAiJXMiIGFuZCBjb21tYTsgJXMgZm91bmQnOwogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zWyRjbGFzc05hbWVdWydjb250ZW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zWygkY2xhc3NOYW1lICsgMSldWydsZW5ndGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmaXggPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xhc3NOYW1lLCAnU3BhY2VCZWZvcmVDb21tYScsICRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oKCRjbGFzc05hbWUgKyAxKSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRuZXh0Q29tbWEgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX0NPTU1BLCAkY2xhc3NOYW1lKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuZXh0Q29tbWEgPSAoJGNsYXNzTmFtZSArIDEpOwogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgZm9yZWFjaAoKICAgIH0vL2VuZCBwcm9jZXNzT3BlbigpCgoKICAgIC8qKgogICAgICogUHJvY2Vzc2VzIHRoZSBjbG9zaW5nIHNlY3Rpb24gb2YgYSBjbGFzcyBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzQ2xvc2UoRmlsZSAkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjbG9zaW5nIGJyYWNlIGNvbWVzIHJpZ2h0IGFmdGVyIHRoZSBjb2RlIGJvZHkuCiAgICAgICAgJGNsb3NlQnJhY2UgID0gJHRva2Vuc1skc3RhY2tQdHJdWydzY29wZV9jbG9zZXInXTsKICAgICAgICAkcHJldkNvbnRlbnQgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVF9XSElURVNQQUNFLCAoJGNsb3NlQnJhY2UgLSAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgaWYgKCRwcmV2Q29udGVudCAhPT0gJHRva2Vuc1skc3RhY2tQdHJdWydzY29wZV9vcGVuZXInXQogICAgICAgICAgICAmJiAkdG9rZW5zWyRwcmV2Q29udGVudF1bJ2xpbmUnXSAhPT0gKCR0b2tlbnNbJGNsb3NlQnJhY2VdWydsaW5lJ10gLSAxKQogICAgICAgICkgewogICAgICAgICAgICAkZXJyb3IgPSAnVGhlIGNsb3NpbmcgYnJhY2UgZm9yIHRoZSAlcyBtdXN0IGdvIG9uIHRoZSBuZXh0IGxpbmUgYWZ0ZXIgdGhlIGJvZHknOwogICAgICAgICAgICAkZGF0YSAgPSBbJHRva2Vuc1skc3RhY2tQdHJdWydjb250ZW50J11dOwogICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkY2xvc2VCcmFjZSwgJ0Nsb3NlQnJhY2VBZnRlckJvZHknLCAkZGF0YSk7CgogICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmJlZ2luQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gKCRwcmV2Q29udGVudCArIDEpOyAkaSA8ICRjbG9zZUJyYWNlOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkaSwgJycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJHRva2Vuc1skcHJldkNvbnRlbnRdWydjb250ZW50J10sICRwaHBjc0ZpbGUtPmVvbENoYXIpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oJGNsb3NlQnJhY2UsICRwaHBjc0ZpbGUtPmVvbENoYXIuJHRva2Vuc1skY2xvc2VCcmFjZV1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICB9CiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgIGlmICgkdG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXSAhPT0gVF9BTk9OX0NMQVNTKSB7CiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBjbG9zaW5nIGJyYWNlIGlzIG9uIGl0J3Mgb3duIGxpbmUsIGJ1dCBhbGxvdwogICAgICAgICAgICAvLyBmb3IgY29tbWVudHMgbGlrZSAiLy9lbmQgY2xhc3MiLgogICAgICAgICAgICAkaWdub3JlVG9rZW5zICAgPSBUb2tlbnM6OiRwaHBjc0NvbW1lbnRUb2tlbnM7CiAgICAgICAgICAgICRpZ25vcmVUb2tlbnNbXSA9IFRfV0hJVEVTUEFDRTsKICAgICAgICAgICAgJGlnbm9yZVRva2Vuc1tdID0gVF9DT01NRU5UOwogICAgICAgICAgICAkaWdub3JlVG9rZW5zW10gPSBUX1NFTUlDT0xPTjsKICAgICAgICAgICAgJGlnbm9yZVRva2Vuc1tdID0gVF9DT01NQTsKICAgICAgICAgICAgJG5leHRDb250ZW50ICAgID0gJHBocGNzRmlsZS0+ZmluZE5leHQoJGlnbm9yZVRva2VucywgKCRjbG9zZUJyYWNlICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICBpZiAoJHRva2Vuc1skbmV4dENvbnRlbnRdWydjb250ZW50J10gIT09ICRwaHBjc0ZpbGUtPmVvbENoYXIKICAgICAgICAgICAgICAgICYmICR0b2tlbnNbJG5leHRDb250ZW50XVsnbGluZSddID09PSAkdG9rZW5zWyRjbG9zZUJyYWNlXVsnbGluZSddCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHR5cGUgID0gc3RydG9sb3dlcigkdG9rZW5zWyRzdGFja1B0cl1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQ2xvc2luZyAlcyBicmFjZSBtdXN0IGJlIG9uIGEgbGluZSBieSBpdHNlbGYnOwogICAgICAgICAgICAgICAgJGRhdGEgID0gWyR0eXBlXTsKICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJGNsb3NlQnJhY2UsICdDbG9zZUJyYWNlU2FtZUxpbmUnLCAkZGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfS8vZW5kIHByb2Nlc3NDbG9zZSgpCgoKfS8vZW5kIGNsYXNzCiI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjJcU25pZmZzXENsYXNzZXMiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NjoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMlxTbmlmZnNcQ2xhc3NlcyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6IkNsYXNzZXMiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo2ODoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMlxTbmlmZnNcQ2xhc3Nlc1xDbGFzc0RlY2xhcmF0aW9uU25pZmYiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxMzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjE6IkNsYXNzRGVjbGFyYXRpb25TbmlmZiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBFQVJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjE6IkNsYXNzRGVjbGFyYXRpb25TbmlmZiI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YToxOntzOjc3OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IyXFNuaWZmc1xDbGFzc2VzXENsYXNzRGVjbGFyYXRpb25TbmlmZjo6JGluZGVudCI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTE6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzc6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmOjokaW5kZW50IjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiaW5kZW50Ijt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQ1OiJUaGUgbnVtYmVyIG9mIHNwYWNlcyBjb2RlIHNob3VsZCBiZSBpbmRlbnRlZC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFZhcl8iOjQ6e3M6MTU6IgAqAHZhcmlhYmxlTmFtZSI7czowOiIiO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6MzoidmFyIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czo0NToiUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IyXFNuaWZmc1xDbGFzc2VzIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTozOntzOjQ6IkZpbGUiO3M6MjY6IlBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjI1OiJQRUFSQ2xhc3NEZWNsYXJhdGlvblNuaWZmIjtzOjY3OiJQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBFQVJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmIjtzOjY6IlRva2VucyI7czoyNzoiUEhQX0NvZGVTbmlmZmVyXFV0aWxcVG9rZW5zIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6MToiNCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHJlYWRPbmx5IjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fX19czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Mzp7czo3OToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMlxTbmlmZnNcQ2xhc3Nlc1xDbGFzc0RlY2xhcmF0aW9uU25pZmY6OnByb2Nlc3MoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjU5OiJQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjM6IlRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjg6InN0YWNrUHRyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjY1OiJUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KaW4gdGhlIHN0YWNrIHBhc3NlZCBpbiAkdG9rZW5zLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzE7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3OToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMlxTbmlmZnNcQ2xhc3Nlc1xDbGFzc0RlY2xhcmF0aW9uU25pZmY6OnByb2Nlc3MoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6InByb2Nlc3MiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo4MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMlxTbmlmZnNcQ2xhc3Nlc1xDbGFzc0RlY2xhcmF0aW9uU25pZmY6OnByb2Nlc3NPcGVuKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MzoiUHJvY2Vzc2VzIHRoZSBvcGVuaW5nIHNlY3Rpb24gb2YgYSBjbGFzcyBkZWNsYXJhdGlvbi4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo4OiJzdGFja1B0ciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo2NToiVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuCmluIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcxO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODM6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmOjpwcm9jZXNzT3BlbigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6InByb2Nlc3NPcGVuIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NjY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjg0OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IyXFNuaWZmc1xDbGFzc2VzXENsYXNzRGVjbGFyYXRpb25TbmlmZjo6cHJvY2Vzc0Nsb3NlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MzoiUHJvY2Vzc2VzIHRoZSBjbG9zaW5nIHNlY3Rpb24gb2YgYSBjbGFzcyBkZWNsYXJhdGlvbi4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo4OiJzdGFja1B0ciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo2NToiVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuCmluIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcxO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODQ6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjJcU25pZmZzXENsYXNzZXNcQ2xhc3NEZWNsYXJhdGlvblNuaWZmOjpwcm9jZXNzQ2xvc2UoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEyOiJwcm9jZXNzQ2xvc2UiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0Nzg7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1MjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1Mjg7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";