YQ0NCgAAAABFGnxj3JIAAOMAAAAAAAAAAAAAAAAAAAAABwAAAEAAAABzaAIAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBGQBZAJsBVoFZAFkA2wGbQdaB20IWghtCVoJbQpaCm0LWgttDFoMbQ1aDQEAZAFkBGwObQ9aDwEAZAFkBWwQbRFaEQEAZAFkBmwSbRNaEwEAZAFkB2wUbRVaFQEAZAFkCGwUbRZaFwEAZAFkCWwYbRlaGW0aWhptG1obbRxaHAEAZAFkCmwdbR5aHm0fWh8BAGQBZAtsIG0hWiEBAGQBZAxsIm0jWiMBAGQBZA1sJG0lWiUBAGQBZA5sJm0nWicBAGQBZA9sKG0pWikBAGQBZBBsKm0rWisBAGQBZBFsLG0tWi0BAGQBZBJsLm0vWi8BAGQBZBNsMG0xWjEBAGQBZBRsMm0zWjMBAGQBZBVsNG01WjUBAGQBZBZsNm03WjcBAGQBZBdsOG05WjkBAGQBZBhsOm07WjsBAGQBZBlsPG09Wj0BAGcAZBqiAVo+ZTFlP4MBWkBlDWUMZBsZAGUMZUFlQmYCGQBmAhkAWkNlDGVBZUFlQWUVZQplQRkAZUNmBhkAWkRkNGUlZQxlQWVBZUFmAxkAZUVlRWQdnARkHmQfhAVaRkcAZCBkIYQAZCFlAWpHgwNaSEcAZCJkI4QAZCODAlpJZQllIRkAZTVlQmUJZSEZAGQknARkJWQmhARaSkcAZCdkKIQAZCiDAlpLRwBkKWQqhABkKoMCWkxHAGQrZCyEAGQsgwJaTUcAZC1kLoQAZC6DAlpOZUJlQmVBZC+cA2QwZDGEBFpPZUJlQmUKZUIZAGQvnANkMmQzhARaUGQCUwApNXohUm91dGluZXMgcmVsYXRlZCB0byBQeVBJLCBpbmRleGVz6QAAAABOKQfaCUZyb3plblNldNoISXRlcmFibGXaBExpc3TaCE9wdGlvbmFs2gNTZXTaBVR1cGxl2gVVbmlvbikB2gpzcGVjaWZpZXJzKQHaA1RhZykB2hFjYW5vbmljYWxpemVfbmFtZSkB2gxfQmFzZVZlcnNpb24pAdoFcGFyc2UpBNobQmVzdFZlcnNpb25BbHJlYWR5SW5zdGFsbGVk2hREaXN0cmlidXRpb25Ob3RGb3VuZNoUSW52YWxpZFdoZWVsRmlsZW5hbWXaEFVuc3VwcG9ydGVkV2hlZWwpAtoNTGlua0NvbGxlY3RvctoLcGFyc2VfbGlua3MpAdoVSW5zdGFsbGF0aW9uQ2FuZGlkYXRlKQHaDUZvcm1hdENvbnRyb2wpAdoETGluaykB2gtTZWFyY2hTY29wZSkB2hRTZWxlY3Rpb25QcmVmZXJlbmNlcykB2gxUYXJnZXRQeXRob24pAdoFV2hlZWwpAdoSSW5zdGFsbFJlcXVpcmVtZW50KQHaCWdldExvZ2dlcikB2g9XSEVFTF9FWFRFTlNJT04pAdoGSGFzaGVzKQHaCmluZGVudF9sb2cpAdoMYnVpbGRfbmV0bG9jKQHaFWNoZWNrX3JlcXVpcmVzX3B5dGhvbikB2hRTVVBQT1JURURfRVhURU5TSU9OUykDchUAAADaE0Jlc3RDYW5kaWRhdGVSZXN1bHTaDVBhY2thZ2VGaW5kZXKpAEYpBNoEbGlua9oMdmVyc2lvbl9pbmZv2hZpZ25vcmVfcmVxdWlyZXNfcHl0aG9u2gZyZXR1cm5jAwAAAAAAAAAAAAAABQAAAAgAAABDAAAAc3wAAAB6EnQAfABqAXwBZAGNAn0DVwBuJAQAdAJqA3k2AQABAAEAdASgBWQCfABqAXwAoQMBAFkAbkIwAHwDc3hkA6AGdAd0CHwBgwKhAX0EfAJzZnQEoAlkBHwEfABqAXwAoQQBAGQFUwB0BKAFZAZ8BHwAagF8AKEEAQBkB1MAKQhhYQEAAAogICAgUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIFB5dGhvbiB2ZXJzaW9uIGlzIGNvbXBhdGlibGUgd2l0aCBhIGxpbmsncwogICAgIlJlcXVpcmVzLVB5dGhvbiIgdmFsdWUuCgogICAgOnBhcmFtIHZlcnNpb25faW5mbzogQSAzLXR1cGxlIG9mIGludHMgcmVwcmVzZW50aW5nIHRoZSBQeXRob24KICAgICAgICBtYWpvci1taW5vci1taWNybyB2ZXJzaW9uIHRvIGNoZWNrLgogICAgOnBhcmFtIGlnbm9yZV9yZXF1aXJlc19weXRob246IFdoZXRoZXIgdG8gaWdub3JlIHRoZSAiUmVxdWlyZXMtUHl0aG9uIgogICAgICAgIHZhbHVlIGlmIHRoZSBnaXZlbiBQeXRob24gdmVyc2lvbiBpc24ndCBjb21wYXRpYmxlLgogICAgKQFyJwAAAHoySWdub3JpbmcgaW52YWxpZCBSZXF1aXJlcy1QeXRob24gKCVyKSBmb3IgbGluazogJXPaAS56NExpbmsgcmVxdWlyZXMgYSBkaWZmZXJlbnQgUHl0aG9uICglcyBub3QgaW46ICVyKTogJXNGekJJZ25vcmluZyBmYWlsZWQgUmVxdWlyZXMtUHl0aG9uIGNoZWNrICglcyBub3QgaW46ICVyKSBmb3IgbGluazogJXNUKQpyIQAAANoPcmVxdWlyZXNfcHl0aG9ucgkAAADaEEludmFsaWRTcGVjaWZpZXLaBmxvZ2dlctoFZGVidWfaBGpvaW7aA21hcNoDc3Ry2gd2ZXJib3NlKQVyJgAAAHInAAAAcigAAADaDWlzX2NvbXBhdGlibGXaB3ZlcnNpb25yJQAAAHIlAAAA+l8vaG9tZS9obmkvVG9wbWV0YWxTZS1EUFMvdmVudi9saWIvcHl0aG9uMy45L3NpdGUtcGFja2FnZXMvcGlwL19pbnRlcm5hbC9pbmRleC9wYWNrYWdlX2ZpbmRlci5wedobX2NoZWNrX2xpbmtfcmVxdWlyZXNfcHl0aG9uMwAAAHM4AAAAAA4CAQIBBAEC/goEDgEEAQIBBAEC/QoGBAEQAQQBBAECAQIBBAEC/AQGBAIEAQIBAgEEAQL8BAdyNgAAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABzRAAAAGUAWgFkAFoCZQOgBKEAWgVlA6AEoQBaBmUDoAShAFoHZQOgBKEAWghlA6AEoQBaCWUDoAShAFoKZQOgBKEAWgtkAVMAKQLaCExpbmtUeXBlTikM2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gRlbnVt2gRhdXRv2gljYW5kaWRhdGXaEWRpZmZlcmVudF9wcm9qZWN02gZ5YW5rZWTaEmZvcm1hdF91bnN1cHBvcnRlZNoOZm9ybWF0X2ludmFsaWTaEXBsYXRmb3JtX21pc21hdGNo2hhyZXF1aXJlc19weXRob25fbWlzbWF0Y2hyJQAAAHIlAAAAciUAAAByNQAAAHI3AAAAYgAAAHMOAAAACAEIAQgBCAEIAQgBCAFyNwAAAGMAAAAAAAAAAAAAAAAAAAAACQAAAEAA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AX0GVwBuHAQAdBB56gEAAQABAHQDahFkC2YCBgBZAFMAMAB0EnwGahODAXwAahRrA5ABchZkDHwAagybAGQNnQN9A3QDahV8A2YCUwB8AGoWoBehAH0HfAagGHwHoQGQAXNQZA6gGXwGoBqhAKEBfQhkD3wImwBkEJ0DfQN0A2obfANmAlMAfAZqHH0CZBF8AGoKdgGQAXKCfAV0C2sDkAFygmQSfABqDJsAnQJ9A3QDagh8A2YCUwB8ApABc5R0HXwEfABqFIMCfQJ8ApABc7BkE3wAagybAJ0CfQN0A2oRfANmAlMAfABqHqAffAKhAX0JfAmQAXL0fAJkAXwJoCChAIUCGQB9AnwJoCFkFKEBfQp8CnwAahZqImsDkAFy9HQDahtkFWYCUwB0I3wBfABqFmokfABqJWQWjQN9C3wLkAJzKHwCmwBkF3wBaiabAJ0DfQN0A2onfANmAlMAdCigKWQYfAF8AqEDAQB0A2oqfAJmAlMAKRlhrQEAAAogICAgICAgIERldGVybWluZSB3aGV0aGVyIGEgbGluayBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5zdGFsbGF0aW9uLgoKICAgICAgICA6cmV0dXJuOiBBIHR1cGxlIChyZXN1bHQsIGRldGFpbCksIHdoZXJlICpyZXN1bHQqIGlzIGFuIGVudW0KICAgICAgICAgICAgcmVwcmVzZW50aW5nIHdoZXRoZXIgdGhlIGV2YWx1YXRpb24gZm91bmQgYSBjYW5kaWRhdGUsIG9yIHRoZSByZWFzb24KICAgICAgICAgICAgd2h5IG9uZSBpcyBub3QgZm91bmQuIElmIGEgY2FuZGlkYXRlIGlzIGZvdW5kLCAqZGV0YWlsKiB3aWxsIGJlIHRoZQogICAgICAgICAgICBjYW5kaWRhdGUncyB2ZXJzaW9uIHN0cmluZzsgaWYgb25lIGlzIG5vdCBmb3VuZCwgaXQgY29udGFpbnMgdGhlCiAgICAgICAgICAgIHJlYXNvbiB0aGUgbGluayBmYWlscyB0byBxdWFsaWZ5LgogICAgICAgIE56DDxub25lIGdpdmVuPnoTeWFua2VkIGZvciByZWFzb246IHoKbm90IGEgZmlsZXocdW5zdXBwb3J0ZWQgYXJjaGl2ZSBmb3JtYXQ6INoGYmluYXJ5ehpObyBiaW5hcmllcyBwZXJtaXR0ZWQgZm9yINoIbWFjb3N4MTB6BC56aXB6DG1hY29zeDEwIG9uZXoWaW52YWxpZCB3aGVlbCBmaWxlbmFtZXoYd3JvbmcgcHJvamVjdCBuYW1lIChub3Qg+gEp+gIsIHoabm9uZSBvZiB0aGUgd2hlZWwncyB0YWdzICh6QikgYXJlIGNvbXBhdGlibGUgKHJ1biBwaXAgZGVidWcgLS12ZXJib3NlIHRvIHNob3cgY29tcGF0aWJsZSB0YWdzKdoGc291cmNlehlObyBzb3VyY2VzIHBlcm1pdHRlZCBmb3IgehxNaXNzaW5nIHByb2plY3QgdmVyc2lvbiBmb3Ig6QEAAAB6G1B5dGhvbiB2ZXJzaW9uIGlzIGluY29ycmVjdCkCcicAAAByKAAAAHoRIFJlcXVpcmVzLVB5dGhvbiB6GkZvdW5kIGxpbmsgJXMsIHZlcnNpb246ICVzKSvaCWlzX3lhbmtlZHJKAAAA2g15YW5rZWRfcmVhc29ucjcAAAByPwAAANoMZWdnX2ZyYWdtZW502gNleHTaCHNwbGl0ZXh0ckAAAAByIgAAAHJNAAAAch0AAAByRQAAANoEcGF0aHIaAAAA2ghmaWxlbmFtZXIQAAAAckEAAAByCwAAANoEbmFtZXJLAAAAcj4AAAByTgAAANoIZ2V0X3RhZ3PaCXN1cHBvcnRlZHIvAAAA2hdnZXRfZm9ybWF0dGVkX2ZpbGVfdGFnc3JCAAAAcjQAAADaHl9leHRyYWN0X3ZlcnNpb25fZnJvbV9mcmFnbWVudNoOX3B5X3ZlcnNpb25fcmXaBnNlYXJjaNoFc3RhcnTaBWdyb3Vw2gpweV92ZXJzaW9ucjYAAADaD3B5X3ZlcnNpb25faW5mb3JMAAAAcisAAAByQwAAAHItAAAAci4AAAByPQAAACkMck8AAAByJgAAAHI0AAAA2gZyZWFzb27aCGVnZ19pbmZvcloAAADaBXdoZWVs2g5zdXBwb3J0ZWRfdGFnc9oJZmlsZV90YWdz2gVtYXRjaHJnAAAA2g9zdXBwb3J0c19weXRob25yJQAAAHIlAAAAcjUAAADaDWV2YWx1YXRlX2xpbmudAAAAc4IAAAAACgQBDAEKARACBgEGAQoCDAEEAQoBCAIEAQj+BAQSAQwBCgESAQoBCgECAQ4BDAIEAQL+CgQSAQ4BCgIKAQwDDgIK/wIECgIGAxYBDAEKAgYBAgECAQT+BAQGAQwBCgIMAQYBEAEKAQ4CBAEC/gQFAgECAQYBBP0GBQYBEAEKAg4CehtMaW5rRXZhbHVhdG9yLmV2YWx1YXRlX2xpbmspAU4pEXI4AAAAcjkAAAByOgAAANoHX19kb2NfX9oCcmXaB2NvbXBpbGVyYwAAAHIxAAAAcgIAAAByGQAAANoEYm9vbHIFAAAAclAAAAByFgAAAHIHAAAAcjcAAABycAAAAHIlAAAAciUAAAByJQAAAHI1AAAAckQAAABsAAAAcxoAAAAIAgQECg0A+QICAgECAQYBAgECAQYBAvgMJXJEAAAAKQTaCmNhbmRpZGF0ZXPaBmhhc2hlc3JFAAAAcikAAABjAwAAAAAAAAAAAAAACgAAAAkAAABDAAAAc94AAAB8AXMedACgAWQBdAJ8AIMBfAKhAwEAdAN8AIMBUwBnAH0DZwB9BGQCfQV8AEQAXT59BnwGagR9B3wHagVzQG4ifAdqBnwBZAONAXJWfAVkBDcAfQVuDHwEoAd8BqEBAQBxLnwDoAd8BqEBAQBxLnwFcnh8A30Ibgh0A3wAgwF9CHQCfAiDAXQCfACDAWsCcpZkBX0JbiBkBqAIdAJ8BIMBZAegCWQIZAmEAHwERACDAaEBoQJ9CXQAoAFkCnQCfACDAXwCfAFqCnwFdAJ8A4MBfAUYAHwJoQcBAHwIUwApC2HGAgAACiAgICBGaWx0ZXIgb3V0IGNhbmRpZGF0ZXMgd2hvc2UgaGFzaGVzIGFyZW4ndCBhbGxvd2VkLCBhbmQgcmV0dXJuIGEgbmV3CiAgICBsaXN0IG9mIGNhbmRpZGF0ZXMuCgogICAgSWYgYXQgbGVhc3Qgb25lIGNhbmRpZGF0ZSBoYXMgYW4gYWxsb3dlZCBoYXNoLCB0aGVuIGFsbCBjYW5kaWRhdGVzIHdpdGgKICAgIGVpdGhlciBhbiBhbGxvd2VkIGhhc2ggb3Igbm8gaGFzaCBzcGVjaWZpZWQgYXJlIHJldHVybmVkLiAgT3RoZXJ3aXNlLAogICAgdGhlIGdpdmVuIGNhbmRpZGF0ZXMgYXJlIHJldHVybmVkLgoKICAgIEluY2x1ZGluZyB0aGUgY2FuZGlkYXRlcyB3aXRoIG5vIGhhc2ggc3BlY2lmaWVkIHdoZW4gdGhlcmUgaXMgYSBtYXRjaAogICAgYWxsb3dzIGEgd2FybmluZyB0byBiZSBsb2dnZWQgaWYgdGhlcmUgaXMgYSBtb3JlIHByZWZlcnJlZCBjYW5kaWRhdGUKICAgIHdpdGggbm8gaGFzaCBzcGVjaWZpZWQuICBSZXR1cm5pbmcgYWxsIGNhbmRpZGF0ZXMgaW4gdGhlIGNhc2Ugb2Ygbm8KICAgIG1hdGNoZXMgbGV0cyBwaXAgcmVwb3J0IHRoZSBoYXNoIG9mIHRoZSBjYW5kaWRhdGUgdGhhdCB3b3VsZCBvdGhlcndpc2UKICAgIGhhdmUgYmVlbiBpbnN0YWxsZWQgKGUuZy4gcGVybWl0dGluZyB0aGUgdXNlciB0byBtb3JlIGVhc2lseSB1cGRhdGUKICAgIHRoZWlyIHJlcXVpcmVtZW50cyBmaWxlIHdpdGggdGhlIGRlc2lyZWQgaGFzaCkuCiAgICB6SkdpdmVuIG5vIGhhc2hlcyB0byBjaGVjayAlcyBsaW5rcyBmb3IgcHJvamVjdCAlcjogZGlzY2FyZGluZyBubyBjYW5kaWRhdGVzcgEAAAApAXJ2AAAAclYAAAB6GGRpc2NhcmRpbmcgbm8gY2FuZGlkYXRlc3ofZGlzY2FyZGluZyB7fSBub24tbWF0Y2hlczoKICB7fXoDCiAgYwEAAAAAAAAAAAAAAAIAAAADAAAAcwAAAHMYAAAAfABdEH0BdAB8AWoBgwFWAAEAcQJkAFMAqQFOKQJyMQAAAHImAAAAKQLaAi4wcj0AAAByJQAAAHIlAAAAcjUAAADaCTxnZW5leHByPjUBAADzAAAAAHoqZmlsdGVyX3VuYWxsb3dlZF9oYXNoZXMuPGxvY2Fscz4uPGdlbmV4cHI+elBDaGVja2VkICVzIGxpbmtzIGZvciBwcm9qZWN0ICVyIGFnYWluc3QgJXMgaGFzaGVzICglcyBtYXRjaGVzLCAlcyBubyBkaWdlc3QpOiAlcykLci0AAAByLgAAANoDbGVu2gRsaXN0ciYAAADaCGhhc19oYXNo2g9pc19oYXNoX2FsbG93ZWTaBmFwcGVuZNoGZm9ybWF0ci8AAADaDGRpZ2VzdF9jb3VudCkKcnUAAABydgAAAHJFAAAA2hRtYXRjaGVzX29yX25v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dGVzIGJ5IHByZWZlcmVuY2UuCgogICAgICAgIFJldHVybnMgYSB0dXBsZSBzdWNoIHRoYXQgdHVwbGVzIHNvcnRpbmcgYXMgZ3JlYXRlciB1c2luZyBQeXRob24ncwogICAgICAgIGRlZmF1bHQgY29tcGFyaXNvbiBvcGVyYXRvciBhcmUgbW9yZSBwcmVmZXJyZWQuCgogICAgICAgIFRoZSBwcmVmZXJlbmNlIGlzIGFzIGZvbGxvd3M6CgogICAgICAgIEZpcnN0IGFuZCBmb3JlbW9zdCwgY2FuZGlkYXRlcyB3aXRoIGFsbG93ZWQgKG1hdGNoaW5nKSBoYXNoZXMgYXJlCiAgICAgICAgYWx3YXlzIHByZWZlcnJlZCBvdmVyIGNhbmRpZGF0ZXMgd2l0aG91dCBtYXRjaGluZyBoYXNoZXMuIFRoaXMgaXMKICAgICAgICBiZWNhdXNlIGUuZy4gaWYgdGhlIG9ubHkgY2FuZGlkYXRlIHdpdGggYW4gYWxsb3dlZCBoYXNoIGlzIHlhbmtlZCwKICAgICAgICB3ZSBzdGlsbCB3YW50IHRvIHVzZSB0aGF0IGNhbmRpZGF0ZS4KCiAgICAgICAgU2Vjb25kLCBleGNlcHRpbmcgaGFzaCBjb25zaWRlcmF0aW9ucywgY2FuZGlkYXRlcyB0aGF0IGhhdmUgYmVlbgogICAgICAgIHlhbmtlZCAoaW4gdGhlIHNlbnNlIG9mIFBFUCA1OTIpIGFyZSBhbHdheXMgbGVzcyBwcmVmZXJyZWQgdGhhbgogICAgICAgIGNhbmRpZGF0ZXMgdGhhdCBoYXZlbid0IGJlZW4geWFua2VkLiBUaGVuOgoKICAgICAgICBJZiBub3QgZmluZGluZyB3aGVlbHMsIHRoZXkgYXJlIHNvcnRlZCBieSB2ZXJzaW9uIG9ubHkuCiAgICAgICAgSWYgZmluZGluZyB3aGVlbHMsIHRoZW4gdGhlIHNvcnQgb3JkZXIgaXMgYnkgdmVyc2lvbiwgdGhlbjoKICAgICAgICAgIDEuIGV4aXN0aW5nIGluc3RhbGxzCiAgICAgICAgICAyLiB3aGVlbHMgb3JkZXJlZCB2aWEgV2hlZWwuc3VwcG9ydF9pbmRleF9taW4oc2VsZi5fc3VwcG9ydGVkX3RhZ3MpCiAg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ciUAAAByNQAAAHKnAAAAngMAAHJ6AAAAektQYWNrYWdlRmluZGVyLmZpbmRfcmVxdWlyZW1lbnQuPGxvY2Fscz4uX2Zvcm1hdF92ZXJzaW9ucy48bG9jYWxzPi48c2V0Y29tcD5yrwAAANoEbm9uZSkDci8AAABysgAAANoNcGFyc2VfdmVyc2lvbikBcgwBAAByJQAAAHIlAAAAcjUAAADaEF9mb3JtYXRfdmVyc2lvbnOWAwAAcxAAAAAABgQBAgEMAQL+BP8EBgL5ejhQYWNrYWdlRmluZGVyLmZpbmRfcmVxdWlyZW1lbnQuPGxvY2Fscz4uX2Zvcm1hdF92ZXJzaW9uc3pOQ291bGQgbm90IGZpbmQgYSB2ZXJzaW9uIHRoYXQgc2F0aXNmaWVzIHRoZSByZXF1aXJlbWVudCAlcyAoZnJvbSB2ZXJzaW9uczogJXMpeiVObyBtYXRjaGluZyBkaXN0cmlidXRpb24gZm91bmQgZm9yIHt9VHpMRXhpc3RpbmcgaW5zdGFsbGVkIHZlcnNpb24gKCVzKSBpcyBtb3N0IHVwLXRvLWRhdGUgYW5kIHNhdGlzZmllcyByZXF1aXJlbWVudHpVRXhpc3RpbmcgaW5zdGFsbGVkIHZlcnNpb24gKCVzKSBzYXRpc2ZpZXMgcmVxdWlyZW1lbnQgKG1vc3QgdXAtdG8tZGF0ZSB2ZXJzaW9uIGlzICVzKXo9SW5zdGFsbGVkIHZlcnNpb24gKCVzKSBpcyBtb3N0IHVwLXRvLWRhdGUgKHBhc3QgdmVyc2lvbnM6ICVzKXopVXNpbmcgdmVyc2lvbiAlcyAobmV3ZXN0IG9mIHZlcnNpb25zOiAlcykpEnJ2AAAAcggBAAByXgAAAHKXAAAAcowAAADaDHNhdGlzZmllZF9ieXI0AAAAcgMAAAByFAAAAHIxAAAAci0AAADaCGNyaXRpY2FscpQAAAByDwAAAHKAAAAAci4AAABylQAAAHIOAAAAKQlyTwAAAHIJAQAAcgoBAABydgAAANoVYmVzdF9jYW5kaWRhdGVfcmVzdWx0cowAAADaEWluc3RhbGxlZF92ZXJzaW9ucg8BAADaDmJlc3RfaW5zdGFsbGVkciUAAAByJQAAAHI1AAAA2hBmaW5kX3JlcXVpcmVtZW50gQMAAHNoAAAAAAkMAQQBBAEE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EgEMAQgBDAEEAQQBcmIAAAApAUYpUXJxAAAAcjsAAABy+QAAAHL7AAAAcv8AAABycgAAANoGdHlwaW5ncgIAAAByAwAAAHIEAAAAcgUAAAByBgAAAHIHAAAAcggAAABaFXBpcC5fdmVuZG9yLnBhY2thZ2luZ3IJAAAAWhpwaXAuX3ZlbmRvci5wYWNrYWdpbmcudGFnc3IKAAAA2htwaXAuX3ZlbmRvci5wYWNrYWdpbmcudXRpbHNyCwAAAFodcGlwLl92ZW5kb3IucGFja2FnaW5nLnZlcnNpb25yDAAAAHINAAAAcg4BAADaGHBpcC5faW50ZXJuYWwuZXhjZXB0aW9uc3IOAAAAcg8AAAByEAAAAHIRAAAA2h1waXAuX2ludGVybmFsLmluZGV4LmNvbGxlY3RvcnISAAAAchMAAADaHnBpcC5faW50ZXJuYWwubW9kZWxzLmNhbmRpZGF0ZXIUAAAA2iNwaXAuX2ludGVybmFsLm1vZGVscy5mb3JtYXRfY29udHJvbHIVAAAA2hlwaXAuX2ludGVybmFsLm1vZGVscy5saW5rchYAAADaIXBpcC5faW50ZXJuYWwubW9kZWxzLnNlYXJjaF9zY29wZXIXAAAA2iRwaXAuX2ludGVybmFsLm1vZGVscy5zZWxlY3Rpb25fcHJlZnNyGAAAANoicGlwLl9pbnRlcm5hbC5tb2RlbHMudGFyZ2V0X3B5dGhvbnIZAAAA2hpwaXAuX2ludGVybmFsLm1vZGVscy53aGVlbHIaAAAAWhFwaXAuX2ludGVybmFsLnJlcXIbAAAAWhhwaXAuX2ludGVybmFsLnV0aWxzLl9sb2dyHAAAANodcGlwLl9pbnRlcm5hbC51dGlscy5maWxldHlwZXNyHQAAANoacGlwLl9pbnRlcm5hbC51dGlscy5oYXNoZXNyHgAAANobcGlwLl9pbnRlcm5hbC51dGlscy5sb2dnaW5nch8AAADaGHBpcC5faW50ZXJuYWwudXRpbHMubWlzY3IgAAAA2h1waXAuX2ludGVybmFsLnV0aWxzLnBhY2thZ2luZ3IhAAAA2h1waXAuX2ludGVybmFsLnV0aWxzLnVucGFja2luZ3IiAAAA2gdfX2FsbF9fcjgAAAByLQAAAHK8AAAAcjEAAADaCEJ1aWxkVGFncskAAABydAAAAHI2AAAA2gRFbnVtcjcAAAByRAAAAHKHAAAAcogAAAByIwAAAHKWAAAAciQAAAByHAEAAHJiAAAAciUAAAByJQAAAHIlAAAAcjUAAADaCDxtb2R1bGU+AQAAAHNyAAAABAUIAQgBCAEIAQgBJAIMAQwBDAEMAQwCGAYQAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAggDCAIYARgGAP0CAQIBDAECAQL8DC8SCg5/ABIGAQIBAgEG/AxKDhMOKA5/AE0OfwB/AH8ADhIa