Mw0NCgxae2P4jQAA4wAAAAAAAAAAAAAAAAcAAABAAAAAc1wCAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQDbAVtBloGbQdaB20IWghtCVoJbQpaCm0LWgttDFoMAQBkAWQEbA1tDloOAQBkAWQFbA9tEFoQAQBkAWQGbBFtEloSAQBkAWQHbBNtFFoUAQBkAWQIbBNtFVoWAQBkAWQJbBdtGFoYbRlaGW0aWhptG1obAQBkAWQKbBxtHVodbR5aHgEAZAFkC2wfbSBaIAEAZAFkDGwhbSJaIgEAZAFkDWwjbSRaJAEAZAFkDmwlbSZaJgEAZAFkD2wnbShaKAEAZAFkEGwpbSpaKgEAZAFkEWwrbSxaLAEAZAFkEmwtbS5aLgEAZAFkE2wvbTBaMAEAZAFkFGwxbTJaMgEAZAFkFWwzbTRaNAEAZAFkFmw1bTZaNgEAZAFkF2w3bThaOAEAZAFkGGw5bTpaOgEAZAFkGWw7bTxaPAEAZAFkGmw9bT5aPgEAZBtkHGQdZwNaP2UwZUCDAVpBZQxlC2YAGQBlC2VCZUNmAhkAZgIZAFpEZQtlQmVCZUJlFGUJZUIZAGVEZgYZAFpFZDJlJGULZUJlQmVCZgMZAGVGZUZkH5wEZCBkIYQFWkdHAGQiZCOEAGQjgwJaSGUIZSAZAGU0ZUNlCGUgGQBkJJwEZCVkJoQEWklHAGQnZCiEAGQogwJaSkcAZClkHIQAZByDAlpLRwBkKmQrhABkK4MCWkxHAGQsZB2EAGQdgwJaTWVDZUNlQmQtnANkLmQvhARaTmVDZUNlCWVDGQBkLZwDZDBkMYQEWk9kAlMAKTN6IVJvdXRpbmVzIHJlbGF0ZWQgdG8gUHlQSSwgaW5kZXhlc+kAAAAATikH2glGcm96ZW5TZXTaCEl0ZXJhYmxl2gRMaXN02ghPcHRpb25hbNoDU2V02gVUdXBsZdoFVW5pb24pAdoKc3BlY2lmaWVycykB2gNUYWcpAdoRY2Fub25pY2FsaXplX25hbWUpAdoMX0Jhc2VWZXJzaW9uKQHaBXBhcnNlKQTaG0Jlc3RWZXJzaW9uQWxyZWFkeUluc3RhbGxlZNoURGlzdHJpYnV0aW9uTm90Rm91bmTaFEludmFsaWRXaGVlbEZpbGVuYW1l2hBVbnN1cHBvcnRlZFdoZWVsKQLaDUxpbmtDb2xsZWN0b3LaC3BhcnNlX2xpbmtzKQHaFUluc3RhbGxhdGlvbkNhbmRpZGF0ZSkB2g1Gb3JtYXRDb250cm9sKQHaBExpbmspAdoLU2VhcmNoU2NvcGUpAdoUU2VsZWN0aW9uUHJlZmVyZW5jZXMpAdoMVGFyZ2V0UHl0aG9uKQHaBVdoZWVsKQHaEkluc3RhbGxSZXF1aXJlbWVudCkB2glnZXRMb2dnZXIpAdoPV0hFRUxfRVhURU5TSU9OKQHaBkhhc2hlcykB2gppbmRlbnRfbG9nKQHaDGJ1aWxkX25ldGxvYykB2hVjaGVja19yZXF1aXJlc19weXRob24pAdoUU1VQUE9SVEVEX0VYVEVOU0lPTlMpAdoLdXJsX3RvX3BhdGhyFQAAANoTQmVzdENhbmRpZGF0ZVJlc3VsdNoNUGFja2FnZUZpbmRlckYpBNoEbGlua9oMdmVyc2lvbl9pbmZv2hZpZ25vcmVfcmVxdWlyZXNfcHl0aG9u2gZyZXR1cm5jAwAAAAAAAAAFAAAADQAAAEMAAABzfgAAAHkSdAB8AGoBfAFkAY0CfQNXAG4mBAB0AmoDawpyOAEAAQABAHQEagVkAnwAagF8AIMDAQBZAG5CWAB8A3N6ZANqBnQHdAh8AYMCgwF9BHwCc2h0BGoJZAR8BHwAagF8AIMEAQBkBVMAdARqBWQGfAR8AGoBfACDBAEAZAdTACkIYWEBAAAKICAgIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBQeXRob24gdmVyc2lvbiBpcyBjb21wYXRpYmxlIHdpdGggYSBsaW5rJ3MKICAgICJSZXF1aXJlcy1QeXRob24iIHZhbHVlLgoKICAgIDpwYXJhbSB2ZXJzaW9uX2luZm86IEEgMy10dXBsZSBvZiBpbnRzIHJlcHJlc2VudGluZyB0aGUgUHl0aG9uCiAgICAgICAgbWFqb3ItbWlub3ItbWljcm8gdmVyc2lvbiB0byBjaGVjay4KICAgIDpwYXJhbSBpZ25vcmVfcmVxdWlyZXNfcHl0aG9uOiBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgIlJlcXVpcmVzLVB5dGhvbiIKICAgICAgICB2YWx1ZSBpZiB0aGUgZ2l2ZW4gUHl0aG9uIHZlcnNpb24gaXNuJ3QgY29tcGF0aWJsZS4KICAgICkBcicAAAB6Mklnbm9yaW5nIGludmFsaWQgUmVxdWlyZXMtUHl0aG9uICglcikgZm9yIGxpbms6ICVz2gEuejRMaW5rIHJlcXVpcmVzIGEgZGlmZmVyZW50IFB5dGhvbiAoJXMgbm90IGluOiAlcik6ICVzRnpCSWdub3JpbmcgZmFpbGVkIFJlcXVpcmVzLVB5dGhvbiBjaGVjayAoJXMgbm90IGluOiAlcikgZm9yIGxpbms6ICVzVCkKciEAAADaD3JlcXVpcmVzX3B5dGhvbnIJAAAA2hBJbnZhbGlkU3BlY2lmaWVy2gZsb2dnZXLaBWRlYnVn2gRqb2lu2gNtYXDaA3N0ctoHdmVyYm9zZSkFciYAAAByJwAAAHIoAAAAWg1pc19jb21wYXRpYmxl2gd2ZXJzaW9uqQByNAAAAPpBL3RtcC9waXAtYnVpbGQtMWZpY29qNHMvcGlwL3BpcC9faW50ZXJuYWwvaW5kZXgvcGFja2FnZV9maW5kZXIucHnaG19jaGVja19saW5rX3JlcXVpcmVzX3B5dGhvbjMAAABzMAAAAAAOAgECAQQBDAIQAQQBAgEEAQwDBAEQAQQBBAECAQIBBAEGAgQCBAECAQIBBAEGA3I2AAAAYwAAAAAAAAAAAAAAAAkAAABAAAAAc1oAAABlAFoBZABaAmQBWgNlBGoFZAKDAVoGZAplB2UHZQhlBxkAZQllCmULZQoZAGQDZAScB2QFZAaEBVoMZQ1lDmUKZQtlBxkAZgIZAGQHnAJkCGQJhARaD2QDUwApC9oNTGlua0V2YWx1YXRvcnpECiAgICBSZXNwb25zaWJsZSBmb3IgZXZhbHVhdGluZyBsaW5rcyBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuCiAgICB6FC1weShbMTIzXVwuP1swLTldPykkTikH2gxwcm9qZWN0X25hbWXaDmNhbm9uaWNhbF9uYW1l2gdmb3JtYXRz2g10YXJnZXRfcHl0aG9u2gxhbGxvd195YW5rZWRyKAAAAHIpAAAAYwcAAAAAAAAABwAAAAIAAABDAAAAczQAAAB8BmQBawhyDGQCfQZ8BXwAXwB8AnwAXwF8BnwAXwJ8A3wAXwN8BHwAXwR8AXwAXwVkAVMAKQNh1QMAAAogICAgICAgIDpwYXJhbSBwcm9qZWN0X25hbWU6IFRoZSB1c2VyIHN1cHBsaWVkIHBhY2thZ2UgbmFtZS4KICAgICAgICA6cGFyYW0gY2Fub25pY2FsX25hbWU6IFRoZSBjYW5vbmljYWwgcGFja2FnZSBuYW1lLgogICAgICAgIDpwYXJhbSBmb3JtYXRzOiBUaGUgZm9ybWF0cyBhbGxvd2VkIGZvciB0aGlzIHBhY2thZ2UuIFNob3VsZCBiZSBhIHNldAogICAgICAgICAgICB3aXRoICdiaW5hcnknIG9yICdzb3VyY2UnIG9yIGJvdGggaW4gaXQuCiAgICAgICAgOnBhcmFtIHRhcmdldF9weXRob246IFRoZSB0YXJnZXQgUHl0aG9uIGludGVycHJldGVyIHRvIHVzZSB3aGVuCiAgICAgICAgICAgIGV2YWx1YXRpbmcgbGluayBjb21wYXRpYmlsaXR5LiBUaGlzIGlzIHVzZWQsIGZvciBleGFtcGxlLCB0bwogICAgICAgICAgICBjaGVjayB3aGVlbCBjb21wYXRpYmlsaXR5LCBhcyB3ZWxsIGFzIHdoZW4gY2hlY2tpbmcgdGhlIFB5dGhvbgogICAgICAgICAgICB2ZXJzaW9uLCBlLmcuIHRoZSBQeXRob24gdmVyc2lvbiBlbWJlZGRlZCBpbiBhIGxpbmsgZmlsZW5hbWUKICAgICAgICAgICAgKG9yIGVnZyBmcmFnbWVudCkgYW5kIGFnYWluc3QgYW4gSFRNTCBsaW5rJ3Mgb3B0aW9uYWwgUEVQIDUwMwogICAgICAgICAgICAiZGF0YS1yZXF1aXJlcy1weXRob24iIGF0dHJpYnV0ZS4KICAgICAgICA6cGFyYW0gYWxsb3dfeWFua2VkOiBXaGV0aGVyIGZpbGVzIG1hcmtlZCBhcyB5YW5rZWQgKGluIHRoZSBzZW5zZQogICAgICAgICAgICBvZiBQRVAgNTkyKSBhcmUgcGVybWl0dGVkIHRvIGJlIGNhbmRpZGF0ZXMgZm9yIGluc3RhbGwuCiAgICAgICAgOnBhcmFtIGlnbm9yZV9yZXF1aXJlc19weXRob246IFdoZXRoZXIgdG8gaWdub3JlIGluY29tcGF0aWJsZQogICAgICAgICAgICBQRVAgNTAzICJkYXRhLXJlcXVpcmVzLXB5dGhvbiIgdmFsdWVzIGluIEhUTUwgbGlua3MuIERlZmF1bHRzCiAgICAgICAgICAgIHRvIEZhbHNlLgogICAgICAgIE5GKQbaDV9hbGxvd195YW5rZWTaD19jYW5vbmljYWxfbmFtZdoXX2lnbm9yZV9yZXF1aXJlc19weXRob27aCF9mb3JtYXRz2g5fdGFyZ2V0X3B5dGhvbnI4AAAAKQfaBHNlbGZyOAAAAHI5AAAAcjoAAAByOwAAAHI8AAAAcigAAAByNAAAAHI0AAAAcjUAAADaCF9faW5pdF9fbgAAAHMQAAAAABoIAQQCBgEGAQYBBgEGAnoWTGlua0V2YWx1YXRvci5fX2luaXRfXykCciYAAAByKQAAAGMCAAAAAAAAAAwAAAANAAAAQwAAAHP+AQAAZAF9AnwBagByKnwAagEMAHIqfAFqAnAaZAJ9A2QDZAR8A5sAnQJmAlMAfAFqA3JAfAFqA30EfAFqBH0FkABu9nwBagWDAFwCfQR9BXwFc1RkGFMAfAV0BmsHcmpkA2QGfAWbAJ0CZgJTAGQHfABqB2sHcpB8BXQIawJykGQIagl8AGoKgwF9A2QDfANmAlMAZAl8AWoLawZypnwFZAprAnKmZBlTAHwFdAhrApABcjZ5DnQMfAFqDYMBfQZXAG4UBAB0DmsKctIBAAEAAQBkGlMAWAB0D3wGahCDAXwAahFrA5AAcvpkDWoJfABqCoMBfQNkA3wDZgJTAHwAahJqE4MAfQd8BmoUfAeDAZABczB8BmoVgwB9CGQOaglkD2oWfAiDAYMBfQNkA3wDZgJTAHwGahd9AmQQfABqB2sHkAFyYHwFdAhrA5ABcmBkEXwAagqbAJ0CfQNkA3wDZgJTAHwCkAFzcnQYfAR8AGoRgwJ9AnwCkAFzjGQSfABqCpsAnQJ9A2QDfANmAlMAfABqGWoafAKDAX0JfAmQAXLKfAJkAXwJahuDAIUCGQB9AnwJahxkE4MBfQp8CnwAahJqHWsDkAFyymQbUwB0HnwBfABqEmoffABqIGQVjQN9C3wLkAFz6GQcUwB0IWoiZBZ8AXwCgwMBAGQXfAJmAlMAKR1hRwEAAAogICAgICAgIERldGVybWluZSB3aGV0aGVyIGEgbGluayBpcyBhIGNhbmRpZGF0ZSBmb3IgaW5zdGFsbGF0aW9uLgoKICAgICAgICA6cmV0dXJuOiBBIHR1cGxlIChpc19jYW5kaWRhdGUsIHJlc3VsdCksIHdoZXJlIGByZXN1bHRgIGlzICgxKSBhCiAgICAgICAgICAgIHZlcnNpb24gc3RyaW5nIGlmIGBpc19jYW5kaWRhdGVgIGlzIFRydWUsIGFuZCAoMikgaWYKICAgICAgICAgICAgYGlzX2NhbmRpZGF0ZWAgaXMgRmFsc2UsIGFuIG9wdGlvbmFsIHN0cmluZyB0byBsb2cgdGhlIHJlYXNvbgogICAgICAgICAgICB0aGUgbGluayBmYWlscyB0byBxdWFsaWZ5LgogICAgICAgIE56DDxub25lIGdpdmVuPkZ6E3lhbmtlZCBmb3IgcmVhc29uOiD6Cm5vdCBhIGZpbGV6HHVuc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0OiDaBmJpbmFyeXocTm8gYmluYXJpZXMgcGVybWl0dGVkIGZvciB7fdoIbWFjb3N4MTB6BC56aXD6DG1hY29zeDEwIG9uZfoWaW52YWxpZCB3aGVlbCBmaWxlbmFtZXobd3JvbmcgcHJvamVjdCBuYW1lIChub3Qge30pel5ub25lIG9mIHRoZSB3aGVlbCdzIHRhZ3MgKHt9KSBhcmUgY29tcGF0aWJsZSAocnVuIHBpcCBkZWJ1ZyAtLXZlcmJvc2UgdG8gc2hvdyBjb21wYXRpYmxlIHRhZ3MpegIsINoGc291cmNlehlObyBzb3VyY2VzIHBlcm1pdHRlZCBmb3IgehxNaXNzaW5nIHByb2plY3QgdmVyc2lvbiBmb3Ig6QEAAAD6G1B5dGhvbiB2ZXJzaW9uIGlzIGluY29ycmVjdCkCcicAAAByKAAAAHoaRm91bmQgbGluayAlcywgdmVyc2lvbjogJXNUKQJGckQAAAApAkZyRwAAACkCRnJIAAAAKQJGcksAAAApAkZOKSPaCWlzX3lhbmtlZHI9AAAAWg15YW5rZWRfcmVhc29u2gxlZ2dfZnJhZ21lbnTaA2V4dNoIc3BsaXRleHRyIgAAAHJAAAAAch0AAADaBmZvcm1hdHI4AAAA2gRwYXRochoAAADaCGZpbGVuYW1lchAAAAByCwAAANoEbmFtZXI+AAAAckEAAADaCGdldF90YWdz2glzdXBwb3J0ZWRaF2dldF9mb3JtYXR0ZWRfZmlsZV90YWdzci8AAAByMwAAANoeX2V4dHJhY3RfdmVyc2lvbl9mcm9tX2ZyYWdtZW502g5fcHlfdmVyc2lvbl9yZdoGc2VhcmNo2gVzdGFydNoFZ3JvdXDaCnB5X3ZlcnNpb25yNgAAAFoPcHlfdmVyc2lvbl9pbmZvcj8AAAByLQAAAHIuAAAAKQxyQgAAAHImAAAAcjMAAADaBnJlYXNvbtoIZWdnX2luZm9yTgAAANoFd2hlZWzaDnN1cHBvcnRlZF90YWdz2glmaWxlX3RhZ3PaBW1hdGNoclsAAABaD3N1cHBvcnRzX3B5dGhvbnI0AAAAcjQAAAByNQAAANoNZXZhbHVhdGVfbGlua5MAAABzcAAAAAAJBAEOAQoBDgIGAQYBCgIMAQQBBAEIAQ4BEgEMAQgBEgEEAQoBAgEOAQ4BBgESAQwBCAIKAQwDCAIEAgwDCAIGAxYBDAEIAgYBAgECAQgCBgEMAQgCDAEGARABCgEOAQQCAgECAQYBCgIGAwQCDgJ6G0xpbmtFdmFsdWF0b3IuZXZhbHVhdGVfbGluaykBTikQ2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19f2gJyZdoHY29tcGlsZXJXAAAAcjEAAAByAgAAAHIZAAAA2gRib29scgUAAAByQwAAAHIWAAAAcgcAAAByYgAAAHI0AAAAcjQAAAByNAAAAHI1AAAAcjcAAABiAAAAcwoAAAAIBAQCCg0WAQ4dcjcAAAApBNoKY2FuZGlkYXRlc9oGaGFzaGVzcjgAAAByKQAAAGMDAAAAAAAAAAoAAAAIAAAAQwAAAHPiAAAAfAFzHnQAagFkAXQCfACDAXwCgwMBAHQDfACDAVMAZwB9A2cAfQRkAn0FeEZ8AEQAXT59BnwGagR9B3wHagVzQm4ifAdqBnwBZAONAXJYfAVkBDcAfQVuDHwEagd8BoMBAQBxMHwDagd8BoMBAQBxMFcAfAVyfHwDfQhuCHQDfACDAX0IdAJ8CIMBdAJ8AIMBawJymmQFfQluIGQGagh0AnwEgwFkB2oJZAhkCYQAfAREAIMBgwGDAn0JdABqAWQKdAJ8AIMBfAJ8AWoKfAV0AnwDgwF8BRgAfAmDBwEAfAhTACkLYcYCAAAKICAgIEZpbHRlciBvdXQgY2FuZGlkYXRlcyB3aG9zZSBoYXNoZXMgYXJlbid0IGFsbG93ZWQsIGFuZCByZXR1cm4gYSBuZXcKICAgIGxpc3Qgb2YgY2FuZGlkYXRlcy4KCiAgICBJZiBhdCBsZWFzdCBvbmUgY2FuZGlkYXRlIGhhcyBhbiBhbGxvd2VkIGhhc2gsIHRoZW4gYWxsIGNhbmRpZGF0ZXMgd2l0aAogICAgZWl0aGVyIGFuIGFsbG93ZWQgaGFzaCBvciBubyBoYXNoIHNwZWNpZmllZCBhcmUgcmV0dXJuZWQuICBPdGhlcndpc2UsCiAgICB0aGUgZ2l2ZW4gY2FuZGlkYXRlcyBhcmUgcmV0dXJuZWQuCgogICAgSW5jbHVkaW5nIHRoZSBjYW5kaWRhdGVzIHdpdGggbm8gaGFzaCBzcGVjaWZpZWQgd2hlbiB0aGVyZSBpcyBhIG1hdGNoCiAgICBhbGxvd3MgYSB3YXJuaW5nIHRvIGJlIGxvZ2dlZCBpZiB0aGVyZSBpcyBhIG1vcmUgcHJlZmVycmVkIGNhbmRpZGF0ZQogICAgd2l0aCBubyBoYXNoIHNwZWNpZmllZC4gIFJldHVybmluZyBhbGwgY2FuZGlkYXRlcyBpbiB0aGUgY2FzZSBvZiBubwogICAgbWF0Y2hlcyBsZXRzIHBpcCByZXBvcnQgdGhlIGhhc2ggb2YgdGhlIGNhbmRpZGF0ZSB0aGF0IHdvdWxkIG90aGVyd2lzZQogICAgaGF2ZSBiZWVuIGluc3RhbGxlZCAoZS5nLiBwZXJtaXR0aW5nIHRoZSB1c2VyIHRvIG1vcmUgZWFzaWx5IHVwZGF0ZQogICAgdGhlaXIgcmVxdWlyZW1lbnRzIGZpbGUgd2l0aCB0aGUgZGVzaXJlZCBoYXNoKS4KICAgIHpKR2l2ZW4gbm8gaGFzaGVzIHRvIGNoZWNrICVzIGxpbmtzIGZvciBwcm9qZWN0ICVyOiBkaXNjYXJkaW5nIG5vIGNhbmRpZGF0ZXNyAQAAACkBcmsAAABySgAAAHoYZGlzY2FyZGluZyBubyBjYW5kaWRhdGVzeh9kaXNjYXJkaW5nIHt9IG5vbi1tYXRjaGVzOgogIHt9egMKICBjAQAAAAAAAAACAAAAAwAAAHMAAABzGAAAAHwAXRB9AXQAfAFqAYMBVgABAHECZABTACkBTikCcjEA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AHQJZAJqCnwHagWDAYMBggFZAG4CWAB8AGoLcnBkA30FfAdqDGQEawlyrHQNag5kBXwHagyDAn0JfAlqD4MAfQp0EHwKZAEZAIMBfApkAxkAZgJ9BG4GfAMLAH0IdBB8BmoRfABqEoMBgwF9C2QGdBB8BmoTgwEUAH0MfAt8DHwFfAFqFHwIfARmBlMAKQdhKQUAAAogICAgICAgIEZ1bmN0aW9uIHRvIHBhc3MgYXMgdGhlIGBrZXlgIGFyZ3VtZW50IHRvIGEgY2FsbCB0byBzb3J0ZWQoKSB0byBzb3J0CiAgICAgICAgSW5zdGFsbGF0aW9uQ2FuZGlkYXRlcyBieSBwcmVmZXJlbmNlLgoKICAgICAgICBSZXR1cm5zIGEgdHVwbGUgc3VjaCB0aGF0IHR1cGxlcyBzb3J0aW5nIGFzIGdyZWF0ZXIgdXNpbmcgUHl0aG9uJ3MKICAgICAgICBkZWZhdWx0IGNvbXBhcmlzb24gb3BlcmF0b3IgYXJlIG1vcmUgcHJlZmVycmVkLgoKICAgICAgICBUaGUgcHJlZmVyZW5jZSBpcyBhcyBmb2xsb3dzOgoKICAgICAgICBGaXJzdCBhbmQgZm9yZW1vc3QsIGNhbmRpZGF0ZXMgd2l0aCBhbGxvd2VkIChtYXRjaGluZykgaGFzaGVzIGFyZQogICAgICAgIGFsd2F5cyBwcmVmZXJyZWQgb3ZlciBjYW5kaWRhdGVzIHdpdGhvdXQgbWF0Y2hpbmcgaGFzaGVzLiBUaGlzIGlzCiAgICAgICAgYmVjYXVzZSBlLmcuIGlmIHRoZSBvbmx5IGNhbmRpZGF0ZSB3aXRoIGFuIGFsbG93ZWQgaGFzaCBpcyB5YW5rZWQsCiAgICAgICAgd2Ugc3RpbGwgd2FudCB0byB1c2UgdGhhdCBjYW5kaWRhdGUuCgogICAgICAgIFNlY29uZCwgZXhjZXB0aW5nIGhhc2ggY29uc2lkZXJhdGlvbnMsIGNhbmRpZGF0ZXMgdGhhdCBoYXZlIGJlZW4KICAgICAgICB5YW5rZWQgKGluIHRoZSBzZW5zZSBvZiBQRVAgNTkyKSBhcmUgYWx3YXlzIGxlc3MgcHJlZmVycmVkIHRoYW4KICAgICAgICBjYW5kaWRhdGVzIHRoYXQgaGF2ZW4ndCBiZWVuIHlhbmtlZC4gVGhlbjoKCiAgICAgICAgSWYgbm90IGZpbmRpbmcgd2hlZWxzLCB0aGV5IGFyZSBzb3J0ZWQgYnkgdmVyc2lvbiBvbmx5LgogICAgICAgIElmIGZpbmRpbmcgd2hlZWxzLCB0aGVuIHRoZSBzb3J0IG9yZGVyIGlzIGJ5IHZlcnNpb24sIHRoZW46CiAgICAgICAgICAxLiBleGlzdGluZyBpbnN0YWxscwogICAgICAgICAgMi4gd2hlZWxzIG9yZGVyZWQgdmlhIFdoZWVsLnN1cHBvcnRfaW5kZXhfbWluKHNlbGYuX3N1cHBvcnRlZF90YWdzKQogICAgICAgICAgMy4gc291cmNlIGFyY2hpdmVzCiAgICAgICAgSWYgcHJlZmVyX2JpbmFyeSB3YXMgc2V0LCB0aGVuIGFsbCB3aGVlbHMgYXJlIHNvcnRlZCBhYm92ZSBzb3VyY2VzLgoKICAgICAgICBOb3RlOiBpdCB3YXMgY29uc2lkZXJlZCB0byBlbWJlZCB0aGlzIGxvZ2ljIGludG8gdGhlIExpbmsKICAgICAgICAgICAgICBjb21wYXJpc29uIG9wZXJhdG9ycywgYnV0IHRoZW4gZGlmZmVyZW50IHNkaXN0IGxpbmtzCiAgICAgICAgICAgICAgd2l0aCB0aGUgc2FtZSB2ZXJzaW9uLCB3b3VsZCBoYXZlIHRvIGJlIGNvbnNpZGVyZWQgZXF1YWwKICAgICAgICByAQAAAHpCe30gaXMgbm90IGEgc3VwcG9ydGVkIHdoZWVsIGZvciB0aGlzIHBsYXRmb3JtLiBJdCBjYW4ndCBiZSBzb3J0ZWQuckoAAABOegteKFxkKykoLiopJOn/////KRVyjgAAAHJvAAAAciYAAADaCGlzX3doZWVschoAAAByUgAAAFoXZmluZF9tb3N0X3ByZWZlcnJlZF90YWdykAAAANoKVmFsdWVFcnJvcnIRAAAAclAAAAByiwAAANoJYnVpbGRfdGFncmcAAAByYQAAANoGZ3JvdXBz2gNpbnRycQAAAHKKAAAAckwAAAByMwAAACkNckIAAABybQAAANoKdmFsaWRfdGFnc9oLc3VwcG9ydF9udW1ynwAAAFoRYmluYXJ5X3ByZWZlcmVuY2VyJgAAAHJeAAAA2gNwcmlyYQAAAFoQYnVp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bWF0X2NvbnRyb2xyFQAAAFoZcGlwLl9pbnRlcm5hbC5tb2RlbHMubGlua3IWAAAAWiFwaXAuX2ludGVybmFsLm1vZGVscy5zZWFyY2hfc2NvcGVyFwAAAFokcGlwLl9pbnRlcm5hbC5tb2RlbHMuc2VsZWN0aW9uX3ByZWZzchgAAABaInBpcC5faW50ZXJuYWwubW9kZWxzLnRhcmdldF9weXRob25yGQAAAFoacGlwLl9pbnRlcm5hbC5tb2RlbHMud2hlZWxyGgAAAFoRcGlwLl9pbnRlcm5hbC5yZXFyGwAAAFoYcGlwLl9pbnRlcm5hbC51dGlscy5fbG9nchwAAABaHXBpcC5faW50ZXJuYWwudXRpbHMuZmlsZXR5cGVzch0AAABaGnBpcC5faW50ZXJuYWwudXRpbHMuaGFzaGVzch4AAABaG3BpcC5faW50ZXJuYWwudXRpbHMubG9nZ2luZ3IfAAAAWhhwaXAuX2ludGVybmFsLnV0aWxzLm1pc2NyIAAAAFodcGlwLl9pbnRlcm5hbC51dGlscy5wYWNrYWdpbmdyIQAAAFodcGlwLl9pbnRlcm5hbC51dGlscy51bnBhY2tpbmdyIgAAAFoYcGlwLl9pbnRlcm5hbC51dGlscy51cmxzciMAAADaB19fYWxsX19yYwAAAHItAAAAcqEAAAByMQAAAFoIQnVpbGRUYWdyqgAAAHJpAAAAcjYAAAByNwAAAHJ0AAAAcnUAAAByJAAAAHKBAAAAciUAAABy6wAAAHJWAAAAcjQAAAByNAAAAHI0AAAAcjUAAADaCDxtb2R1bGU+AQAAAHNiAAAABAUIAQgBCAEIASQCDAEMAQwBDAEMAhgGEAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAgoDCAIYARgGEgEOKw5/AAsGAQIBAgESRg4TDigOfwBNDn8AfwB+Eho=