1688054432
waR3U4bTeM%3Ab486549d89ed1ca482bb407eb9fcc579-b9c2dbe1bf306a9ff138053ac9bc945d
s:54960:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6Mzc6IkNoZWNrcyB0aGUgZm9ybWF0IG9mIHRoZSBmaWxlIGhlYWRlci4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTkgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJiOWMyZGJlMWJmMzA2YTlmZjEzODA1M2FjOWJjOTQ1ZCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE5OiJGaWxlSGVhZGVyU25pZmYucGhwIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6ODU6InZlbmRvci9zcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyL3NyYy9TdGFuZGFyZHMvUFNSMTIvU25pZmZzL0ZpbGVzL0ZpbGVIZWFkZXJTbmlmZi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjE2NDUxOiI8P3BocAovKioKICogQ2hlY2tzIHRoZSBmb3JtYXQgb2YgdGhlIGZpbGUgaGVhZGVyLgogKgogKiBAYXV0aG9yICAgIEdyZWcgU2hlcndvb2QgPGdzaGVyd29vZEBzcXVpei5uZXQ+CiAqIEBjb3B5cmlnaHQgMjAwNi0yMDE5IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkKICogQGxpY2Vuc2UgICBodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZQogKi8KCm5hbWVzcGFjZSBQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjEyXFNuaWZmc1xGaWxlczsKCnVzZSBQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZTsKdXNlIFBIUF9Db2RlU25pZmZlclxTbmlmZnNcU25pZmY7CnVzZSBQSFBfQ29kZVNuaWZmZXJcVXRpbFxUb2tlbnM7CgpjbGFzcyBGaWxlSGVhZGVyU25pZmYgaW1wbGVtZW50cyBTbmlmZgp7CgoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoKQogICAgewogICAgICAgIHJldHVybiBbVF9PUEVOX1RBR107CgogICAgfS8vZW5kIHJlZ2lzdGVyKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhpcyBzbmlmZiB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgIFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuIGluIHRoZSBzdGFjay4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKEZpbGUgJHBocGNzRmlsZSwgJHN0YWNrUHRyKQogICAgewogICAgICAgICR0b2tlbnMgPSAkcGhwY3NGaWxlLT5nZXRUb2tlbnMoKTsKCiAgICAgICAgJHBvc3NpYmxlSGVhZGVycyA9IFtdOwoKICAgICAgICAkc2VhcmNoRm9yID0gVG9rZW5zOjokb29TY29wZVRva2VuczsKICAgICAgICAkc2VhcmNoRm9yW1RfT1BFTl9UQUddID0gVF9PUEVOX1RBRzsKCiAgICAgICAgJG9wZW5UYWcgPSAkc3RhY2tQdHI7CiAgICAgICAgZG8gewogICAgICAgICAgICAkaGVhZGVyTGluZXMgPSAkdGhpcy0+Z2V0SGVhZGVyTGluZXMoJHBocGNzRmlsZSwgJG9wZW5UYWcpOwogICAgICAgICAgICBpZiAoZW1wdHkoJGhlYWRlckxpbmVzKSA9PT0gdHJ1ZSAmJiAkb3BlblRhZyA9PT0gJHN0YWNrUHRyKSB7CiAgICAgICAgICAgICAgICAvLyBObyBjb250ZW50IGluIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcG9zc2libGVIZWFkZXJzWyRvcGVuVGFnXSA9ICRoZWFkZXJMaW5lczsKICAgICAgICAgICAgaWYgKGNvdW50KCRoZWFkZXJMaW5lcykgPiAxKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5leHQgPSAkcGhwY3NGaWxlLT5maW5kTmV4dCgkc2VhcmNoRm9yLCAoJG9wZW5UYWcgKyAxKSk7CiAgICAgICAgICAgIGlmIChpc3NldChUb2tlbnM6OiRvb1Njb3BlVG9rZW5zWyR0b2tlbnNbJG5leHRdWydjb2RlJ11dKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgLy8gT25jZSB3ZSBmaW5kIGFuIE9PIHRva2VuLCB0aGUgZmlsZSBjb250ZW50IGhhcwogICAgICAgICAgICAgICAgLy8gZGVmaW5pdGVseSBzdGFydGVkLgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRvcGVuVGFnID0gJG5leHQ7CiAgICAgICAgfSB3aGlsZSAoJG9wZW5UYWcgIT09IGZhbHNlKTsKCiAgICAgICAgaWYgKCRvcGVuVGFnID09PSBmYWxzZSkgewogICAgICAgICAgICAvLyBXZSBuZXZlciBmb3VuZCBhIHByb3BlciBmaWxlIGhlYWRlci4KICAgICAgICAgICAgLy8gSWYgdGhlIGZpbGUgaGFzIG11bHRpcGxlIFBIUCBvcGVuIHRhZ3MsIHdlIGtub3cKICAgICAgICAgICAgLy8gdGhhdCBpdCBtdXN0IGJlIGEgbWl4IG9mIFBIUCBhbmQgSFRNTCAob3Igc2ltaWxhcikKICAgICAgICAgICAgLy8gc28gdGhlIGhlYWRlciBydWxlcyBkbyBub3QgYXBwbHkuCiAgICAgICAgICAgIGlmIChjb3VudCgkcG9zc2libGVIZWFkZXJzKSA+IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkcGhwY3NGaWxlLT5udW1Ub2tlbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgb25lIHBvc3NpYmxlIGhlYWRlci4KICAgICAgICAgICAgLy8gSWYgaXQgaXMgdGhlIGZpcnN0IGNvbnRlbnQgaW4gdGhlIGZpbGUsIGl0IHRlY2huaWNhbGx5CiAgICAgICAgICAgIC8vIHNlcnZlcyBhcyB0aGUgZmlsZSBoZWFkZXIsIGFuZCB0aGUgb3BlbiB0YWcgbmVlZHMgdG8KICAgICAgICAgICAgLy8gaGF2ZSBhIG5ld2xpbmUgYWZ0ZXIgaXQuIE90aGVyd2lzZSwgaWdub3JlIGl0LgogICAgICAgICAgICBpZiAoJHN0YWNrUHRyID4gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRwaHBjc0ZpbGUtPm51bVRva2VuczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9wZW5UYWcgPSAkc3RhY2tQdHI7CiAgICAgICAgfSBlbHNlIGlmIChjb3VudCgkcG9zc2libGVIZWFkZXJzKSA+IDEpIHsKICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG90aGVyIFBIUCBibG9ja3MgYmVmb3JlIHRoZSBmaWxlIGhlYWRlci4KICAgICAgICAgICAgJGVycm9yID0gJ1RoZSBmaWxlIGhlYWRlciBtdXN0IGJlIHRoZSBmaXJzdCBjb250ZW50IGluIHRoZSBmaWxlJzsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkb3BlblRhZywgJ0hlYWRlclBvc2l0aW9uJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHBvc3NpYmxlIGhlYWRlciB3YXMgdGhlIGZpbGUgaGVhZGVyIGJsb2NrLAogICAgICAgICAgICAvLyBzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIGZpcnN0IGNvbnRlbnQgaW4gdGhlIGZpbGUuCiAgICAgICAgICAgIGlmICgkb3BlblRhZyAhPT0gMCkgewogICAgICAgICAgICAgICAgLy8gQWxsb3cgZm9yIGhhc2hiYW5nIGxpbmVzLgogICAgICAgICAgICAgICAgJGhhc2hiYW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1soJG9wZW5UYWcgLSAxKV1bJ2NvZGUnXSA9PT0gVF9JTkxJTkVfSFRNTCkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gdHJpbSgkdG9rZW5zWygkb3BlblRhZyAtIDEpXVsnY29udGVudCddKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic3RyKCRjb250ZW50LCAwLCAyKSA9PT0gJyMhJykgewogICAgICAgICAgICAgICAgICAgICAgICAkaGFzaGJhbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGhhc2hiYW5nID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdUaGUgZmlsZSBoZWFkZXIgbXVzdCBiZSB0aGUgZmlyc3QgY29udGVudCBpbiB0aGUgZmlsZSc7CiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkb3BlblRhZywgJ0hlYWRlclBvc2l0aW9uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgJHRoaXMtPnByb2Nlc3NIZWFkZXJMaW5lcygkcGhwY3NGaWxlLCAkcG9zc2libGVIZWFkZXJzWyRvcGVuVGFnXSk7CgogICAgICAgIHJldHVybiAkcGhwY3NGaWxlLT5udW1Ub2tlbnM7CgogICAgfS8vZW5kIHByb2Nlc3MoKQoKCiAgICAvKioKICAgICAqIEdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGVtZW50cyBpbnNpZGUgYSBwb3NzaWJsZSBmaWxlIGhlYWRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiBpbiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyTGluZXMoRmlsZSAkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICAkbmV4dCA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfV0hJVEVTUEFDRSwgKCRzdGFja1B0ciArIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoJG5leHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRoZWFkZXJMaW5lcyAgID0gW107CiAgICAgICAgJGhlYWRlckxpbmVzW10gPSBbCiAgICAgICAgICAgICd0eXBlJyAgPT4gJ3RhZycsCiAgICAgICAgICAgICdzdGFydCcgPT4gJHN0YWNrUHRyLAogICAgICAgICAgICAnZW5kJyAgID0+ICRzdGFja1B0ciwKICAgICAgICBdOwoKICAgICAgICAkZm91bmREb2NibG9jayA9IGZhbHNlOwoKICAgICAgICAkY29tbWVudE9wZW5lcnMgPSBUb2tlbnM6OiRzY29wZU9wZW5lcnM7CiAgICAgICAgdW5zZXQoJGNvbW1lbnRPcGVuZXJzW1RfTkFNRVNQQUNFXSk7CiAgICAgICAgdW5zZXQoJGNvbW1lbnRPcGVuZXJzW1RfREVDTEFSRV0pOwogICAgICAgIHVuc2V0KCRjb21tZW50T3BlbmVyc1tUX1VTRV0pOwogICAgICAgIHVuc2V0KCRjb21tZW50T3BlbmVyc1tUX0lGXSk7CiAgICAgICAgdW5zZXQoJGNvbW1lbnRPcGVuZXJzW1RfV0hJTEVdKTsKICAgICAgICB1bnNldCgkY29tbWVudE9wZW5lcnNbVF9GT1JdKTsKICAgICAgICB1bnNldCgkY29tbWVudE9wZW5lcnNbVF9GT1JFQUNIXSk7CiAgICAgICAgdW5zZXQoJGNvbW1lbnRPcGVuZXJzW1RfRE9dKTsKICAgICAgICB1bnNldCgkY29tbWVudE9wZW5lcnNbVF9UUlldKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICBzd2l0Y2ggKCR0b2tlbnNbJG5leHRdWydjb2RlJ10pIHsKICAgICAgICAgICAgY2FzZSBUX0RPQ19DT01NRU5UX09QRU5fVEFHOgogICAgICAgICAgICAgICAgaWYgKCRmb3VuZERvY2Jsb2NrID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBzZWNvbmQgZG9jYmxvY2ssIHNvIHN0YXJ0IG9mIGNvZGUuCiAgICAgICAgICAgICAgICAgICAgYnJlYWsoMik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoaXMgaXMgbm90IGEgY29kZS1sZXZlbCBkb2NibG9jay4KICAgICAgICAgICAgICAgICRlbmQgPSAkdG9rZW5zWyRuZXh0XVsnY29tbWVudF9jbG9zZXInXTsKICAgICAgICAgICAgICAgIGZvciAoJGRvY1Rva2VuID0gKCRlbmQgKyAxKTsgJGRvY1Rva2VuIDwgJHBocGNzRmlsZS0+bnVtVG9rZW5zOyAkZG9jVG9rZW4rKykgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChUb2tlbnM6OiRlbXB0eVRva2Vuc1skdG9rZW5zWyRkb2NUb2tlbl1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGRvY1Rva2VuXVsnY29kZSddID09PSBUX0FUVFJJQlVURQogICAgICAgICAgICAgICAgICAgICAgICAmJiBpc3NldCgkdG9rZW5zWyRkb2NUb2tlbl1bJ2F0dHJpYnV0ZV9jbG9zZXInXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRvY1Rva2VuID0gJHRva2Vuc1skZG9jVG9rZW5dWydhdHRyaWJ1dGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRkb2NUb2tlbiA9PT0gJHBocGNzRmlsZS0+bnVtVG9rZW5zKSB7CiAgICAgICAgICAgICAgICAgICAgJGRvY1Rva2VuLS07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjb21tZW50T3BlbmVyc1skdG9rZW5zWyRkb2NUb2tlbl1bJ2NvZGUnXV0pID09PSBmYWxzZQogICAgICAgICAgICAgICAgICAgICYmIGlzc2V0KFRva2Vuczo6JG1ldGhvZFByZWZpeGVzWyR0b2tlbnNbJGRvY1Rva2VuXVsnY29kZSddXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgYW4gQHZhciBhbm5vdGF0aW9uLgogICAgICAgICAgICAgICAgICAgICRhbm5vdGF0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICRuZXh0OyAkaSA8ICRlbmQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfVEFHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ0b2xvd2VyKCR0b2tlbnNbJGldWydjb250ZW50J10pID09PSAnQHZhcicKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYW5ub3RhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhbm5vdGF0aW9uID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm91bmREb2NibG9jayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJMaW5lc1tdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICA9PiAnZG9jYmxvY2snLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0JyA9PiAkbmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmQnICAgPT4gJGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICAkbmV4dCA9ICRlbmQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBUX0RFQ0xBUkU6CiAgICAgICAgICAgIGNhc2UgVF9OQU1FU1BBQ0U6CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skbmV4dF1bJ3Njb3BlX29wZW5lciddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgc3RhdGVtZW50IGlzIHVzaW5nIGJyYWNrZXRlZCBzeW50YXgsIGl0IGRvZXNuJ3QKICAgICAgICAgICAgICAgICAgICAvLyBhcHBseSB0byB0aGUgZW50aXJlIGZpbGVzIGFuZCBzbyBpcyBub3QgcGFydCBvZiBoZWFkZXIuCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGhlYWRlciBoYXMgbm93IGVuZGVkIGFuZCB0aGUgbWFpbiBjb2RlIGJsb2NrIGJlZ2lucy4KICAgICAgICAgICAgICAgICAgICBicmVhaygyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW5kID0gJHBocGNzRmlsZS0+ZmluZEVuZE9mU3RhdGVtZW50KCRuZXh0KTsKCiAgICAgICAgICAgICAgICAkaGVhZGVyTGluZXNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAndHlwZScgID0+IHN1YnN0cihzdHJ0b2xvd2VyKCR0b2tlbnNbJG5leHRdWyd0eXBlJ10pLCAyKSwKICAgICAgICAgICAgICAgICAgICAnc3RhcnQnID0+ICRuZXh0LAogICAgICAgICAgICAgICAgICAgICdlbmQnICAgPT4gJGVuZCwKICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgJG5leHQgPSAkZW5kOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgVF9VU0U6CiAgICAgICAgICAgICAgICAkdHlwZSAgICA9ICd1c2UnOwogICAgICAgICAgICAgICAgJHVzZVR5cGUgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUb2tlbnM6OiRlbXB0eVRva2VucywgKCRuZXh0ICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgaWYgKCR1c2VUeXBlICE9PSBmYWxzZSAmJiAkdG9rZW5zWyR1c2VUeXBlXVsnY29kZSddID09PSBUX1NUUklORykgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gc3RydG9sb3dlcigkdG9rZW5zWyR1c2VUeXBlXVsnY29udGVudCddKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnQgPT09ICdmdW5jdGlvbicgfHwgJGNvbnRlbnQgPT09ICdjb25zdCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgLj0gJyAnLiRjb250ZW50OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW5kID0gJHBocGNzRmlsZS0+ZmluZEVuZE9mU3RhdGVtZW50KCRuZXh0KTsKCiAgICAgICAgICAgICAgICAkaGVhZGVyTGluZXNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAndHlwZScgID0+ICR0eXBlLAogICAgICAgICAgICAgICAgICAgICdzdGFydCcgPT4gJG5leHQsCiAgICAgICAgICAgICAgICAgICAgJ2VuZCcgICA9PiAkZW5kLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkbmV4dCA9ICRlbmQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIFNraXAgY29tbWVudHMgYXMgUFNSLTEyIGRvZXNuJ3Qgc2F5IGlmIHRoZXNlIGFyZSBhbGxvd2VkIG9yIG5vdC4KICAgICAgICAgICAgICAgIGlmIChpc3NldChUb2tlbnM6OiRjb21tZW50VG9rZW5zWyR0b2tlbnNbJG5leHRdWydjb2RlJ11dKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICRuZXh0ID0gJHBocGNzRmlsZS0+ZmluZE5leHQoVG9rZW5zOjokY29tbWVudFRva2VucywgKCRuZXh0ICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgICAgICAgICBicmVhaygyKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRuZXh0LS07CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIHN0YXJ0IG9mIHRoZSBtYWluIGNvZGUgYmxvY2suCiAgICAgICAgICAgICAgICBicmVhaygyKTsKICAgICAgICAgICAgfS8vZW5kIHN3aXRjaAoKICAgICAgICAgICAgJG5leHQgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX1dISVRFU1BBQ0UsICgkbmV4dCArIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICB9IHdoaWxlICgkbmV4dCAhPT0gZmFsc2UpOwoKICAgICAgICByZXR1cm4gJGhlYWRlckxpbmVzOwoKICAgIH0vL2VuZCBnZXRIZWFkZXJMaW5lcygpCgoKICAgIC8qKgogICAgICogQ2hlY2sgdGhlIHNwYWNpbmcgYW5kIGdyb3VwaW5nIG9mIHRoZSBzdGF0ZW1lbnRzIGluc2lkZSBlYWNoIGhlYWRlciBibG9jay4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgICBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyTGluZXMgSGVhZGVyIGluZm9ybWF0aW9uLCBhcyBzb3VyY2VkCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGdldEhlYWRlckxpbmVzKCkuCiAgICAgKgogICAgICogQHJldHVybiBpbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlckxpbmVzKEZpbGUgJHBocGNzRmlsZSwgJGhlYWRlckxpbmVzKQogICAgewogICAgICAgICR0b2tlbnMgPSAkcGhwY3NGaWxlLT5nZXRUb2tlbnMoKTsKCiAgICAgICAgJGZvdW5kID0gW107CgogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJMaW5lcyBhcyAkaSA9PiAkbGluZSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGhlYWRlckxpbmVzWygkaSArIDEpXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCAkaGVhZGVyTGluZXNbKCRpICsgMSldWyd0eXBlJ10gIT09ICRsaW5lWyd0eXBlJ10KICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBXZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGhlYWRlciBibG9jay4KICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNpbmdsZSBibGFuayBsaW5lIGFmdGVyCiAgICAgICAgICAgICAgICAvLyB0aGlzIGJsb2NrLgogICAgICAgICAgICAgICAgJG5leHQgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX1dISVRFU1BBQ0UsICgkbGluZVsnZW5kJ10gKyAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICBpZiAoJG5leHQgIT09IGZhbHNlICYmICR0b2tlbnNbJG5leHRdWydsaW5lJ10gIT09ICgkdG9rZW5zWyRsaW5lWydlbmQnXV1bJ2xpbmUnXSArIDIpKSB7CiAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ0hlYWRlciBibG9ja3MgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgYmxhbmsgbGluZSc7CiAgICAgICAgICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGxpbmVbJ2VuZCddLCAnU3BhY2luZ0FmdGVyQmxvY2snKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skbmV4dF1bJ2xpbmUnXSA9PT0gJHRva2Vuc1skbGluZVsnZW5kJ11dWydsaW5lJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5hZGRDb250ZW50QmVmb3JlKCRuZXh0LCAkcGhwY3NGaWxlLT5lb2xDaGFyLiRwaHBjc0ZpbGUtPmVvbENoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCR0b2tlbnNbJG5leHRdWydsaW5lJ10gPT09ICgkdG9rZW5zWyRsaW5lWydlbmQnXV1bJ2xpbmUnXSArIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YWRkTmV3bGluZSgkbGluZVsnZW5kJ10pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmJlZ2luQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gKCRsaW5lWydlbmQnXSArIDEpOyAkaSA8ICRuZXh0OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydsaW5lJ10gPT09ICgkdG9rZW5zWyRsaW5lWydlbmQnXV1bJ2xpbmUnXSArIDIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkaSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5lbmRDaGFuZ2VzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmVuJ3Qgc2VlbiB0aGlzIG5leHQgYmxvY2sgYmVmb3JlLgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRoZWFkZXJMaW5lc1soJGkgKyAxKV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgJiYgaXNzZXQoJGZvdW5kWyRoZWFkZXJMaW5lc1soJGkgKyAxKV1bJ3R5cGUnXV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgID0gJ1NpbWlsYXIgc3RhdGVtZW50cyBtdXN0IGJlIGdyb3VwZWQgdG9nZXRoZXIgaW5zaWRlIGhlYWRlciBibG9ja3M7ICc7CiAgICAgICAgICAgICAgICAgICAgJGVycm9yIC49ICd0aGUgZmlyc3QgIiVzIiBzdGF0ZW1lbnQgd2FzIGZvdW5kIG9uIGxpbmUgJXMnOwogICAgICAgICAgICAgICAgICAgICRkYXRhICAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJMaW5lc1soJGkgKyAxKV1bJ3R5cGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1skZm91bmRbJGhlYWRlckxpbmVzWygkaSArIDEpXVsndHlwZSddXVsnc3RhcnQnXV1bJ2xpbmUnXSwKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJGhlYWRlckxpbmVzWygkaSArIDEpXVsnc3RhcnQnXSwgJ0luY29ycmVjdEdyb3VwaW5nJywgJGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKCRoZWFkZXJMaW5lc1soJGkgKyAxKV1bJ3R5cGUnXSA9PT0gJGxpbmVbJ3R5cGUnXSkgewogICAgICAgICAgICAgICAgLy8gU3RpbGwgaW4gdGhlIHNhbWUgYmxvY2ssIHNvIG1ha2Ugc3VyZSB0aGVyZSBpcyBubwogICAgICAgICAgICAgICAgLy8gYmxhbmsgbGluZSBhZnRlciB0aGlzIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICRuZXh0ID0gJHBocGNzRmlsZS0+ZmluZE5leHQoVF9XSElURVNQQUNFLCAoJGxpbmVbJ2VuZCddICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJG5leHRdWydsaW5lJ10gPiAoJHRva2Vuc1skbGluZVsnZW5kJ11dWydsaW5lJ10gKyAxKSkgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdIZWFkZXIgYmxvY2tzIG11c3Qgbm90IGNvbnRhaW4gYmxhbmsgbGluZXMnOwogICAgICAgICAgICAgICAgICAgICRmaXggICA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRsaW5lWydlbmQnXSwgJ1NwYWNpbmdJbnNpZGVCbG9jaycpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5iZWdpbkNoYW5nZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gKCRsaW5lWydlbmQnXSArIDEpOyAkaSA8ICRuZXh0OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skaV1bJ2xpbmUnXSA9PT0gJHRva2Vuc1skbGluZVsnZW5kJ11dWydsaW5lJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skaV1bJ2xpbmUnXSA9PT0gJHRva2Vuc1skbmV4dF1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oJGksICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoaXNzZXQoJGZvdW5kWyRsaW5lWyd0eXBlJ11dKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRmb3VuZFskbGluZVsndHlwZSddXSA9ICRsaW5lOwogICAgICAgICAgICB9CiAgICAgICAgfS8vZW5kIGZvcmVhY2gKCiAgICAgICAgLyoKICAgICAgICAgICAgTmV4dCwgY2hlY2sgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGhlYWRlciBibG9ja3MKICAgICAgICAgICAgaXMgY29ycmVjdDoKICAgICAgICAgICAgICAgIE9wZW5pbmcgcGhwIHRhZy4KICAgICAgICAgICAgICAgIEZpbGUtbGV2ZWwgZG9jYmxvY2suCiAgICAgICAgICAgICAgICBPbmUgb3IgbW9yZSBkZWNsYXJlIHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgICBUaGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIG9mIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgT25lIG9yIG1vcmUgY2xhc3MtYmFzZWQgdXNlIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICAgICAgICAgT25lIG9yIG1vcmUgZnVuY3Rpb24tYmFzZWQgdXNlIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICAgICAgICAgT25lIG9yIG1vcmUgY29uc3RhbnQtYmFzZWQgdXNlIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICovCgogICAgICAgICRibG9ja09yZGVyID0gWwogICAgICAgICAgICAndGFnJyAgICAgICAgICA9PiAnb3BlbmluZyBQSFAgdGFnJywKICAgICAgICAgICAgJ2RvY2Jsb2NrJyAgICAgPT4gJ2ZpbGUtbGV2ZWwgZG9jYmxvY2snLAogICAgICAgICAgICAnZGVjbGFyZScgICAgICA9PiAnZGVjbGFyZSBzdGF0ZW1lbnRzJywKICAgICAgICAgICAgJ25hbWVzcGFjZScgICAgPT4gJ25hbWVzcGFjZSBkZWNsYXJhdGlvbicsCiAgICAgICAgICAgICd1c2UnICAgICAgICAgID0+ICdjbGFzcy1iYXNlZCB1c2UgaW1wb3J0cycsCiAgICAgICAgICAgICd1c2UgZnVuY3Rpb24nID0+ICdmdW5jdGlvbi1iYXNlZCB1c2UgaW1wb3J0cycsCiAgICAgICAgICAgICd1c2UgY29uc3QnICAgID0+ICdjb25zdGFudC1iYXNlZCB1c2UgaW1wb3J0cycsCiAgICAgICAgXTsKCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkZm91bmQpIGFzICR0eXBlKSB7CiAgICAgICAgICAgIGlmICgkdHlwZSA9PT0gJ3RhZycpIHsKICAgICAgICAgICAgICAgIC8vIFRoZSBvcGVuaW5nIHRhZyBpcyBhbHdheXMgaW4gdGhlIGNvcnJlY3Qgc3BvdC4KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkb3JkZXJlZFR5cGUgPSBuZXh0KCRibG9ja09yZGVyKTsKICAgICAgICAgICAgfSB3aGlsZSAoJG9yZGVyZWRUeXBlICE9PSBmYWxzZSAmJiBrZXkoJGJsb2NrT3JkZXIpICE9PSAkdHlwZSk7CgogICAgICAgICAgICBpZiAoJG9yZGVyZWRUeXBlID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgLy8gV2UgZGlkbid0IGZpbmQgdGhlIGJsb2NrIHR5cGUgaW4gdGhlIHJlc3Qgb2YgdGhlCiAgICAgICAgICAgICAgICAvLyBvcmRlcmVkIGFycmF5LCBzbyBpdCBpcyBvdXQgb2YgcGxhY2UuCiAgICAgICAgICAgICAgICAvLyBFcnJvciBhbmQgcmVzZXQgdGhlIGFycmF5IHRvIHRoZSBjb3JyZWN0IHBvc2l0aW9uCiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBjYW4gY2hlY2sgdGhlIG5leHQgYmxvY2suCiAgICAgICAgICAgICAgICByZXNldCgkYmxvY2tPcmRlcik7CiAgICAgICAgICAgICAgICAkcHJldlZhbGlkVHlwZSA9ICd0YWcnOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICRvcmRlcmVkVHlwZSA9IG5leHQoJGJsb2NrT3JkZXIpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkZm91bmRba2V5KCRibG9ja09yZGVyKV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGtleSgkYmxvY2tPcmRlcikgIT09ICR0eXBlCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2VmFsaWRUeXBlID0ga2V5KCRibG9ja09yZGVyKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlICgkb3JkZXJlZFR5cGUgIT09IGZhbHNlICYmIGtleSgkYmxvY2tPcmRlcikgIT09ICR0eXBlKTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnVGhlICVzIG11c3QgZm9sbG93IHRoZSAlcyBpbiB0aGUgZmlsZSBoZWFkZXInOwogICAgICAgICAgICAgICAgJGRhdGEgID0gWwogICAgICAgICAgICAgICAgICAgICRibG9ja09yZGVyWyR0eXBlXSwKICAgICAgICAgICAgICAgICAgICAkYmxvY2tPcmRlclskcHJldlZhbGlkVHlwZV0sCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkZm91bmRbJHR5cGVdWydzdGFydCddLCAnSW5jb3JyZWN0T3JkZXInLCAkZGF0YSk7CiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBmb3JlYWNoCgogICAgfS8vZW5kIHByb2Nlc3NIZWFkZXJMaW5lcygpCgoKfS8vZW5kIGNsYXNzCiI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6NDU6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjEyXFNuaWZmc1xGaWxlcyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ1OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IxMlxTbmlmZnNcRmlsZXMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo1OiJGaWxlcyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjYxOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IxMlxTbmlmZnNcRmlsZXNcRmlsZUhlYWRlclNuaWZmIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjYxOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IxMlxTbmlmZnNcRmlsZXNcRmlsZUhlYWRlclNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTU6IkZpbGVIZWFkZXJTbmlmZiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjE6e3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NToiU25pZmYiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjQ6e3M6NzM6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjEyXFNuaWZmc1xGaWxlc1xGaWxlSGVhZGVyU25pZmY6OnJlZ2lzdGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1NzoiUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ0OiJQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjEyXFNuaWZmc1xGaWxlcyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6Mzp7czo0OiJGaWxlIjtzOjI2OiJQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czo1OiJTbmlmZiI7czoyODoiUEhQX0NvZGVTbmlmZmVyXFNuaWZmc1xTbmlmZiI7czo2OiJUb2tlbnMiO3M6Mjc6IlBIUF9Db2RlU25pZmZlclxVdGlsXFRva2VucyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjczOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IxMlxTbmlmZnNcRmlsZXNcRmlsZUhlYWRlclNuaWZmOjpyZWdpc3RlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoicmVnaXN0ZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NzI6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBTUjEyXFNuaWZmc1xGaWxlc1xGaWxlSGVhZGVyU25pZmY6OnByb2Nlc3MoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjU5OiJQcm9jZXNzZXMgdGhpcyBzbmlmZiB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjM6IlRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjg6InN0YWNrUHRyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ3OiJUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQKdG9rZW4gaW4gdGhlIHN0YWNrLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31pOjE7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxfIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzY7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3MjoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMTJcU25pZmZzXEZpbGVzXEZpbGVIZWFkZXJTbmlmZjo6cHJvY2VzcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NzoicHJvY2VzcyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJzdGFja1B0ciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTE5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo3OToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMTJcU25pZmZzXEZpbGVzXEZpbGVIZWFkZXJTbmlmZjo6Z2V0SGVhZGVyTGluZXMoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjcwOiJHYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlbWVudHMgaW5zaWRlIGEgcG9zc2libGUgZmlsZSBoZWFkZXIuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjM6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NDc6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudAp0b2tlbiBpbiB0aGUgc3RhY2suIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc5OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQU1IxMlxTbmlmZnNcRmlsZXNcRmlsZUhlYWRlclNuaWZmOjpnZXRIZWFkZXJMaW5lcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTQ6ImdldEhlYWRlckxpbmVzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTMxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mjc2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo4MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMTJcU25pZmZzXEZpbGVzXEZpbGVIZWFkZXJTbmlmZjo6cHJvY2Vzc0hlYWRlckxpbmVzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo3NDoiQ2hlY2sgdGhlIHNwYWNpbmcgYW5kIGdyb3VwaW5nIG9mIHRoZSBzdGF0ZW1lbnRzIGluc2lkZSBlYWNoIGhlYWRlciBibG9jay4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czoxMToiaGVhZGVyTGluZXMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjUzOiJIZWFkZXIgaW5mb3JtYXRpb24sIGFzIHNvdXJjZWQKZnJvbSBnZXRIZWFkZXJMaW5lcygpLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31pOjE7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxfIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzY7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcUFNSMTJcU25pZmZzXEZpbGVzXEZpbGVIZWFkZXJTbmlmZjo6cHJvY2Vzc0hlYWRlckxpbmVzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoicHJvY2Vzc0hlYWRlckxpbmVzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjExOiJoZWFkZXJMaW5lcyI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI4ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQyNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQyODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";