YQ0NCgAAAABGGnxjF8sAAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABzLAIAAGQAZAFsAFoAZABkAmwBbQJaAgEAZABkAWwDWgNkAGQBbARaBGQAZAFsBVoFZABkAWwGWgZkAGQBbAdaB3oMZABkAWwIWghXAG4aBABlCXliAQABAAEAZABkAWwKWghZAG4CMABkAGQBbAtaC2QDZARsDG0NWg0BAGQDZAVsDm0PWg9tEFoQbRFaEW0SWhJtE1oTbRRaFG0VWhVtFloWbRdaF20YWhltGloabRtaG20cWhxtHVodAQBkA2QGbB5tH1ofbSBaIG0hWiEBAGQDZAdsIm0jWiNtJFokAQBkA2QIbCVtJlombSdaJ20oWihtKVopbSpaKm0rWittLFosbS1aLQEAZANkCWwubS9aL20wWjABAGQDZApsMW0yWjJtM1ozAQBlBKA0ZTWhAVo2ZQegN2QLoQFaOGUHoDdkDGUHajmhAlo6ZQegN2QNoQFaO2QOWjxkLGQPZBCEAVo9RwBkEWQShABkEmUZgwNaPkcAZBNkFIQAZBRlP4MDWkBHAGQVZBaEAGQWZUCDA1pBRwBkF2QYhABkGGVAgwNaQkcAZBlkGoQAZBplP4MDWkNHAGQbZByEAGQcZUCDA1pERwBkHWQehABkHmVAgwNaRUcAZB9kIIQAZCBlQIMDWkZHAGQhZCKEAGQiZUCDA1pHRwBkI2QkhABkJGVAgwNaSGVIZURkJWQmZCeNAmQoZCmNAlpJZUlqSlpKRwBkKmQrhABkK2U/gwNaS2QBUwApLekAAAAATikB2gdCeXRlc0lP6QEAAAApAdoQRGlzdGxpYkV4Y2VwdGlvbikO2gd1cmxqb2lu2gh1cmxwYXJzZdoKdXJsdW5wYXJzZdoMdXJsMnBhdGhuYW1l2gxwYXRobmFtZTJ1cmzaBXF1ZXVl2gVxdW90ZdoIdW5lc2NhcGXaDGJ1aWxkX29wZW5lctoTSFRUUFJlZGlyZWN0SGFuZGxlctoJdGV4dF90eXBl2gdSZXF1ZXN02glIVFRQRXJyb3LaCFVSTEVycm9yKQPaDERpc3RyaWJ1dGlvbtoQRGlzdHJpYnV0aW9uUGF0aNoJbWFrZV9kaXN0KQLaCE1ldGFkYXRh2hRNZXRhZGF0YUludmFsaWRFcnJvcikI2g9jYWNoZWRfcHJvcGVydHnaDGVuc3VyZV9zbGFzaNoOc3BsaXRfZmlsZW5hbWXaEGdldF9wcm9qZWN0X2RhdGHaEXBhcnNlX3JlcXVpcmVtZW502hZwYXJzZV9uYW1lX2FuZF92ZXJzaW9u2gtTZXJ2ZXJQcm94edoObm9ybWFsaXplX25hbWUpAtoKZ2V0X3NjaGVtZdoXVW5zdXBwb3J0ZWRWZXJzaW9uRXJyb3IpAtoFV2hlZWzaDWlzX2NvbXBhdGlibGV6El4oXHcrKT0oW2EtZjAtOV0rKXoaO1xzKmNoYXJzZXRccyo9XHMqKC4qKVxzKiR6HnRleHQvaHRtbHxhcHBsaWNhdGlvbi94KGh0KT9tbHoVaHR0cHM6Ly9weXBpLm9yZy9weXBpYwEAAAAAAAAAAAAAAAIAAAAIAAAAQwAAAHM+AAAAfABkAXUAcgx0AH0AdAF8AGQCZAONAn0BehR8AaACoQBXAHwBZASDAYMAAQBTAHwBZASDAYMAAQAwAGQBUwApBXqVCiAgICBSZXR1cm4gYWxsIGRpc3RyaWJ1dGlvbiBuYW1lcyBrbm93biBieSBhbiBpbmRleC4KICAgIDpwYXJhbSB1cmw6IFRoZSBVUkwgb2YgdGhlIGluZGV4LgogICAgOnJldHVybjogQSBsaXN0IG9mIGFsbCBrbm93biBkaXN0cmlidXRpb24gbmFtZXMuCiAgICBO5wAAAAAAAAhAqQHaB3RpbWVvdXTaBWNsb3NlKQPaDURFRkFVTFRfSU5ERVhyHgAAANoNbGlzdF9wYWNrYWdlcykC2gN1cmzaBmNsaWVudKkAciwAAAD6WS9ob21lL2huaS9Ub3BtZXRhbFNlLURQUy92ZW52L2xpYi9weXRob24zLjkvc2l0ZS1wYWNrYWdlcy9waXAvX3ZlbmRvci9kaXN0bGliL2xvY2F0b3JzLnB52hpnZXRfYWxsX2Rpc3RyaWJ1dGlvbl9uYW1lcykAAABzEAAAAAAGCAEEAQwBAgEIAgr+AgJyLgAAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABzJAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZQQEAFoFBABaBloHZARTACkF2g9SZWRpcmVjdEhhbmRsZXJ6RQogICAgQSBjbGFzcyB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBzb21lIFB5dGhvbiAzLjIueCByZWxlYXNlcy4KICAgIGMGAAAAAAAAAAAAAAAJAAAACAAAAEMAAABzggAAAGQAfQZkAUQAXRh9B3wHfAV2AHIIfAV8BxkAfQYBAHEicQh8BmQAdQByLmQAUwB0AHwGgwF9CHwIagFkAmsCcm50AnwBoAOhAHwGgwJ9BnQEfAVkA4MCcmZ8BaAFfAd8BqECAQBuCHwGfAV8BzwAdAagB3wAfAF8AnwDfAR8BaEGUwApBE4pAtoIbG9jYXRpb27aA3VyadoA2g5yZXBsYWNlX2hlYWRlcikIcgYAAADaBnNjaGVtZXIFAAAA2gxnZXRfZnVsbF91cmzaB2hhc2F0dHJyMwAAANoTQmFzZVJlZGlyZWN0SGFuZGxlctoOaHR0cF9lcnJvcl8zMDIpCdoEc2VsZtoDcmVx2gJmcNoEY29kZdoDbXNn2gdoZWFkZXJz2gZuZXd1cmzaA2tledoIdXJscGFydHNyLAAAAHIsAAAAci0AAAByOAAAAEAAAABzIAAAAAADBAEIAQgBCAEGAQgBBAEIAQoBDgEKAQ4CCAEOAQL/eh5SZWRpcmVjdEhhbmRsZXIuaHR0cF9lcnJvcl8zMDJOKQjaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aB19fZG9jX19yOAAAANoOaHR0cF9lcnJvcl8zMDHaDmh0dHBfZXJyb3JfMzAz2g5odHRwX2Vycm9yXzMwN3IsAAAAciwAAAByLAAAAHItAAAAci8AAAA3AAAAcwYAAAAIAQQICBRyLwAAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABztgAAAGUAWgFkAFoCZAFaA2QCWgRkA1oFZARaBmQFWgdlBGQGFwBaCGQpZAhkCYQBWglkCmQLhABaCmQMZA2EAFoLZA5kD4QAWgxkEGQRhABaDWQSZBOEAFoOZQ9lDWUOgwJaEGQUZBWEAFoRZBZkF4QAWhJkGGQZhABaE2QaZBuEAFoUZBxkHYQAWhVkHmQfhABaFmQgZCGEAFoXZCJkI4QAWhhkJGQlhABaGWQqZCdkKIQBWhpkBVMAKSvaB0xvY2F0b3J6RwogICAgQSBiYXNlIGNsYXNzIGZvciBsb2NhdG9ycyAtIHRoaW5ncyB0aGF0IGxvY2F0ZSBkaXN0cmlidXRpb25zLgogICAgKQZ6By50YXIuZ3p6CC50YXIuYnoyegQudGFyegQuemlwegQudGd6egQudGJ6KQN6BC5lZ2d6BC5leGX6BC53aGwpAXoELnBkZk4pAXJKAAAA2gdkZWZhdWx0YwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMsAAAAaQB8AF8AfAF8AF8BdAJ0A4MAgwF8AF8EZAF8AF8FdAagB6EAfABfCGQBUwApAmFeAQAACiAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZS4KICAgICAgICA6cGFyYW0gc2NoZW1lOiBCZWNhdXNlIGxvY2F0b3JzIGxvb2sgZm9yIG1vc3QgcmVjZW50IHZlcnNpb25zLCB0aGV5CiAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBrbm93IHRoZSB2ZXJzaW9uIHNjaGVtZSB0byB1c2UuIFRoaXMgc3BlY2lmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgUEVQLXJlY29tbWVuZGVkIHNjaGVtZSAtIHVzZSBgYCdsZWdhY3knYGAKICAgICAgICAgICAgICAgICAgICAgICBpZiB5b3UgbmVlZCB0byBzdXBwb3J0IGV4aXN0aW5nIGRpc3RyaWJ1dGlvbnMgb24gUHlQSS4KICAgICAgICBOKQnaBl9jYWNoZXI0AAAAcg0AAAByLwAAANoGb3BlbmVy2gdtYXRjaGVycgoAAADaBVF1ZXVl2gZlcnJvcnMpAnI5AAAAcjQAAAByLAAAAHIsAAAAci0AAADaCF9faW5pdF9fZgAAAHMKAAAAAAgGAQYDDAQGAXoQTG9jYXRvci5fX2luaXRfX2MBAAAAAAAAAAAAAAADAAAACAAAAEMAAABzVAAAAGcAfQF8AGoAoAGhAHNQehp8AGoAoAJkAaEBfQJ8AaADfAKhAQEAVwBuGgQAfABqAGoEeUIBAAEAAQBZAHEEWQBuAjAAfABqAKAFoQABAHEEfAFTACkCejgKICAgICAgICBSZXR1cm4gYW55IGVycm9ycyB3aGljaCBoYXZlIG9jY3VycmVkLgogICAgICAgIEYpBnJQAAAA2gVlbXB0edoDZ2V02gZhcHBlbmTaBUVtcHR52gl0YXNrX2RvbmUpA3I5AAAA2gZyZXN1bHTaAWVyLAAAAHIsAAAAci0AAADaCmdldF9lcnJvcnN5AAAAcxIAAAAABAQBCgECAQwBDgEQAQoBDAF6EkxvY2F0b3IuZ2V0X2Vycm9yc2MBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzDAAAAHwAoAChAAEAZAFTACkCej4KICAgICAgICBDbGVhciBhbnkgZXJyb3JzIHdoaWNoIG1heSBoYXZlIGJlZW4gbG9nZ2VkLgogICAgICAgIE4pAXJZAAAAqQFyOQAAAHIsAAAAciwAAAByLQAAANoMY2xlYXJfZXJyb3JzhwAAAHMCAAAAAAV6FExvY2F0b3IuY2xlYXJfZXJyb3JzYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMOAAAAfABqAKABoQABAGQAUwCpAU4pAnJMAAAA2gVjbGVhcnJaAAAAciwAAAByLAAAAHItAAAA2gtjbGVhcl9jYWNoZY4AAABzAgAAAAABehNMb2NhdG9yLmNsZWFyX2NhY2hlYwEAAAAAAAAAAAAAAAEAAAABAAAAQwAAAHMGAAAAfABqAFMAclwAAACpAdoHX3NjaGVtZXJaAAAAciwAAAByLAAAAHItAAAA2gtfZ2V0X3NjaGVtZZEAAABzAgAAAAABehNMb2NhdG9yLl9nZXRfc2NoZW1lYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMKAAAAfAF8AF8AZABTAHJcAAAAcl8AAAApAnI5AAAA2gV2YWx1ZXIsAAAAciwAAAByLQAAANoLX3NldF9zY2hlbWWUAAAAcwIAAAAAAXoTTG9jYXRvci5fc2V0X3NjaGVtZWMCAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHQAZAGDAYIBZAJTACkDYT0BAAAKICAgICAgICBGb3IgYSBnaXZlbiBwcm9qZWN0LCBnZXQgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXZhaWxhYmxlIHZlcnNpb25zIHRvIERpc3RyaWJ1dGlvbgogICAgICAgIGluc3RhbmNlcy4KCiAgICAgICAgVGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlcy4KCiAgICAgICAgSWYgY2FsbGVkIGZyb20gYSBsb2NhdGUoKSByZXF1ZXN0LCBzZWxmLm1hdGNoZXIgd2lsbCBiZSBzZXQgdG8gYQogICAgICAgIG1hdGNoZXIgZm9yIHRoZSByZXF1aXJlbWVudCB0byBzYXRpc2Z5LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBOb25lLgogICAgICAgIPogUGxlYXNlIGltcGxlbWVudCBpbiB0aGUgc3ViY2xhc3NOqQHaE05vdEltcGxlbWVudGVkRXJyb3IpAnI5AAAA2gRuYW1lciwAAAByLAAAAHItAAAA2gxfZ2V0X3Byb2plY3SZAAAAcwIAAAAACnoUTG9jYXRvci5fZ2V0X3Byb2plY3RjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcwwAAAB0AGQBgwGCAWQCUwApA/pKCiAgICAgICAgUmV0dXJuIGFsbCB0aGUgZGlzdHJpYnV0aW9uIG5hbWVzIGtub3duIHRvIHRoaXMgbG9jYXRvci4KICAgICAgICByZAAAAE5yZQAAAHJaAAAAciwAAAByLAAAAHItAAAA2hZnZXRfZGlzdHJpYnV0aW9uX25hbWVzpQAAAHMCAAAAAAR6HkxvY2F0b3IuZ2V0X2Rpc3RyaWJ1dGlvbl9uYW1lc2MCAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzTAAAAHwAagBkAXUAchZ8AKABfAGhAX0CbjJ8AXwAagB2AHIsfABqAHwBGQB9Am4cfACgAqEAAQB8AKABfAGhAX0CfAJ8AGoAfAE8AHwCUwApAnrWCiAgICAgICAgRm9yIGEgZ2l2ZW4gcHJvamVjdCwgZ2V0IGEgZGljdGlvbmFyeSBtYXBwaW5nIGF2YWlsYWJsZSB2ZXJzaW9ucyB0byBEaXN0cmlidXRpb24KICAgICAgICBpbnN0YW5jZXMuCgogICAgICAgIFRoaXMgY2FsbHMgX2dldF9wcm9qZWN0IHRvIGRvIGFsbCB0aGUgd29yaywgYW5kIGp1c3QgaW1wbGVtZW50cyBhIGNhY2hpbmcgbGF5ZXIgb24gdG9wLgogICAgICAgIE4pA3JMAAAAcmgAAAByWwAAACkDcjkAAAByZwAAAHJXAAAAciwAAAByLAAAAHItAAAA2gtnZXRfcHJvamVjdKsAAABzEAAAAAAHCgEMAQoBDAIIAQoBCgF6E0xvY2F0b3IuZ2V0X3Byb2plY3RjAgAAAAAAAAAAAAAABwAAAAYAAABDAAAAc14AAAB0AHwBgwF9AnQBoAJ8AmoDoQF9A2QBfQR8A6AEZAKhAX0FfAOgBHwAagWhAX0GfAVyQnQGdAd8A4MBfABqCIMCfQR8AmoJZANrAmQEfAJqCnYAfAZ8BXwEfANmBlMAKQV6dQogICAgICAgIEdpdmUgYW4gdXJsIGEgc2NvcmUgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY2hvb3NlIHByZWZlcnJlZCBVUkxzCiAgICAgICAgZm9yIGEgZ2l2ZW4gcHJvamVjdCByZWxlYXNlLgogICAgICAgIFRySgAAANoFaHR0cHN6CHB5cGkub3JnKQtyBgAAANoJcG9zaXhwYXRo2ghiYXNlbmFtZdoEcGF0aNoIZW5kc3dpdGjaF2Rvd25sb2FkYWJsZV9leHRlbnNpb25zciMAAAByIgAAANoKd2hlZWxfdGFnc3I0AAAA2gZuZXRsb2MpB3I5AAAAcioAAADaAXRybgAAANoKY29tcGF0aWJsZdoIaXNfd2hlZWxaD2lzX2Rvd25sb2FkYWJsZXIsAAAAciwAAAByLQAAANoJc2NvcmVfdXJsvAAAAHMUAAAAAAUIAQwBBAEKAQwBBAEQARABCP96EUxvY2F0b3Iuc2NvcmVfdXJsYwMAAAAAAAAAAAAAAAYAAAAFAAAAQwAAAHNSAAAAfAJ9A3wBck58AKAAfAGhAX0EfACgAHwCoQF9BXwEfAVrBHIofAF9A3wDfAJrA3JAdAGgAmQBfAF8AqEDAQBuDnQBoAJkAnwBfAKhAwEAfANTACkDYXsBAAAKICAgICAgICBDaG9vc2Ugb25lIG9mIHR3byBVUkxzIHdoZXJlIGJvdGggYXJlIGNhbmRpZGF0ZXMgZm9yIGRpc3RyaWJ1dGlvbgogICAgICAgIGFyY2hpdmVzIGZvciB0aGUgc2FtZSB2ZXJzaW9uIG9mIGEgZGlzdHJpYnV0aW9uIChmb3IgZXhhbXBsZSwKICAgICAgICAudGFyLmd6IHZzLiB6aXApLgoKICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmYXZvdXJzIGh0dHBzOi8vIFVSTHMgb3ZlciBodHRwOi8vLCBhcmNoaXZlcwogICAgICAgIGZyb20gUHlQSSBvdmVyIHRob3NlIGZyb20gb3RoZXIgbG9jYXRpb25zLCB3aGVlbCBjb21wYXRpYmlsaXR5IChpZiBhCiAgICAgICAgd2hlZWwpIGFuZCB0aGVuIHRoZSBhcmNoaXZlIG5hbWUuCiAgICAgICAgehhOb3QgcmVwbGFjaW5nICVyIHdpdGggJXJ6FFJlcGxhY2luZyAlciB3aXRoICVyKQNydwAAANoGbG9nZ2Vy2gVkZWJ1ZykGcjkAAADaBHVybDHaBHVybDJyVwAAANoCczHaAnMyciwAAAByLAAAAHItAAAA2gpwcmVmZXJfdXJsywAAAHMUAAAAAAoEAQQBCgEKAQgBBAEIARACDgF6EkxvY2F0b3IucHJlZmVyX3VybGMDAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzCgAAAHQAfAF8AoMCUwApAXpaCiAgICAgICAgQXR0ZW1wdCB0byBzcGxpdCBhIGZpbGVuYW1lIGluIHByb2plY3QgbmFtZSwgdmVyc2lvbiBhbmQgUHl0aG9uIHZlcnNpb24uCiAgICAgICAgKQFyGgAAACkDcjkAAADaCGZpbGVuYW1l2gxwcm9qZWN0X25hbWVyLAAAAHIsAAAAci0AAAByGgAAAOEAAABzAgAAAAAEehZMb2NhdG9yLnNwbGl0X2ZpbGVuYW1lYwMAAAAAAAAAAAAAABgAAAALAAAAQwAAAHMgAgAAZAFkAoQAfQNkA30EdAB8AYMBXAZ9BX0GfQd9CH0JfQp8CqABoQCgAmQEoQFyPHQDoARkBXwCfAqhAwEAdAWgBnwKoQF9C3wLclh8C6AHoQBcAn0MfQ1uCGQGXAJ9DH0NfAd9DnwHcoB8B2QHGQBkCGsCcoB8B2QDZAeFAhkAfQd8B6AIZAmhAZABckB6fnQJfAeDAX0PdAp8D3wAaguDAnOwdAOgBGQKfAehAgEAblh8AmQDdQByvmQLfRBuDHwDfA9qDHwCgwJ9EHwQkAFyCHwPagx8D2oNfA9qDnQPfAV8BnwOfAh8CWQMZgaDAWQNoBBkDmQPhAB8D2oRRACDAaEBZBCcBX0EVwBuMgQAdBKQAXk8AQB9EQEAehh0A6ATZBF8B6ECAQBXAFkAZAN9EX4RbgpkA30RfhEwADAAbsR8B6AIfABqFKEBkAFzXHQDoARkEnwHoQIBAG6odBWgFnwHoQEEAH0HfRJ8AGoURABdkn0TfAegCHwToQGQAXJwfAdkA3QXfBODAQsAhQIZAH0HfACgGHwHfAKhAn0UfBSQAXOydAOgBGQTfAehAgEAbkh8FFwDfRV9Fn0XfAKQAXLOfAN8AnwVgwKQAXL6fBV8FnwSdA98BXwGfA58CHwJZAxmBoMBZBScBH0EfBeQAXL6fBd8BGQVPAABAJACcQSQAXFwfASQAnIcfAyQAnIcfA18BGQWfAwWADwAfARTACkXYRIBAAAKICAgICAgICBTZWUgaWYgYSBVUkwgaXMgYSBjYW5kaWRhdGUgZm9yIGEgZG93bmxvYWQgVVJMIGZvciBhIHByb2plY3QgKHRoZSBVUkwKICAgICAgICBoYXMgdHlwaWNhbGx5IGJlZW4gc2NyYXBlZCBmcm9tIGFuIEhUTUwgcGFnZSkuCgogICAgICAgIElmIGl0IGlzLCBhIGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgd2l0aCBrZXlzICJuYW1lIiwgInZlcnNpb24iLAogICAgICAgICJmaWxlbmFtZSIgYW5kICJ1cmwiOyBvdGhlcndpc2UsIE5vbmUgaXMgcmV0dXJuZWQuCiAgICAgICAgYwIAAAAAAAAAAAAAAAIAAAADAAAAUwAAAHMQAAAAdAB8AIMBdAB8AYMBawJTAHJcAAAAKQFyHwAAACkCWgVuYW1lMVoFbmFtZTJyLAAAAHIsAAAAci0AAADaDHNhbWVfcHJvamVjdO8AAABzAgAAAAABejpMb2NhdG9yLmNvbnZlcnRfdXJsX3RvX2Rvd25sb2FkX2luZm8uPGxvY2Fscz4uc2FtZV9wcm9qZWN0TnoEZWdnPXogJXM6IHZlcnNpb24gaGludCBpbiBmcmFnbWVudDogJXIpAk5O6f/////6AS9ySgAAAHoYV2hlZWwgbm90IGNvbXBhdGlibGU6ICVzVHIyAAAAegIsIGMBAAAAAAAAAAAAAAACAAAACAAAAFMAAABzIgAAAGcAfABdGn0BZACgAHQBfAFkAWQChQIZAIMBoQGRAnEEUwApA9oBLukCAAAATikC2gRqb2lu2gRsaXN0KQLaAi4w2gF2ciwAAAByLAAAAHItAAAA2go8bGlzdGNvbXA+EQEAAPMAAAAAejhMb2NhdG9yLmNvbnZlcnRfdXJsX3RvX2Rvd25sb2FkX2luZm8uPGxvY2Fscz4uPGxpc3Rjb21wPikFcmcAAADaB3ZlcnNpb25yfwAAAHIqAAAA+g5weXRob24tdmVyc2lvbnoaaW52YWxpZCBwYXRoIGZvciB3aGVlbDogJXN6FE5vdCBkb3dubG9hZGFibGU6ICVzeiBObyBtYXRjaCBmb3IgcHJvamVjdC92ZXJzaW9uOiAlcykEcmcAAAByjAAAAHJ/AAAAcioAAAByjQAAAPoJJXNfZGlnZXN0KRlyBgAAANoFbG93ZXLaCnN0YXJ0c3dpdGhyeAAAAHJ5AAAA2gtIQVNIRVJfSEFTSNoFbWF0Y2jaBmdyb3Vwc3JwAAAAciIAAAByIwAAAHJyAAAAcmcAAAByjAAAAHJ/AAAAcgcAAAByhgAAANoFcHl2ZXLaCUV4Y2VwdGlvbtoHd2FybmluZ3JxAAAAcm0AAABybgAAANoDbGVuchoAAAApGHI5AAAAcioAAABygAAAAHKBAAAAclcAAAByNAAAAHJzAAAAcm8AAADaBnBhcmFtc9oFcXVlcnnaBGZyYWfaAW3aBGFsZ2/aBmRpZ2VzdFoIb3JpZ3BhdGjaBXdoZWVs2gdpbmNsdWRlclgAAAByfwAAANoDZXh0cnQAAAByZwAAAHKMAAAAcpQAAAByLAAAAHIsAAAAci0AAADaHGNvbnZlcnRfdXJsX3RvX2Rvd25sb2FkX2luZm/nAAAAc3YAAAAACAgDBAEUAQ4BBgEE/wQCCgEEAQ4CCAEEARABDAEMAQIBCAEMAQ4CCAEGAgwBBgIEAQQBBAEIAQb/BAIEAQ7/AvoKCRABJAEOAQ4CDgEKAQwBEgEMAQYBDgIKARICAgECAQIBCAEG/wT8BggGAQgBCgEMAQwBeiRMb2NhdG9yLmNvbnZlcnRfdXJsX3RvX2Rvd25sb2FkX2luZm9jAgAAAAAAAAAAAAAABgAAAAQAAABDAAAAc2gAAABkAX0CZAJ8AXYAcjZ8AWQCGQB9A2QDRABdHH0EfAR8A3YAchh8BHwDfAQZAGYCfQIBAHE2cRh8AnNkZANEAF0kfQRkBHwEFgB9BXwFfAF2AHI+fAR8AXwFGQBmAn0CAQBxZHE+fAJTACkFevIKICAgICAgICBHZXQgYSBkaWdlc3QgZnJvbSBhIGRpY3Rpb25hcnkgYnkgbG9va2luZyBhdCBhICJkaWdlc3RzIiBkaWN0aW9uYXJ5CiAgICAgICAgb3Iga2V5cyBvZiB0aGUgZm9ybSAnYWxnb19kaWdlc3QnLgoKICAgICAgICBSZXR1cm5zIGEgMi10dXBsZSAoYWxnbywgZGlnZXN0KSBpZiBmb3VuZCwgZWxzZSBOb25lLiBDdXJyZW50bHkKICAgICAgICBsb29rcyBvbmx5IGZvciBTSEEyNTYsIHRoZW4gTUQ1LgogICAgICAgIE7aB2RpZ2VzdHMpAtoGc2hhMjU22gNtZDVyjgAAAHIsAAAAKQZyOQAAANoEaW5mb3JXAAAAcqIAAABynAAAAHJAAAAAciwAAAByLAAAAHItAAAA2gtfZ2V0X2RpZ2VzdDEBAABzHAAAAAAIBAEIAQgBCAEIAQwBBgEEAQgBCAEIAQwBBgF6E0xvY2F0b3IuX2dldF9kaWdlc3RjAwAAAAAAAAAAAAAACQAAAAUAAABDAAAAc64AAAB8AqAAZAGhAX0DfAKgAGQCoQF9BHwEfAF2AHIsfAF8BBkAfQV8BWoBfQZuFnQCfAN8BHwAagNkA40DfQV8BWoBfQZ8AKAEfAKhAQQAfAVfBX0HfAJkBBkAfQh8B3wBZAUZAHwIPAB8BmoGfAJkBBkAawNynHwAoAd8BmoGfAihAnwGXwZ8AWQGGQCgCHwEdAmDAKECoAp8CKEBAQB8AHwFXwt8BXwBfAQ8AGQHUwApCHrxCiAgICAgICAgVXBkYXRlIGEgcmVzdWx0IGRpY3Rpb25hcnkgKHRoZSBmaW5hbCByZXN1bHQgZnJvbSBfZ2V0X3Byb2plY3QpIHdpdGggYQogICAgICAgIGRpY3Rpb25hcnkgZm9yIGEgc3BlY2lmaWMgdmVyc2lvbiwgd2hpY2ggdHlwaWNhbGx5IGhvbGRzIGluZm9ybWF0aW9uCiAgICAgICAgZ2xlYW5lZCBmcm9tIGEgZmlsZW5hbWUgb3IgVVJMIGZvciBhbiBhcmNoaXZlIGZvciB0aGUgZGlzdHJpYnV0aW9uLgogICAgICAgIHJnAAAAcowAAACpAXI0AAAAcioAAAByogAAANoEdXJsc04pDNoDcG9w2ghtZXRhZGF0YXIVAAAAcjQAAABypgAAAHKdAAAA2gpzb3VyY2VfdXJscn4AAADaCnNldGRlZmF1bHTaA3NldNoDYWRk2gdsb2NhdG9yKQlyOQAAAHJXAAAAcqUAAAByZwAAAHKMAAAA2gRkaXN02gJtZHKdAAAAcioAAAByLAAAAHIsAAAAci0AAADaFF91cGRhdGVfdmVyc2lvbl9kYXRhSAEAAHMeAAAAAAYKAQoBCAEIAQgCEAEGARABCAEMAQ4BEAEYAQYBehxMb2NhdG9yLl91cGRhdGVfdmVyc2lvbl9kYXRhRmMDAAAAAAAAAAAAAAAPAAAACQAAAEMAAABzgAEAAGQBfQN0AHwBgwF9BHwEZAF1AHIgdAFkAnwBFgCDAYIBdAJ8AGoDgwF9BXwFoAR8BGoFoQEEAHwAXwR9BnQGoAdkA3wGdAh8BoMBagmhAwEAfACgCnwEaguhAX0HdAx8B4MBZARrBJABcg5nAH0IfAZqDX0JfAdEAF1YfQp8CmQFdgByhnF4eih8BqAOfAqhAXOUbhh8AnOifAl8CoMBag9zrHwIoBB8CqEBAQBXAHF4BAB0EXnOAQABAAEAdAagEmQGfAZ8CqEDAQBZAHF4MABxeHQMfAiDAWQHawRy7HQTfAh8BWoUZAiNAn0IfAiQAXIOdAagB2QJfAihAgEAfAhkChkAfQt8B3wLGQB9A3wDkAFydnwEahWQAXIkfARqFXwDXxV8B6AWZAtpAKECoBZ8C3QXgwChAnwDXxhpAH0MfAegFmQMaQChAn0NfANqGEQAXRx9DnwOfA12AJABclJ8DXwOGQB8DHwOPACQAXFSfAx8A18ZZAF8AF8EfANTACkNYR8CAAAKICAgICAgICBGaW5kIHRoZSBtb3N0IHJlY2VudCBkaXN0cmlidXRpb24gd2hpY2ggbWF0Y2hlcyB0aGUgZ2l2ZW4KICAgICAgICByZXF1aXJlbWVudC4KCiAgICAgICAgOnBhcmFtIHJlcXVpcmVtZW50OiBBIHJlcXVpcmVtZW50IG9mIHRoZSBmb3JtICdmb28gKDEuMCknIG9yIHBlcmhhcHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gKD49IDEuMCwgPCAyLjAsICE9IDEuMyknCiAgICAgICAgOnBhcmFtIHByZXJlbGVhc2VzOiBJZiBgYFRydWVgYCwgYWxsb3cgcHJlLXJlbGVhc2UgdmVyc2lvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGxvY2F0ZWQuIE90aGVyd2lzZSwgcHJlLXJlbGVhc2UgdmVyc2lvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgcmV0dXJuZWQuCiAgICAgICAgOnJldHVybjogQSA6Y2xhc3M6YERpc3RyaWJ1dGlvbmAgaW5zdGFuY2UsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2gKICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gY291bGQgYmUgbG9jYXRlZC4KICAgICAgICBOehtOb3QgYSB2YWxpZCByZXF1aXJlbWVudDogJXJ6EG1hdGNoZXI6ICVzICglcylyhQAAAKkCcqgAAAByogAAAHoZZXJyb3IgbWF0Y2hpbmcgJXMgd2l0aCAlcnIDAAAAKQFyQAAAAHoPc29ydGVkIGxpc3Q6ICVzcoIAAAByqAAAAHKiAAAAKRpyHAAAAHIEAAAAciAAAAByNAAAAHJOAAAA2gtyZXF1aXJlbWVudHJ4AAAAcnkAAADaBHR5cGVyQgAAAHJrAAAAcmcAAABylwAAAFoNdmVyc2lvbl9jbGFzc3KSAAAA2g1pc19wcmVyZWxlYXNlclQAAABylQAAAHKWAAAA2gZzb3J0ZWRyQAAAANoGZXh0cmFzclMAAAByrQAAANoNZG93bmxvYWRfdXJsc3KiAAAAKQ9yOQAAAHK0AAAA2gtwcmVyZWxlYXNlc3JXAAAA2gFycjQAAAByTgAAANoIdmVyc2lvbnPaBXNsaXN0WgR2Y2xz2gFrcowAAADaAWTaAnNkcioAAAByLAAAAHIsAAAAci0AAADaBmxvY2F0ZV8BAABzUAAAAAANBAEIAQgBDAEKARIBFAEMAQ4CBAEGAQgBCAECAQIBCgECAg4BDgQMAQ4BCAEMAQ4BBgEMAQgBCAEGAQgBCAEYAQQBDAEKAQoBEAEGAQYBeg5Mb2NhdG9yLmxvY2F0ZSkBcksAAAApAUYpG3JCAAAAckMAAAByRAAAAHJFAAAA2hFzb3VyY2VfZXh0ZW5zaW9uc9oRYmluYXJ5X2V4dGVuc2lvbnPaE2V4Y2x1ZGVkX2V4dGVuc2lvbnNycgAAAHJxAAAAclEAAAByWQAAAHJbAAAAcl4AAAByYQAAAHJjAAAA2ghwcm9wZXJ0eXI0AAAAcmgAAAByagAAAHJrAAAAcncAAAByfgAAAHIaAAAAcqEAAABypgAAAHKyAAAAcsEAAAByLAAAAHIsAAAAciwAAAByLQAAAHJJAAAAVgAAAHMuAAAACAEEAwQBBAEEBgQCCAIKEwgOCAcIAwgDCAMKAggMCAYIEQgPCBYIBghKCBcIF3JJAAAAYwAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAHMwAAAAZQBaAWQAWgJkAVoDhwBmAWQCZAOECFoEZARkBYQAWgVkBmQHhABaBocABABaB1MAKQjaDlB5UElSUENMb2NhdG9yepEKICAgIFRoaXMgbG9jYXRvciB1c2VzIFhNTC1SUEMgdG8gbG9jYXRlIGRpc3RyaWJ1dGlvbnMuIEl0IHRoZXJlZm9yZQogICAgY2Fubm90IGJlIHVzZWQgd2l0aCBzaW1wbGUgbWlycm9ycyAodGhhdCBvbmx5IG1pcnJvciBmaWxlIGNvbnRlbnQpLgogICAgYwIAAAAAAAAAAAAAAAMAAAAEAAAACwAAAHMuAAAAdAB0AXwAgwJqAmYAaQB8AqQBjgEBAHwBfABfA3QEfAFkAWQCjQJ8AF8FZANTACkEepcKICAgICAgICBJbml0aWFsaXNlIGFuIGluc3RhbmNlLgoKICAgICAgICA6cGFyYW0gdXJsOiBUaGUgVVJMIHRvIHVzZSBmb3IgWE1MLVJQQy4KICAgICAgICA6cGFyYW0ga3dhcmdzOiBQYXNzZWQgdG8gdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuCiAgICAgICAgciQAAAByJQAAAE4pBtoFc3VwZXJyxgAAAHJRAAAA2ghiYXNlX3VybHIeAAAAcisAAACpA3I5AAAAcioAAADaBmt3YXJnc6kB2glfX2NsYXNzX19yLAAAAHItAAAAclEAAACgAQAAcwYAAAAABxYBBgF6F1B5UElSUENMb2NhdG9yLl9faW5pdF9fYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAHMOAAAAdAB8AGoBoAKhAIMBUwCpAXJpAAAAKQNyrQAAAHIrAAAAcikAAAByWgAAAHIsAAAAciwAAAByLQAAAHJqAAAAqwEAAHMCAAAAAAR6JVB5UElSUENMb2NhdG9yLmdldF9kaXN0cmlidXRpb25fbmFtZXNjAgAAAAAAAAAAAAAADAAAAAYAAABDAAAAcwABAABpAGkAZAGcAn0CfABqAKABfAFkAqECfQN8A0QAXd59BHwAagCgAnwBfAShAn0FfABqAKADfAF8BKECfQZ0BHwAagVkA40BfQd8BmQEGQB8B18GfAZkBRkAfAdfB3wGoAhkBqEBfAdfCXwGoAhkB2cAoQJ8B18KfAagCGQIoQF8B18LdAx8B4MBfQh8BXIcfAVkCRkAfQl8CWQKGQB8B18NfACgDnwJoQF8CF8PfAB8CF8QfAh8AnwEPAB8BUQAXTp9CXwJZAoZAH0KfACgDnwJoQF9C3wCZAsZAKARfAR0EoMAoQKgE3wKoQEBAHwLfAJkDBkAfAo8AHG+cRx8AlMAKQ1OcrMAAABUcqcAAAByZwAAAHKMAAAA2gdsaWNlbnNl2ghrZXl3b3Jkc9oHc3VtbWFyeXIBAAAAcioAAAByqAAAAHKiAAAAKRRyKwAAAFoQcGFja2FnZV9yZWxlYXNlc1oMcmVsZWFzZV91cmxzWgxyZWxlYXNlX2RhdGFyFgAAAHI0AAAAcmcAAAByjAAAAHJTAAAAcs4AAAByzwAAAHLQAAAAchMAAAByqwAAAHKmAAAAcp0AAAByrwAAAHKsAAAAcq0AAAByrgAAACkMcjkAAAByZwAAAHJXAAAAcrwAAAByiQAAAHKoAAAA2gRkYXRhcqoAAABysAAAAHKlAAAAcioAAABynQAAAHIsAAAAciwAAAByLQAAAHJoAAAAsQEAAHMwAAAAAAEKAQ4BCAEOAQ4BDAEKAQoBDAEOAQwBCAEEAQgBCgEMAQYBCAEIAQgBCgEYARABehtQeVBJUlBDTG9jYXRvci5fZ2V0X3Byb2plY3SpCHJCAAAAckMAAAByRAAAAHJFAAAAclEAAAByagAAAHJoAAAA2g1fX2NsYXNzY2VsbF9fciwAAAByLAAAAHLLAAAAci0AAAByxgAAAJsBAABzCAAAAAgBBAQMCwgGcsYAAABjAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAczAAAABlAFoBZABaAmQBWgOHAGYBZAJkA4QIWgRkBGQFhABaBWQGZAeEAFoGhwAEAFoHUwApCNoPUHlQSUpTT05Mb2NhdG9yencKICAgIFRoaXMgbG9jYXRvciB1c2VzIFB5UEkncyBKU09OIGludGVyZmFjZS4gSXQncyB2ZXJ5IGxpbWl0ZWQgaW4gZnVuY3Rpb25hbGl0eQogICAgYW5kIHByb2JhYmx5IG5vdCB3b3J0aCB1c2luZy4KICAgIGMCAAAAAAAAAAAAAAADAAAABAAAAAsAAABzJAAAAHQAdAF8AIMCagJmAGkAfAKkAY4BAQB0A3wBgwF8AF8EZABTAHJcAAAAKQVyxwAAAHLUAAAAclEAAAByGQAAAHLIAAAAcskAAAByywAAAHIsAAAAci0AAAByUQAAANABAABzBAAAAAABFgF6GFB5UElKU09OTG9jYXRvci5fX2luaXRfX2MBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzDAAAAHQAZAGDAYIBZAJTAKkDcmkAAAB6H05vdCBhdmFpbGFibGUgZnJvbSB0aGlzIGxvY2F0b3JOcmUAAAByWgAAAHIsAAAAciwAAAByLQAAAHJqAAAA1AEAAHMCAAAAAAR6JlB5UElKU09OTG9jYXRvci5nZXRfZGlzdHJpYnV0aW9uX25hbWVzYwIAAAAAAAAAAAAAABAAAAAKAAAAQwAAAHMMAgAAaQBpAGQBnAJ9AnQAfABqAWQCdAJ8AYMBFgCDAn0DkAF6pHwAagOgBHwDoQF9BHwEoAWhAKAGoQB9BXQHoAh8BaEBfQZ0CXwAagpkA40BfQd8BmQEGQB9BXwFZAUZAHwHXwt8BWQGGQB8B18MfAWgDWQHoQF8B18OfAWgDWQIZwChAnwHXw98BaANZAmhAXwHXxB0EXwHgwF9CHwAfAhfEnwGZAoZAH0JfAh8AnwHagw8AHwGZAoZAEQAXVR9CnwKZAsZAH0DfAhqE6AUfAOhAQEAfACgFXwKoQF8CGoWfAM8AHwCZAoZAKAXfAdqDHQYgwChAqAUfAOhAQEAfACgFXwKoQF8AmQMGQB8AzwAcbp8BmQNGQCgGaEARABdpFwCfQt9DHwLfAdqDGsCkAFyNJABcRx0CXwAagpkA40BfQ18B2oLfA1fC3wLfA1fDHQRfA2DAX0OfAB8Dl8SfA58AnwLPAB8DEQAXVR9CnwKZAsZAH0DfA5qE6AUfAOhAQEAfACgFXwKoQF8DmoWfAM8AHwCZAoZAKAXfAt0GIMAoQKgFHwDoQEBAHwAoBV8CqEBfAJkDBkAfAM8AJABcWiQAXEcVwBuQgQAdBqQAnkGAQB9DwEAeih8AGoboBx0HXwPgwGhAQEAdB6gH2QOfA+hAgEAVwBZAGQAfQ9+D24KZAB9D34PMAAwAHwCUwApD05yswAAAHoHJXMvanNvbnKnAAAAcqUAAAByZwAAAHKMAAAAcs4AAAByzwAAAHLQAAAAcqgAAAByKgAAAHKiAAAAWghyZWxlYXNlc3oVSlNPTiBmZXRjaCBmYWlsZWQ6ICVzKSByBQAAAHLIAAAAcgsAAAByTQAAANoEb3BlbtoEcmVhZNoGZGVjb2Rl2gRqc29u2gVsb2Fkc3IWAAAAcjQAAAByZwAAAHKMAAAAclMAAAByzgAAAHLPAAAActAAAAByEwAAAHKvAAAAcrkAAAByrgAAAHKmAAAAcqIAAAByrAAAAHKtAAAA2gVpdGVtc3KVAAAAclAAAADaA3B1dHIPAAAAcngAAADaCWV4Y2VwdGlvbikQcjkAAAByZwAAAHJXAAAAcioAAADaBHJlc3By0QAAAHK/AAAAcrEAAABysAAAAHKoAAAAcqUAAAByjAAAANoFaW5mb3NaA29tZNoFb2Rpc3RyWAAAAHIsAAAAciwAAAByLQAAAHJoAAAA2gEAAHNUAAAAAAEKARQBBAEMAQwBCgEMAQgBCgEKAQwBDgEMAQgBBgEIAQoBDAEIAQwBEAEaARQCFAEMAQQBDAEIAQYBCAEGAQgBCAEIAQwBEAEYAR4JEAEQASIBehxQeVBJSlNPTkxvY2F0b3IuX2dldF9wcm9qZWN0ctIAAAByLAAAAHIsAAAAcssAAAByLQAAAHLUAAAAywEAAHMIAAAACAEEBAwECAZy1AAAAGMAAAAAAAAAAAAAAAAAAAAABQAAAEAAAABzYAAAAGUAWgFkAFoCZAFaA2UEoAVkAmUEagZlBGoHQgBlBGoIQgChAloJZQSgBWQDZQRqBmUEagdCAKECWgpkBGQFhABaC2UEoAVkBmUEagahAloMZQ1kB2QIhACDAVoOZAlTACkK2gRQYWdlejQKICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNjcmFwZWQgSFRNTCBwYWdlLgogICAget0KKHJlbFxzKj1ccyooPzoiKD9QPHJlbDE+W14iXSopInwnKD9QPHJlbDI+W14nXSopJ3woP1A8cmVsMz5bXj5ccwpdKikpXHMrKT8KaHJlZlxzKj1ccyooPzoiKD9QPHVybDE+W14iXSopInwnKD9QPHVybDI+W14nXSopJ3woP1A8dXJsMz5bXj5ccwpdKikpCihccytyZWxccyo9XHMqKD86Iig/UDxyZWw0PlteIl0qKSJ8Jyg/UDxyZWw1PlteJ10qKSd8KD9QPHJlbDY+W14+XHMKXSopKSk/CnohPGJhc2VccytocmVmXHMqPVxzKlsnIl0/KFteJyI+XSspYwMAAAAAAAAAAAAAAAQAAAADAAAAQwAAAHM0AAAAfAF8AF8AfAIEAHwAXwF8AF8CfABqA6AEfABqAKEBfQN8A3IwfAOgBWQBoQF8AF8BZAJTACkDemsKICAgICAgICBJbml0aWFsaXNlIGFuIGluc3RhbmNlIHdpdGggdGhlIFVuaWNvZGUgcGFnZSBjb250ZW50cyBhbmQgdGhlIFVSTCB0aGV5CiAgICAgICAgY2FtZSBmcm9tLgogICAgICAgIHIDAAAATikGctEAAAByyAAAAHIqAAAA2gVfYmFzZdoGc2VhcmNo2gVncm91cCkEcjkAAABy0QAAAHIqAAAAcpsAAAByLAAAAHIsAAAAci0AAAByUQAAACACAABzCgAAAAAFBgEMAQ4BBAF6DVBhZ2UuX19pbml0X196G1teYS16MC05JCYrLC86Oz0/QC4jJV9cXHwtXWMBAAAAAAAAAAAAAAAHAAAABQAAAEMAAABzvgAAAGQBZAKEAH0BdACDAH0CfABqAaACfABqA6EBRABdin0DfAOgBGQDoQF9BHwEZAQZAHBYfARkBRkAcFh8BGQGGQBwWHwEZAcZAHBYfARkCBkAcFh8BGQJGQB9BXwEZAoZAHBwfARkCxkAcHB8BGQMGQB9BnQFfABqBnwGgwJ9BnQHfAaDAX0GfABqCKAJZA1kDoQAfAahAn0GfAKgCnwGfAVmAqEBAQBxHHQLfAJkD2QOhABkEGQRjQN9AnwCUwApEnriCiAgICAgICAgUmV0dXJuIHRoZSBVUkxzIG9mIGFsbCB0aGUgbGlua3Mgb24gYSBwYWdlIHRvZ2V0aGVyIHdpdGggaW5mb3JtYXRpb24KICAgICAgICBhYm91dCB0aGVpciAicmVsIiBhdHRyaWJ1dGUsIGZvciBkZXRlcm1pbmluZyB3aGljaCBvbmVzIHRvIHRyZWF0IGFzCiAgICAgICAgZG93bmxvYWRzIGFuZCB3aGljaCBvbmVzIHRvIHF1ZXVlIGZvciBmdXJ0aGVyIHNjcmFwaW5nLgogICAgICAgIGMBAAAAAAAAAAAAAAAHAAAABwAAAFMAAABzLAAAAHQAfACDAVwGfQF9An0DfQR9BX0GdAF8AXwCdAJ8A4MBfAR8BXwGZgaDAVMAKQF6D1RpZHkgdXAgYW4gVVJMLikDcgYAAAByBwAAAHILAAAAKQdyKgAAAHI0AAAAcnMAAABybwAAAHKYAAAAcpkAAABymgAAAHIsAAAAciwAAAByLQAAANoFY2xlYW40AgAAcwgAAAAAAhQBDAEG/3oZUGFnZS5saW5rcy48bG9jYWxzPi5jbGVhbnIyAAAAWgRyZWwxWgRyZWwyWgRyZWwzWgRyZWw0WgRyZWw1WgRyZWw2cnoAAAByewAAAFoEdXJsM2MBAAAAAAAAAAAAAAABAAAABQAAAFMAAABzEgAAAGQBdAB8AKABZAKhAYMBFgBTACkDTnoFJSUlMnhyAQAAACkC2gNvcmRy5AAAACkBcpsAAAByLAAAAHIsAAAAci0AAADaCDxsYW1iZGE+QgIAAHKLAAAAehxQYWdlLmxpbmtzLjxsb2NhbHM+LjxsYW1iZGE+YwEAAAAAAAAAAAAAAAEAAAACAAAAUwAAAHMIAAAAfABkARkAUwApAk5yAQAAAHIsAAAAKQFydAAAAHIsAAAAciwAAAByLQAAAHLnAAAARgIAAHKLAAAAVCkCckAAAADaB3JldmVyc2UpDHKtAAAA2gVfaHJlZtoIZmluZGl0ZXJy0QAAANoJZ3JvdXBkaWN0cgUAAAByyAAAAHIMAAAA2glfY2xlYW5fcmXaA3N1YnKuAAAAcrcAAAApB3I5AAAAcuUAAAByVwAAAHKSAAAAcr8AAADaA3JlbHIqAAAAciwAAAByLAAAAHItAAAA2gVsaW5rcy0CAABzJAAAAAAHCAYGARIBCgEYAQb/AgEG/wIBBv8CAhgBDAEIARIBEAMSAXoKUGFnZS5saW5rc04pD3JCAAAAckMAAAByRAAAAHJFAAAA2gJyZdoHY29tcGlsZdoBSdoBU9oBWHLpAAAAcuIAAAByUQAAAHLsAAAAchgAAABy7wAAAHIsAAAAciwAAAByLAAAAHItAAAAcuEAAAAQAgAAcxIAAAAIAQQIBgQQ/AQFFAIICw4CAgFy4QAAAGMAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABzmAAAAGUAWgFkAFoCZAFaA2UEagVkAmQDhABkBGQDhABkBZwDWgZkHocAZgFkCGQJhAlaB2QKZAuEAFoIZAxkDYQAWglkDmQPhABaCmULoAxkEGULag2hAloOZBFkEoQAWg9kE2QUhABaEGQVZBaEAFoRZBdkGIQAWhJkGWQahABaE2ULoAxkG6EBWhRkHGQdhABaFYcABABaFlMAKR/aFVNpbXBsZVNjcmFwaW5nTG9jYXRvcnrjCiAgICBBIGxvY2F0b3Igd2hpY2ggc2NyYXBlcyBIVE1MIHBhZ2VzIHRvIGxvY2F0ZSBkb3dubG9hZHMgZm9yIGEgZGlzdHJpYnV0aW9uLgogICAgVGhpcyBydW5zIG11bHRpcGxlIHRocmVhZHMgdG8gZG8gdGhlIEkvTzsgcGVyZm9ybWFuY2UgaXMgYXQgbGVhc3QgYXMgZ29vZAogICAgYXMgcGlwJ3MgUGFja2FnZUZpbmRlciwgd2hpY2ggd29ya3MgaW4gYW4gYW5hbG9nb3VzIGZhc2hpb24uCiAgICBjAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcxQAAAB0AGoBdAJ8AIMBZAGNAaADoQBTACkCTikB2gdmaWxlb2JqKQTaBGd6aXDaCEd6aXBGaWxlcgIAAABy1wAAAKkB2gFiciwAAAByLAAAAHItAAAAcucAAABUAgAAcosAAAB6HlNpbXBsZVNjcmFwaW5nTG9jYXRvci48bGFtYmRhPmMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABzBAAAAHwAUwByXAAAAHIsAAAAcvkAAAByLAAAAHIsAAAAci0AAABy5wAAAFUCAAByiwAAACkD2gdkZWZsYXRlcvcAAADaBG5vbmVO6QoAAABjBAAAAAAAAAAAAAAABQAAAAQAAAALAAAAc3AAAAB0AHQBfACDAmoCZgBpAHwEpAGOAQEAdAN8AYMBfABfBHwCfABfBWkAfABfBnQHgwB8AF8IdAmgCqEAfABfC3QHgwB8AF8MZAF8AF8NfAN8AF8OdA+gEKEAfABfEXQPoBChAHwAXxJkAXwAXxNkAlMAKQNhpAEAAAogICAgICAgIEluaXRpYWxpc2UgYW4gaW5zdGFuY2UuCiAgICAgICAgOnBhcmFtIHVybDogVGhlIHJvb3QgVVJMIHRvIHVzZSBmb3Igc2NyYXBpbmcuCiAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IFRoZSB0aW1lb3V0LCBpbiBzZWNvbmRzLCB0byBiZSBhcHBsaWVkIHRvIHJlcXVlc3RzLgogICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHRzIHRvIGBgTm9uZWBgIChubyB0aW1lb3V0IHNwZWNpZmllZCkuCiAgICAgICAgOnBhcmFtIG51bV93b3JrZXJzOiBUaGUgbnVtYmVyIG9mIHdvcmtlciB0aHJlYWRzIHlvdSB3YW50IHRvIGRvIEkvTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVmYXVsdHMgdG8gMTAuCiAgICAgICAgOnBhcmFtIGt3YXJnczogUGFzc2VkIHRvIHRoZSBzdXBlcmNsYXNzLgogICAgICAgIEZOKRRyxwAAAHL1AAAAclEAAAByGQAAAHLIAAAAciYAAADaC19wYWdlX2NhY2hlcq0AAADaBV9zZWVucgoAAAByTwAAANoJX3RvX2ZldGNo2gpfYmFkX2hvc3Rz2g5za2lwX2V4dGVybmFsc9oLbnVtX3dvcmtlcnPaCXRocmVhZGluZ9oFUkxvY2vaBV9sb2Nr2gdfZ3Bsb2Nr2g5wbGF0Zm9ybV9jaGVjaykFcjkAAAByKgAAAHImAAAAcgMBAAByygAAAHLLAAAAciwAAAByLQAAAHJRAAAAWAIAAHMYAAAAAAoWAQoBBgEGAQgBCgEIAQYBBgEKBQoBeh5TaW1wbGVTY3JhcGluZ0xvY2F0b3IuX19pbml0X19jAQAAAAAAAAAAAAAAAwAAAAQAAABDAAAAc0IAAABnAHwAXwB0AXwAagKDAUQAXSx9AXQDagR8AGoFZAGNAX0CZAJ8Al8GfAKgB6EAAQB8AGoAoAh8AqEBAQBxEGQDUwApBHq+CiAgICAgICAgVGhyZWFkcyBhcmUgY3JlYXRlZCBvbmx5IHdoZW4gZ2V0X3Byb2plY3QgaXMgY2FsbGVkLCBhbmQgdGVybWluYXRlCiAgICAgICAgYmVmb3JlIGl0IHJldHVybnMuIFRoZXkgYXJlIHRoZXJlIHByaW1hcmlseSB0byBwYXJhbGxlbGlzZSBJL08gKGkuZS4KICAgICAgICBmZXRjaGluZyB3ZWIgcGFnZXMpLgogICAgICAgICkB2gZ0YXJnZXRUTikJ2ghfdGhyZWFkc9oFcmFuZ2VyAwEAAHIEAQAA2gZUaHJlYWTaBl9mZXRjaNoGZGFlbW9u2gVzdGFydHJUAAAAKQNyOQAAANoBaXJ0AAAAciwAAAByLAAAAHItAAAA2hBfcHJlcGFyZV90aHJlYWRzcwIAAHMMAAAAAAYGAQ4BDgEGAQgBeiZTaW1wbGVTY3JhcGluZ0xvY2F0b3IuX3ByZXBhcmVfdGhyZWFkc2MBAAAAAAAAAAAAAAACAAAABAAAAEMAAABzNgAAAHwAagBEAF0QfQF8AGoBoAJkAaEBAQBxBnwAagBEAF0MfQF8AaADoQABAHEeZwB8AF8AZAFTACkCenUKICAgICAgICBUZWxsIGFsbCB0aGUgdGhyZWFkcyB0byB0ZXJtaW5hdGUgKGJ5IHNlbmRpbmcgYSBzZW50aW5lbCB2YWx1ZSkgYW5kCiAgICAgICAgd2FpdCBmb3IgdGhlbSB0byBkbyBzby4KICAgICAgICBOKQRyCgEAAHIAAQAActwAAAByhgAAACkCcjkAAABydAAAAHIsAAAAciwAAAByLQAAANoNX3dhaXRfdGhyZWFkc4ACAABzCgAAAAAHCgEOAQoBCgF6I1NpbXBsZVNjcmFwaW5nTG9jYXRvci5fd2FpdF90aHJlYWRzYwIAAAAAAAAAAAAAAAQAAAAJAAAAQwAAAHOuAAAAaQBpAGQBnAJ9AnwAagCPigEAfAJ8AF8BfAF8AF8CdAN8AGoEZAJ0BXwBgwEWAIMCfQN8AGoGoAehAAEAfABqCKAHoQABAHwAoAmhAAEAei50CqALZAN8A6ECAQB8AGoMoA18A6EBAQB8AGoMoA6hAAEAVwB8AKAPoQABAG4KfACgD6EAAQAwAHwAYAFXAGQABAAEAIMDAQBuEDEAc6AwAAEAAQABAFkAAQB8AlMAKQROcrMAAAB6AyVzL3oLUXVldWVpbmcgJXMpEHIHAQAAclcAAABygAAAAHIFAAAAcsgAAAByCwAAAHL/AAAAcl0AAABy/gAAAHIRAQAAcngAAAByeQAAAHIAAQAActwAAAByhgAAAHISAQAAKQRyOQAAAHJnAAAAclcAAAByKgAAAHIsAAAAciwAAAByLQAAAHJoAAAAjQIAAHMeAAAAAAEKAQgBBgEGARQBCgEKAQgBAgEMAQwBDAIUASIBeiJTaW1wbGVTY3JhcGluZ0xvY2F0b3IuX2dldF9wcm9qZWN0ejxcYihsaW51eF8oaVxkODZ8eDg2XzY0fGFybVx3Kyl8d2luKDMyfF9hbWQ2NCl8bWFjb3N4Xz9cZCspXGJjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcwwAAAB8AGoAoAF8AaEBUwApAXpECiAgICAgICAgRG9lcyBhbiBVUkwgcmVmZXIgdG8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBkb3dubG9hZD8KICAgICAgICApAtoScGxhdGZvcm1fZGVwZW5kZW50cuMAAAApAnI5AAAAcioAAAByLAAAAHIsAAAAci0AAADaFl9pc19wbGF0Zm9ybV9kZXBlbmRlbnSiAgAAcwIAAAAABHosU2ltcGxlU2NyYXBpbmdMb2NhdG9yLl9pc19wbGF0Zm9ybV9kZXBlbmRlbnRjAgAAAAAAAAAAAAAAAwAAAAgAAABDAAAAc24AAAB8AGoAchZ8AKABfAGhAXIWZAF9Am4OfACgAnwBfABqA6ECfQJ0BKAFZAJ8AXwCoQMBAHwCcmp8AGoGjx4BAHwAoAd8AGoIfAKhAgEAVwBkAQQABACDAwEAbhAxAHNgMAABAAEAAQBZAAEAfAJTACkDYSUBAAAKICAgICAgICBTZWUgaWYgYW4gVVJMIGlzIGEgc3VpdGFibGUgZG93bmxvYWQgZm9yIGEgcHJvamVjdC4KCiAgICAgICAgSWYgaXQgaXMsIHJlZ2lzdGVyIGluZm9ybWF0aW9uIGluIHRoZSByZXN1bHQgZGljdGlvbmFyeSAoZm9yCiAgICAgICAgX2dldF9wcm9qZWN0KSBhYm91dCB0aGUgc3BlY2lmaWMgdmVyc2lvbiBpdCdzIGZvci4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaXNuJ3QgYWN0dWFsbHkgdXNlZCBvdGhlciB0aGFuIGFzIGEgYm9vbGVhbgogICAgICAgIHZhbHVlLgogICAgICAgIE56GnByb2Nlc3NfZG93bmxvYWQ6ICVzIC0+ICVzKQlyCAEAAHIUAQAAcqEAAABygAAAAHJ4AAAAcnkAAAByBgEAAHKyAAAAclcAAAApA3I5AAAAcioAAABypQAAAHIsAAAAciwAAAByLQAAANoRX3Byb2Nlc3NfZG93bmxvYWSoAgAAcxAAAAAAChABBgIOAQ4BBAEIASwBeidTaW1wbGVTY3JhcGluZ0xvY2F0b3IuX3Byb2Nlc3NfZG93bmxvYWRjBAAAAAAAAAAAAAAACgAAAAcAAABDAAAAc8QAAAB0AHwBgwFcBn0EfQV9Bn0HfQd9B3wGoAF8AGoCfABqAxcAfABqBBcAoQFyMmQBfQhufHwAagVySnwBoAZ8AGoHoQFzSmQBfQhuZHwCoAZ8AGoHoQFzXGQBfQhuUnwDZAJ2AXJqZAF9CG5EfARkA3YBcnhkAX0IbjZ8AKAIfAGhAXKIZAF9CG4mfAWgCWQEZAWhAmQGGQB9CXwJoAqhAGQHawJyqmQBfQhuBGQIfQh0C6AMZAl8AXwDfAJ8CKEFAQB8CFMAKQp6kQogICAgICAgIERldGVybWluZSB3aGV0aGVyIGEgbGluayBVUkwgZnJvbSBhIHJlZmVycmluZyBwYWdlIGFuZCB3aXRoIGEKICAgICAgICBwYXJ0aWN1bGFyICJyZWwiIGF0dHJpYnV0ZSBzaG91bGQgYmUgcXVldWVkIGZvciBzY3JhcGluZy4KICAgICAgICBGKQJaCGhvbWVwYWdl2ghkb3dubG9hZCkD2gRodHRwcmwAAADaA2Z0cPoBOnIDAAAAcgEAAADaCWxvY2FsaG9zdFR6I3Nob3VsZF9xdWV1ZTogJXMgKCVzKSBmcm9tICVzIC0+ICVzKQ1yBgAAAHJwAAAAcsIAAABywwAAAHLEAAAAcgIBAABykAAAAHLIAAAAchQBAADaBXNwbGl0co8AAAByeAAAAHJ5AAAAKQpyOQAAANoEbGlua1oIcmVmZXJyZXJy7gAAAHI0AAAAcnMAAABybwAAANoBX3JXAAAA2gRob3N0ciwAAAByLAAAAHItAAAA2g1fc2hvdWxkX3F1ZXVlvAIAAHMuAAAAAAUUAQ4BBP8GAgYBEgEGAQwBBgEIAQYBCAEGAQoBBgIQAQwBBgIEAQoBBP8EAnojU2ltcGxlU2NyYXBpbmdMb2NhdG9yLl9zaG91bGRfcXVldWVjAQAAAAAAAAAAAAAABgAAAAoAAABDAAAAcwIBAAB8AGoAoAGhAH0Bet56mnwBcqR8AKACfAGhAX0CfAJkAXUAcjRXAFcAfABqAKADoQABAHEAfAJqBEQAXWhcAn0DfQR8A3wAagV2AXI6ekJ8AGoFoAZ8A6EBAQB8AKAHfAOhAXOMfACgCHwDfAF8BKEDcox0CaAKZAJ8A3wBoQMBAHwAagCgC3wDoQEBAFcAcToEAHQMeaABAAEAAQBZAHE6MABxOlcAbjQEAHQNedoBAH0FAQB6HHwAag6gC3QPfAWDAaEBAQBXAFkAZAF9BX4FbgpkAX0FfgUwADAAVwB8AGoAoAOhAAEAbgx8AGoAoAOhAAEAMAB8AXMAcf5xAGQBUwApA3rXCiAgICAgICAgR2V0IGEgVVJMIHRvIGZldGNoIGZyb20gdGhlIHdvcmsgcXVldWUsIGdldCB0aGUgSFRNTCBwYWdlLCBleGFtaW5lIGl0cwogICAgICAgIGxpbmtzIGZvciBkb3dubG9hZCBjYW5kaWRhdGVzIGFuZCBjYW5kaWRhdGVzIGZvciBmdXJ0aGVyIHNjcmFwaW5nLgoKICAgICAgICBUaGlzIGlzIGEgaGFuZHkgbWV0aG9kIHRvIHJ1biBpbiBhIHRocmVhZC4KICAgICAgICBOehNRdWV1ZWluZyAlcyBmcm9tICVzKRByAAEAAHJTAAAA2ghnZXRfcGFnZXJWAAAAcu8AAABy/wAAAHKuAAAAchUBAAByHwEAAHJ4AAAAcnkAAABy3AAAAHIXAAAAcpUAAAByUAAAAHIPAAAAKQZyOQAAAHIqAAAA2gRwYWdlchwBAABy7gAAAHJYAAAAciwAAAByLAAAAHItAAAAcg0BAADZAgAAczAAAAAACAoBBAEEAQoBCAEEDwrxAgEOAQoBAgEMAQoBDP8CAg4BEAEMAQwBDgEoAxgBBAJ6HFNpbXBsZVNjcmFwaW5nTG9jYXRvci5fZmV0Y2hjAgAAAAAAAAAAAAAAEgAAAAsAAABDAAAAc3wCAAB0AHwBgwFcBn0CfQN9BH0FfQV9BXwCZAFrAnI6dAFqAqADdAR8BIMBoQFyOnQFdAZ8AYMBZAKDAn0BfAF8AGoHdgByYHwAagd8ARkAfQZ0CKAJZAN8AXwGoQMBAJACbhh8A6AKZARkBaECZAYZAH0HZAd9BnwHfABqC3YAcpB0CKAJZAh8AXwHoQMBAJABbuh0DHwBZAlkCmkBZAuNAn0IkAF6yHrgdAigCWQMfAGhAgEAfABqDWoOfAh8AGoPZA2NAn0JdAigCWQOfAGhAgEAfAmgEKEAfQp8CqARZA9kEKECfQt0EqATfAuhAZABcoJ8CaAUoQB9DHwJoBWhAH0NfAqgEWQRoQF9DnwOkAFyInwAahZ8DhkAfQ98D3wNgwF9DWQSfQ50F6AYfAuhAX0QfBCQAXJAfBCgGWQFoQF9DnoOfA2gGnwOoQF9DVcAbh4EAHQbkAF5bAEAAQABAHwNoBpkE6EBfQ1ZAG4CMAB0HHwNfAyDAn0GfAZ8AGoHfAw8AFcAbtgEAHQdkAF5xAEAfREBAHomfBFqHmQUawOQAXKwdAigH2QVfAF8EaEDAQBXAFkAZAd9EX4RbqJkB30RfhEwAAQAdCCQAnkqAQB9EQEAek50CKAfZBV8AXwRoQMBAHwAaiGPHAEAfABqC6AifAehAQEAVwBkBwQABACDAwEAbhIxAJACcwwwAAEAAQABAFkAAQBXAFkAZAd9EX4RbjxkB30RfhEwAAQAdCOQAnlcAQB9EQEAehp0CKAfZBV8AXwRoQMBAFcAWQBkB30RfhFuCmQHfRF+ETAAMABXAHwGfABqB3wBPABuDHwGfABqB3wBPAAwAHwGUwApFmEdAQAACiAgICAgICAgR2V0IHRoZSBIVE1MIGZvciBhbiBVUkwsIHBvc3NpYmx5IGZyb20gYW4gaW4tbWVtb3J5IGNhY2hlLgoKICAgICAgICBYWFggVE9ETyBOb3RlOiB0aGlzIGNhY2hlIGlzIG5ldmVyIGFjdHVhbGx5IGNsZWFyZWQuIEl0J3MgYXNzdW1lZCB0aGF0CiAgICAgICAgdGhlIGRhdGEgd29uJ3QgZ2V0IHN0YWxlIG92ZXIgdGhlIGxpZmV0aW1lIG9mIGEgbG9jYXRvciBpbnN0YW5jZSAobm90CiAgICAgICAgbmVjZXNzYXJpbHkgdHJ1ZSBmb3IgdGhlIGRlZmF1bHRfbG9jYXRvcikuCiAgICAgICAg2gRmaWxlegppbmRleC5odG1sehtSZXR1cm5pbmcgJXMgZnJvbSBjYWNoZTogJXNyGQEAAHIDAAAAcgEAAABOeh5Ta2lwcGluZyAlcyBkdWUgdG8gYmFkIGhvc3QgJXN6D0FjY2VwdC1lbmNvZGluZ9oIaWRlbnRpdHkpAXI+AAAAegtGZXRjaGluZyAlc3IlAAAAegpGZXRjaGVkICVzegxDb250ZW50LVR5cGVyMgAAAHoQQ29udGVudC1FbmNvZGluZ3oFdXRmLTh6B2xhdGluLTFplAEAAHoURmV0Y2ggZmFpbGVkOiAlczogJXMpJHIGAAAA2gJvc3JvAAAA2gVpc2RpcnIIAAAAcgUAAAByGQAAAHL+AAAAcngAAAByeQAAAHIbAQAAcgEBAAByEAAAAHJNAAAActYAAAByJgAAAHKlAAAAclMAAADaEUhUTUxfQ09OVEVOVF9UWVBFcpIAAADaBmdldHVybHLXAAAA2ghkZWNvZGVyc9oHQ0hBUlNFVHLjAAAAcuQAAABy2AAAANoMVW5pY29kZUVycm9ycuEAAAByEQAAAHI8AAAAct0AAAByEgAAAHIGAQAAcq4AAABylQAAACkScjkAAAByKgAAAHI0AAAAcnMAAABybwAAAHIdAQAAclcAAAByHgEAAHI6AAAAct4AAAByPgAAANoMY29udGVudF90eXBlWglmaW5hbF91cmxy0QAAANoIZW5jb2RpbmfaB2RlY29kZXJymwAAAHJYAAAAciwAAAByLAAAAHItAAAAciABAAD6AgAAc1oAAAAACRQBGAEOAgoBCgESAhABBAEKARICEAEGAQwBEgEMAQgBDAEMAQgBCAEKAQYBCgEIAQQBCgEGAQoBAgEOAQ4BEAEKAQ4BEAEMASIBEAEOAQgBQAEQASYCGAF6HlNpbXBsZVNjcmFwaW5nTG9jYXRvci5nZXRfcGFnZXoWPGEgaHJlZj1bXj5dKj4oW148XSspPGMBAAAAAAAAAAAAAAAEAAAABgAAAEMAAABzTAAAAHQAgwB9AXwAoAF8AGoCoQF9AnwCcyR0A2QBfABqAhYAgwGCAXwAagSgBXwCagahAUQAXRR9A3wBoAd8A6AIZAKhAaEBAQBxMnwBUwApA3JpAAAAehBVbmFibGUgdG8gZ2V0ICVzcgMAAAApCXKtAAAAciABAAByyAAAAHIEAAAA2gxfZGlzdG5hbWVfcmVy6gAAAHLRAAAAcq4AAABy5AAAACkEcjkAAAByVwAAAHIhAQAAcpIAAAByLAAAAHIsAAAAci0AAAByagAAADcDAABzDgAAAAAEBgEMAQQBDgESARIBeixTaW1wbGVTY3JhcGluZ0xvY2F0b3IuZ2V0X2Rpc3RyaWJ1dGlvbl9uYW1lcykCTnL9AAAAKRdyQgAAAHJDAAAAckQAAAByRQAAANoEemxpYtoKZGVjb21wcmVzc3IoAQAAclEAAAByEQEAAHISAQAAcmgAAABy8AAAAHLxAAAAcvIAAAByEwEAAHIUAQAAchUBAAByHwEAAHINAQAAciABAAByLgEAAHJqAAAActMAAAByLAAAAHIsAAAAcssAAAByLQAAAHL1AAAASgIAAHMmAAAACAEECAQBBgEG/QYGDhsIDQgNCBIGAQT/BAMIBggUCB0IIQg7CgJy9QAAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAABzOAAAAGUAWgFkAFoCZAFaA4cAZgFkAmQDhAhaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB4cABABaCFMAKQraEERpcmVjdG9yeUxvY2F0b3J6PwogICAgVGhpcyBjbGFzcyBsb2NhdGVzIGRpc3RyaWJ1dGlvbnMgaW4gYSBkaXJlY3RvcnkgdHJlZS4KICAgIGMCAAAAAAAAAAAAAAADAAAABAAAAAsAAABzUgAAAHwCoABkAWQCoQJ8AF8BdAJ0A3wAgwJqBGYAaQB8AqQBjgEBAHQFagagB3wBoQF9AXQFagagCHwBoQFzSHQJZAN8ARYAgwGCAXwBfABfCmQEUwApBWGMAQAACiAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZS4KICAgICAgICA6cGFyYW0gcGF0aDogVGhlIHJvb3Qgb2YgdGhlIGRpcmVjdG9yeSB0cmVlIHRvIHNlYXJjaC4KICAgICAgICA6cGFyYW0ga3dhcmdzOiBQYXNzZWQgdG8gdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGZvcjoKICAgICAgICAgICAgICAgICAgICAgICAqIHJlY3Vyc2l2ZSAtIGlmIFRydWUgKHRoZSBkZWZhdWx0KSwgc3ViZGlyZWN0b3JpZXMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNlZCBpbnRvLiBJZiBGYWxzZSwgb25seSB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2VhcmNoZWQsCiAgICAgICAg2glyZWN1cnNpdmVUehNOb3QgYSBkaXJlY3Rvcnk6ICVyTikLcqkAAAByMgEAAHLHAAAAcjEBAAByUQAAAHIkAQAAcm8AAADaB2Fic3BhdGhyJQEAAHIEAAAA2ghiYXNlX2RpcikDcjkAAABybwAAAHLKAAAAcssAAAByLAAAAHItAAAAclEAAABIAwAAcwwAAAAACg4BFgEMAQwBDAF6GURpcmVjdG9yeUxvY2F0b3IuX19pbml0X19jAwAAAAAAAAAAAAAAAwAAAAMAAABDAAAAcwwAAAB8AaAAfABqAaEBUwApAXrhCiAgICAgICAgU2hvdWxkIGEgZmlsZW5hbWUgYmUgY29uc2lkZXJlZCBhcyBhIGNhbmRpZGF0ZSBmb3IgYSBkaXN0cmlidXRpb24KICAgICAgICBhcmNoaXZlPyBBcyB3ZWxsIGFzIHRoZSBmaWxlbmFtZSwgdGhlIGRpcmVjdG9yeSB3aGljaCBjb250YWlucyBpdAogICAgICAgIGlzIHByb3ZpZGVkLCB0aG91Z2ggbm90IHVzZWQgYnkgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAgICAgICAgKQJycAAAAHJxAAAAKQNyOQAAAHJ/AAAA2gZwYXJlbnRyLAAAAHIsAAAAci0AAADaDnNob3VsZF9pbmNsdWRlWQMAAHMCAAAAAAZ6H0RpcmVjdG9yeUxvY2F0b3Iuc2hvdWxkX2luY2x1ZGVjAgAAAAAAAAAAAAAACQAAAAkAAABDAAAAc5AAAABpAGkAZAGcAn0CdACgAXwAagKhAUQAXXRcA30DfQR9BXwFRABdWn0GfACgA3wGfAOhAnIkdABqBKAFfAN8BqECfQZ0BmQCZAN0B3QAagSgCHwGoQGDAWQDZANkA2YGgwF9B3wAoAl8B3wBoQJ9CHwIciR8AKAKfAJ8CKECAQBxJHwAagtzFgEAcYxxFnwCUwApBE5yswAAAHIiAQAAcjIAAAApDHIkAQAA2gR3YWxrcjQBAAByNgEAAHJvAAAAcoYAAAByBwAAAHIJAAAAcjMBAAByoQAAAHKyAAAAcjIBAAApCXI5AAAAcmcAAAByVwAAANoEcm9vdNoEZGlyc9oFZmlsZXPaAmZucioAAABypQAAAHIsAAAAciwAAAByLQAAAHJoAAAAYQMAAHMeAAAAAAEKARYBCAEMAQ4BBgEOAQb+BgMMAQQBDgEGAQYBeh1EaXJlY3RvcnlMb2NhdG9yLl9nZXRfcHJvamVjdGMBAAAAAAAAAAAAAAAIAAAACQAAAEMAAABzjgAAAHQAgwB9AXQBoAJ8AGoDoQFEAF12XAN9An0DfQR8BEQAXVx9BXwAoAR8BXwCoQJyIHQBagWgBnwCfAWhAn0FdAdkAWQCdAh0AWoFoAl8BaEBgwFkAmQCZAJmBoMBfQZ8AKAKfAZkA6ECfQd8B3IgfAGgC3wHZAQZAKEBAQBxIHwAagxzEgEAcYpxEnwBUwApBXJpAAAAciIBAAByMgAAAE5yZwAAACkNcq0AAAByJAEAAHI3AQAAcjQBAAByNgEAAHJvAAAAcoYAAAByBwAAAHIJAAAAcjMBAAByoQAAAHKuAAAAcjIBAAApCHI5AAAAclcAAAByOAEAAHI5AQAAcjoBAAByOwEAAHIqAAAAcqUAAAByLAAAAHIsAAAAci0AAAByagAAAHEDAABzHgAAAAAEBgEWAQgBDAEOAQYBDgEG/gYDDAEEARABBgEGAXonRGlyZWN0b3J5TG9jYXRvci5nZXRfZGlzdHJpYnV0aW9uX25hbWVzKQlyQgAAAHJDAAAAckQAAAByRQAAAHJRAAAAcjYBAAByaAAAAHJqAAAActMAAAByLAAAAHIsAAAAcssAAAByLQAAAHIxAQAAQwMAAHMKAAAACAEEBAwRCAgIEHIxAQAAYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHMgAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGUwApB9oLSlNPTkxvY2F0b3JhEgEAAAogICAgVGhpcyBsb2NhdG9yIHVzZXMgc3BlY2lhbCBleHRlbmRlZCBtZXRhZGF0YSAobm90IGF2YWlsYWJsZSBvbiBQeVBJKSBhbmQgaXMKICAgIHRoZSBiYXNpcyBvZiBwZXJmb3JtYW50IGRlcGVuZGVuY3kgcmVzb2x1dGlvbiBpbiBkaXN0bGliLiBPdGhlciBsb2NhdG9ycwogICAgcmVxdWlyZSBhcmNoaXZlIGRvd25sb2FkcyBiZWZvcmUgZGVwZW5kZW5jaWVzIGNhbiBiZSBkZXRlcm1pbmVkISBBcyB5b3UKICAgIG1pZ2h0IGltYWdpbmUsIHRoYXQgY2FuIGJlIHNsb3cuCiAgICBjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcwwAAAB0AGQBgwGCAWQCUwBy1QAAAHJlAAAAcloAAAByLAAAAHIsAAAAci0AAAByagAAAIsDAABzAgAAAAAEeiJKU09OTG9jYXRvci5nZXRfZGlzdHJpYnV0aW9uX25hbWVzYwIAAAAAAAAAAAAAAAcAAAAIAAAAQwAAAHPaAAAAaQBpAGQBnAJ9AnQAfAGDAX0DfANy1nwDoAFkAmcAoQJEAF2yfQR8BGQDGQBkBGsDcyJ8BGQFGQBkBmsDckBxInQCfANkBxkAfARkCBkAfAOgAWQJZAqhAnwAagNkC40EfQV8BWoEfQZ8BGQMGQB8Bl8FZA18BHYAcpB8BGQNGQBykGQOfARkDRkAZgJ8BV8GfASgAWQPaQChAnwGXwd8BKABZBBpAKECfAVfCHwFfAJ8BWoJPAB8AmQRGQCgCnwFagl0C4MAoQKgDHwEZAwZAKEBAQBxInwCUwApEk5yswAAAHI6AQAA2gVwdHlwZdoFc2Rpc3RaCXB5dmVyc2lvbtoGc291cmNlcmcAAAByjAAAAHLQAAAAehdQbGFjZWhvbGRlciBmb3Igc3VtbWFyeSkCctAAAAByNAAAAHIqAAAAcp0AAABypAAAANoMcmVxdWlyZW1lbnRz2gdleHBvcnRzcqgAAAApDXIbAAAAclMAAAByFQAAAHI0AAAAcqoAAAByqwAAAHKdAAAAWgxkZXBlbmRlbmNpZXNyQQEAAHKMAAAAcqwAAAByrQAAAHKuAAAAKQdyOQAAAHJnAAAAclcAAABy0QAAAHKlAAAAcrAAAABysQAAAHIsAAAAciwAAAByLQAAAHJoAAAAkQMAAHMqAAAAAAEKAQgBBAEQARgBAgQOAQYBAv8CAgT9BgQGAQoCEAEOAQ4BDgEKASABehhKU09OTG9jYXRvci5fZ2V0X3Byb2plY3ROKQZyQgAAAHJDAAAAckQAAAByRQAAAHJqAAAAcmgAAAByLAAAAHIsAAAAciwAAAByLQAAAHI8AQAAhAMAAHMGAAAACAEEBggGcjwBAABjAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAcygAAABlAFoBZABaAmQBWgOHAGYBZAJkA4QIWgRkBGQFhABaBYcABABaBlMAKQbaD0Rpc3RQYXRoTG9jYXRvcnqCCiAgICBUaGlzIGxvY2F0b3IgZmluZHMgaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbnMgaW4gYSBwYXRoLiBJdCBjYW4gYmUgdXNlZnVsIGZvcgogICAgYWRkaW5nIHRvIGFuIDpjbGFzczpgQWdncmVnYXRpbmdMb2NhdG9yYC4KICAgIGMCAAAAAAAAAAAAAAADAAAABAAAAAsAAABzLgAAAHQAdAF8AIMCagJmAGkAfAKkAY4BAQB0A3wBdASDAnMkSgCCAXwBfABfBWQBUwApAnpzCiAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZS4KCiAgICAgICAgOnBhcmFtIGRpc3RwYXRoOiBBIDpjbGFzczpgRGlzdHJpYnV0aW9uUGF0aGAgaW5zdGFuY2UgdG8gc2VhcmNoLgogICAgICAgIE4pBnLHAAAAckIBAAByUQAAANoKaXNpbnN0YW5jZXIUAAAA2ghkaXN0cGF0aCkDcjkAAAByRAEAAHLKAAAAcssAAAByLAAAAHItAAAAclEAAACvAwAAcwYAAAAABhYBDgF6GERpc3RQYXRoTG9jYXRvci5fX2luaXRfX2MCAAAAAAAAAAAAAAAEAAAACAAAAEMAAABzUAAAAHwAagCgAXwBoQF9AnwCZAB1AHIgaQBpAGQBnAJ9A24sfAJqAnwCZAJ8AmoCdAN8AmoEZwGDAWkBZAN8AmoCdANkAGcBgwFpAWkDfQN8A1MAKQROcrMAAAByqAAAAHKiAAAAKQVyRAEAANoQZ2V0X2Rpc3RyaWJ1dGlvbnKMAAAAcq0AAAByqwAAACkEcjkAAAByZwAAAHKwAAAAclcAAAByLAAAAHIsAAAAci0AAAByaAAAALkDAABzEAAAAAABDAEIAQwDBgESARD9BAV6HERpc3RQYXRoTG9jYXRvci5fZ2V0X3Byb2plY3QpB3JCAAAAckMAAAByRAAAAHJFAAAAclEAAAByaAAAAHLTAAAAciwAAAByLAAAAHLLAAAAci0AAAByQgEAAKoDAABzBgAAAAgBBAQMCnJCAQAAYwAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAHNSAAAAZQBaAWQAWgJkAVoDhwBmAWQCZAOECFoEhwBmAWQEZAWECFoFZAZkB4QAWgZlB2UIaglqCmUGgwJaCWQIZAmEAFoLZApkC4QAWgyHAAQAWg1TACkM2hJBZ2dyZWdhdGluZ0xvY2F0b3J6SQogICAgVGhpcyBjbGFzcyBhbGxvd3MgeW91IHRvIGNoYWluIGFuZC9vciBtZXJnZSBhIGxpc3Qgb2YgbG9jYXRvcnMuCiAgICBjAQAAAAAAAAAAAAAAAwAAAAQAAAAPAAAAcy4AAAB8AqAAZAFkAqECfABfAXwBfABfAnQDdAR8AIMCagVmAGkAfAKkAY4BAQBkA1MAKQRhzwEAAAogICAgICAgIEluaXRpYWxpc2UgYW4gaW5zdGFuY2UuCgogICAgICAgIDpwYXJhbSBsb2NhdG9yczogVGhlIGxpc3Qgb2YgbG9jYXRvcnMgdG8gc2VhcmNoLgogICAgICAgIDpwYXJhbSBrd2FyZ3M6IFBhc3NlZCB0byB0aGUgc3VwZXJjbGFzcyBjb25zdHJ1Y3RvciwKICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgZm9yOgogICAgICAgICAgICAgICAgICAgICAgICogbWVyZ2UgLSBpZiBGYWxzZSAodGhlIGRlZmF1bHQpLCB0aGUgZmlyc3Qgc3VjY2Vzc2Z1bAogICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGZyb20gYW55IG9mIHRoZSBsb2NhdG9ycyBpcyByZXR1cm5lZC4gSWYgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHRzIGZyb20gYWxsIGxvY2F0b3JzIGFyZSBtZXJnZWQgKHRoaXMgY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93KS4KICAgICAgICDaBW1lcmdlRk4pBnKpAAAAckcBAADaCGxvY2F0b3JzcscAAAByRgEAAHJRAAAAKQNyOQAAAHJIAQAAcsoAAAByywAAAHIsAAAAci0AAAByUQAAAMoDAABzBgAAAAAMDgEGAXobQWdncmVnYXRpbmdMb2NhdG9yLl9faW5pdF9fYwEAAAAAAAAAAAAAAAIAAAADAAAAAwAAAHMmAAAAdAB0AXwAgwKgAqEAAQB8AGoDRABdDH0BfAGgAqEAAQBxFGQAUwByXAAAACkEcscAAAByRgEAAHJeAAAAckgBAACpAnI5AAAAcq8AAAByywAAAHIsAAAAci0AAAByXgAAANoDAABzBgAAAAABDgEKAXoeQWdncmVnYXRpbmdMb2NhdG9yLmNsZWFyX2NhY2hlYwIAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHMcAAAAfAF8AF8AfABqAUQAXQp9AnwBfAJfAnEMZABTAHJcAAAAKQNyYAAAAHJIAQAAcjQAAAApA3I5AAAAcmIAAAByrwAAAHIsAAAAciwAAAByLQAAAHJjAAAA3wMAAHMGAAAAAAEGAQoBeh5BZ2dyZWdhdGluZ0xvY2F0b3IuX3NldF9zY2hlbWVjAgAAAAAAAAAAAAAADAAAAAYAAABDAAAAc+wAAABpAH0CfABqAEQAXdx9A3wDoAF8AaEBfQR8BHIKfABqAnKofAKgA2QBaQChAn0FfAKgA2QCaQChAn0GfAKgBHwEoQEBAHwCoANkAaEBfQd8BXKKfAdyinwFoAWhAEQAXSpcAn0IfQl8CHwHdgBygHwHfAgFABkAfAlPAAMAPABxXnwJfAd8CDwAcV58AqADZAKhAX0KfAZy5nwKcuZ8CqAEfAahAQEAcQp8AGoGZAB1AHK4ZAN9C24iZAR9C3wERABdGH0IfABqBqAHfAihAXLAZAN9CwEAcdpxwHwLcgp8BH0CAQBx6HEKfAJTACkFTnKoAAAAcqIAAABURikIckgBAAByawAAAHJHAQAAclMAAADaBnVwZGF0ZXLbAAAAck4AAABykgAAACkMcjkAAAByZwAAAHJXAAAAcq8AAAByvwAAAHI6AQAAcqIAAABaAmRmcr4AAAByiQAAANoCZGTaBWZvdW5kciwAAAByLAAAAHItAAAAcmgAAADmAwAAczgAAAAAAQQBCgEKAQQBBgEMAQwCCgEKAQgBEAEIARICCgEKAQgBDAwKAQYCBAEIAQwBBAEGAQQBBAEGAXofQWdncmVnYXRpbmdMb2NhdG9yLl9nZXRfcHJvamVjdGMBAAAAAAAAAAAAAAADAAAACQAAAEMAAABzOgAAAHQAgwB9AXwAagFEAF0ofQJ6EHwBfAKgAqEATwB9AVcAcQwEAHQDeTIBAAEAAQBZAHEMMABxDHwBUwByzQAAACkEcq0AAABySAEAAHJqAAAAcmYAAAApA3I5AAAAclcAAAByrwAAAHIsAAAAciwAAAByLQAAAHJqAAAAEgQAAHMOAAAAAAQGAQoBAgEQAQwBCAF6KUFnZ3JlZ2F0aW5nTG9jYXRvci5nZXRfZGlzdHJpYnV0aW9uX25hbWVzKQ5yQgAAAHJDAAAAckQAAAByRQAAAHJRAAAAcl4AAAByYwAAAHLFAAAAckkAAAByNAAAANoEZmdldHJoAAAAcmoAAABy0wAAAHIsAAAAciwAAAByywAAAHItAAAAckYBAADGAwAAcw4AAAAIAQQDDBAMBQgFDgIILHJGAQAAehhodHRwczovL3B5cGkub3JnL3NpbXBsZS9yJAAAAHIlAAAA2gZsZWdhY3lypwAAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzTAAAAGUAWgFkAFoCZAFaA2QSZANkBIQBWgRkBWQGhABaBWQHZAiEAFoGZAlkCoQAWgdkC2QMhABaCGQNZA6EAFoJZBNkEGQRhAFaCmQCUwApFNoQRGVwZW5kZW5jeUZpbmRlcnowCiAgICBMb2NhdGUgZGVwZW5kZW5jaWVzIGZvciBkaXN0cmlidXRpb25zLgogICAgTmMCAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzHAAAAHwBcAZ0AHwAXwF0AnwAagFqA4MBfABfA2QBUwApAnpmCiAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZSwgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2NhdG9yCiAgICAgICAgdG8gbG9jYXRlIGRpc3RyaWJ1dGlvbnMuCiAgICAgICAgTikE2g9kZWZhdWx0X2xvY2F0b3JyrwAAAHIgAAAAcjQAAABySQEAAHIsAAAAciwAAAByLQAAAHJRAAAALwQAAHMEAAAAAAUKAXoZRGVwZW5kZW5jeUZpbmRlci5fX2luaXRfX2MCAAAAAAAAAAAAAAAFAAAABwAAAEMAAABzcgAAAHQAoAFkAXwBoQIBAHwBagJ9AnwBfABqA3wCPAB8AXwAagR8AnwBagVmAjwAfAFqBkQAXTp9A3QHfAODAVwCfQJ9BHQAoAFkAnwCfAR8AaEEAQB8AGoIoAl8AnQKgwChAqALfAR8AWYCoQEBAHEyZANTACkEeqgKICAgICAgICBBZGQgYSBkaXN0cmlidXRpb24gdG8gdGhlIGZpbmRlci4gVGhpcyB3aWxsIHVwZGF0ZSBpbnRlcm5hbCBpbmZvcm1hdGlvbgogICAgICAgIGFib3V0IHdobyBwcm92aWRlcyB3aGF0LgogICAgICAgIDpwYXJhbSBkaXN0OiBUaGUgZGlzdHJpYnV0aW9uIHRvIGFkZC4KICAgICAgICB6FmFkZGluZyBkaXN0cmlidXRpb24gJXN6G0FkZCB0byBwcm92aWRlZDogJXMsICVzLCAlc04pDHJ4AAAAcnkAAAByQAAAANoNZGlzdHNfYnlfbmFtZdoFZGlzdHNyjAAAANoIcHJvdmlkZXNyHQAAANoIcHJvdmlkZWRyrAAAAHKtAAAAcq4AAAApBXI5AAAAcrAAAAByZwAAANoBcHKMAAAAciwAAAByLAAAAHItAAAA2hBhZGRfZGlzdHJpYnV0aW9uNwQAAHMQAAAAAAYMAQYBCgEQAQoBDAEQAXohRGVwZW5kZW5jeUZpbmRlci5hZGRfZGlzdHJpYnV0aW9uYwIAAAAAAAAAAAAAAAYAAAAHAAAAQwAAAHN4AAAAdACgAWQBfAGhAgEAfAFqAn0CfABqA3wCPQB8AGoEfAJ8AWoFZgI9AHwBagZEAF1EfQN0B3wDgwFcAn0CfQR0AKABZAJ8AnwEfAGhBAEAfABqCHwCGQB9BXwFoAl8BHwBZgKhAQEAfAVzLnwAagh8Aj0AcS5kA1MAKQR6sAogICAgICAgIFJlbW92ZSBhIGRpc3RyaWJ1dGlvbiBmcm9tIHRoZSBmaW5kZXIuIFRoaXMgd2lsbCB1cGRhdGUgaW50ZXJuYWwKICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB3aG8gcHJvdmlkZXMgd2hhdC4KICAgICAgICA6cGFyYW0gZGlzdDogVGhlIGRpc3RyaWJ1dGlvbiB0byByZW1vdmUuCiAgICAgICAgehhyZW1vdmluZyBkaXN0cmlidXRpb24gJXN6IFJlbW92ZSBmcm9tIHByb3ZpZGVkOiAlcywgJXMsICVzTikKcngAAAByeQAAAHJAAAAAclEBAAByUgEAAHKMAAAAclMBAAByHQAAAHJUAQAA2gZyZW1vdmUpBnI5AAAAcrAAAAByZwAAAHJVAQAAcowAAADaAXNyLAAAAHIsAAAAci0AAADaE3JlbW92ZV9kaXN0cmlidXRpb25GBAAAcxYAAAAABgwBBgEIAQ4BCgEMARABCgEOAQQBeiREZXBlbmRlbmN5RmluZGVyLnJlbW92ZV9kaXN0cmlidXRpb25jAgAAAAAAAAAAAAAABAAAAAgAAABDAAAAc0AAAAB6EHwAagCgAXwBoQF9AlcAbioEAHQCeToBAAEAAQB8AaADoQBkARkAfQN8AGoAoAF8A6EBfQJZAG4CMAB8AlMAKQJ63gogICAgICAgIEdldCBhIHZlcnNpb24gbWF0Y2hlciBmb3IgYSByZXF1aXJlbWVudC4KICAgICAgICA6cGFyYW0gcmVxdDogVGhlIHJlcXVpcmVtZW50CiAgICAgICAgOnR5cGUgcmVxdDogc3RyCiAgICAgICAgOnJldHVybjogQSB2ZXJzaW9uIG1hdGNoZXIgKGFuIGluc3RhbmNlIG9mCiAgICAgICAgICAgICAgICAgOmNsYXNzOmBkaXN0bGliLnZlcnNpb24uTWF0Y2hlcmApLgogICAgICAgIHIBAAAAKQRyNAAAAHJOAAAAciEAAAByGwEAACkEcjkAAADaBHJlcXRyTgAAAHJnAAAAciwAAAByLAAAAHItAAAA2gtnZXRfbWF0Y2hlclgEAABzDAAAAAAIAgEQAQwCDAESAXocRGVwZW5kZW5jeUZpbmRlci5nZXRfbWF0Y2hlcmMCAAAAAAAAAAAAAAAJAAAACQAAAEMAAABzcgAAAHwAoAB8AaEBfQJ8AmoBfQN0AoMAfQR8AGoDfQV8A3wFdgBybnwFfAMZAEQAXUBcAn0GfQd6DnwCoAR8BqEBfQhXAG4WBAB0BXlYAQABAAEAZAF9CFkAbgIwAHwIcix8BKAGfAehAQEAAQBxbnEsfARTACkCetMKICAgICAgICBGaW5kIHRoZSBkaXN0cmlidXRpb25zIHdoaWNoIGNhbiBmdWxmaWxsIGEgcmVxdWlyZW1lbnQuCgogICAgICAgIDpwYXJhbSByZXF0OiBUaGUgcmVxdWlyZW1lbnQuCiAgICAgICAgIDp0eXBlIHJlcXQ6IHN0cgogICAgICAgIDpyZXR1cm46IEEgc2V0IG9mIGRpc3RyaWJ1dGlvbiB3aGljaCBjYW4gZnVsZmlsbCB0aGUgcmVxdWlyZW1lbnQuCiAgICAgICAgRikHclsBAAByQAAAAHKtAAAAclQBAABykgAAAHIhAAAAcq4AAAApCXI5AAAAcloBAAByTgAAAHJnAAAAclcAAAByVAEAAHKMAAAA2ghwcm92aWRlcnKSAAAAciwAAAByLAAAAHItAAAA2g5maW5kX3Byb3ZpZGVyc2gEAABzHAAAAAAICgEGAQYBBgEIARABAgEOAQwBCgIEAQoBBgF6H0RlcGVuZGVuY3lGaW5kZXIuZmluZF9wcm92aWRlcnNjBAAAAAAAAAAAAAAACQAAAAcAAABDAAAAc54AAAB8AGoAfAIZAH0EdAGDAH0FfAREAF0kfQZ8AKACfAahAX0HfAegA3wBagShAXMUfAWgBXwGoQEBAHEUfAVyWnwDoAVkAXwBfAJ0BnwFgwFmBKEBAQBkAn0IbkB8AKAHfAKhAQEAfABqAHwCPQB8BEQAXRp9BnwAagCgCHwBdAGDAKECoAV8BqEBAQBxcHwAoAl8AaEBAQBkA30IfAhTACkEYYoDAAAKICAgICAgICBBdHRlbXB0IHRvIHJlcGxhY2Ugb25lIHByb3ZpZGVyIHdpdGggYW5vdGhlci4gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZAogICAgICAgIHdoZW4gcmVzb2x2aW5nIGRlcGVuZGVuY2llcyBmcm9tIG11bHRpcGxlIHNvdXJjZXMsIGUuZy4gQSByZXF1aXJlcwogICAgICAgIChCID49IDEuMCkgd2hpbGUgQyByZXF1aXJlcyAoQiA+PSAxLjEpLgoKICAgICAgICBGb3Igc3VjY2Vzc2Z1bCByZXBsYWNlbWVudCwgYGBwcm92aWRlcmBgIG11c3QgbWVldCBhbGwgdGhlIHJlcXVpcmVtZW50cwogICAgICAgIHdoaWNoIGBgb3RoZXJgYCBmdWxmaWxscy4KCiAgICAgICAgOnBhcmFtIHByb3ZpZGVyOiBUaGUgcHJvdmlkZXIgd2UgYXJlIHRyeWluZyB0byByZXBsYWNlIHdpdGguCiAgICAgICAgOnBhcmFtIG90aGVyOiBUaGUgcHJvdmlkZXIgd2UncmUgdHJ5aW5nIHRvIHJlcGxhY2UuCiAgICAgICAgOnBhcmFtIHByb2JsZW1zOiBJZiBGYWxzZSBpcyByZXR1cm5lZCwgdGhpcyB3aWxsIGNvbnRhaW4gd2hhdAogICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgcHJldmVudGVkIHJlcGxhY2VtZW50LiBUaGlzIGlzIGN1cnJlbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgYSB0dXBsZSBvZiB0aGUgbGl0ZXJhbCBzdHJpbmcgJ2NhbnRyZXBsYWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgIGBgcHJvdmlkZXJgYCwgYGBvdGhlcmBgICBhbmQgdGhlIHNldCBvZiByZXF1aXJlbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYGBwcm92aWRlcmBgIGNvdWxkbid0IGZ1bGZpbGwuCiAgICAgICAgOnJldHVybjogVHJ1ZSBpZiB3ZSBjYW4gcmVwbGFjZSBgYG90aGVyYGAgd2l0aCBgYHByb3ZpZGVyYGAsIGVsc2UKICAgICAgICAgICAgICAgICBGYWxzZS4KICAgICAgICBaC2NhbnRyZXBsYWNlRlQpCtoFcmVxdHNyrQAAAHJbAQAAcpIAAAByjAAAAHKuAAAA2glmcm96ZW5zZXRyWQEAAHKsAAAAclYBAAApCXI5AAAAclwBAADaBW90aGVy2ghwcm9ibGVtc1oFcmxpc3TaCXVubWF0Y2hlZHJYAQAAck4AAAByVwAAAHIsAAAAciwAAAByLQAAANoOdHJ5X3RvX3JlcGxhY2WABAAAcyQAAAAAEwoBBgEIAQoBDAEMAQQCCgEG/wYCBgMKAQgBCAEYAQoBBAF6H0RlcGVuZGVuY3lGaW5kZXIudHJ5X3RvX3JlcGxhY2VGYwQAAAAAAAAAAAAAABgAAAAHAAAAQwAAAHPwAgAAaQB8AF8AaQB8AF8BaQB8AF8CaQB8AF8DdAR8AnAgZwCDAX0CZAF8AnYAckZ8AqAFZAGhAQEAfAJ0BGcAZAKiAYMBTwB9AnQGfAF0B4MCcmZ8AQQAfQR9BXQIoAlkA3wFoQIBAG40fABqCmoLfAF8A2QEjQIEAH0EfQV8BGQFdQByjnQMZAZ8ARYAgwGCAXQIoAlkB3wFoQIBAGQIfARfDXQEgwB9BnQEfARnAYMBfQd0BHwFZwGDAX0IfAeQAnKifAegDqEAfQR8BGoPfQl8CXwAagJ2AXLkfACgEHwEoQEBAG4ifABqAnwJGQB9CnwKfARrA5ABcgZ8AKARfAR8CnwGoQMBAHwEahJ8BGoTQgB9C3wEahR9DHQEgwB9DXwCkAFyXnwEfAh2AJABcl5kCUQAXSp9DmQKfA4WAH0PfA98AnYAkAFyMnwNdBV8BGQLfA4WAIMCTwB9DZABcTJ8C3wMQgB8DUIAfRB8EEQAkAFdLn0RfACgFnwRoQF9EnwSkAJzRHQIoAlkDHwRoQIBAHwAagpqC3wRfANkBI0CfRN8E2QFdQCQAXLAfAOQAXPAfABqCmoLfBFkCGQEjQJ9E3wTZAV1AJABcuZ0CKAJZA18EaECAQB8BqAXZA58EWYCoQEBAG5efBNqD3wTahgCAH0UfRV8FHwVZgJ8AGoBdgGQAnIOfAegF3wToQEBAHwSoBd8E6EBAQB8EXwLdgCQAnJEfAR8CHYAkAJyRHwIoBd8E6EBAQB0CKAJZA98E2oZoQIBAHwSRABdUn0WfBZqD30JfAl8AGoCdgGQAnJ2fABqA6AafBZ0BIMAoQKgF3wRoQEBAG4ifABqAnwJGQB9CnwKfBZrA5ACckh8AKARfBZ8CnwGoQMBAJACcUiQAXFucbp0BHwAagGgG6EAgwF9F3wXRABdJn0EfAR8CHYBfARfHHwEahyQAnK0dAigCWQQfARqGaECAQCQAnG0dAigCWQRfAWhAgEAfBd8BmYCUwApEmGOBAAACiAgICAgICAgRmluZCBhIGRpc3RyaWJ1dGlvbiBhbmQgYWxsIGRpc3RyaWJ1dGlvbnMgaXQgZGVwZW5kcyBvbi4KCiAgICAgICAgOnBhcmFtIHJlcXVpcmVtZW50OiBUaGUgcmVxdWlyZW1lbnQgc3BlY2lmeWluZyB0aGUgZGlzdHJpYnV0aW9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kLCBvciBhIERpc3RyaWJ1dGlvbiBpbnN0YW5jZS4KICAgICAgICA6cGFyYW0gbWV0YV9leHRyYXM6IEEgbGlzdCBvZiBtZXRhIGV4dHJhcyBzdWNoIGFzIDp0ZXN0OiwgOmJ1aWxkOiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIG9uLgogICAgICAgIDpwYXJhbSBwcmVyZWxlYXNlczogSWYgYGBUcnVlYGAsIGFsbG93IHByZS1yZWxlYXNlIHZlcnNpb25zIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCAtIG90aGVyd2lzZSwgZG9uJ3QgcmV0dXJuIHByZXJlbGVhc2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgdGhleSdyZSBhbGwgdGhhdCdzIGF2YWlsYWJsZS4KCiAgICAgICAgUmV0dXJuIGEgc2V0IG9mIDpjbGFzczpgRGlzdHJpYnV0aW9uYCBpbnN0YW5jZXMgYW5kIGEgc2V0IG9mCiAgICAgICAgcHJvYmxlbXMuCgogICAgICAgIFRoZSBkaXN0cmlidXRpb25zIHJldHVybmVkIHNob3VsZCBiZSBzdWNoIHRoYXQgdGhleSBoYXZlIHRoZQogICAgICAgIDphdHRyOmByZXF1aXJlZGAgYXR0cmlidXRlIHNldCB0byBgYFRydWVgYCBpZiB0aGV5IHdlcmUKICAgICAgICBmcm9tIHRoZSBgYHJlcXVpcmVtZW50YGAgcGFzc2VkIHRvIGBgZmluZCgpYGAsIGFuZCB0aGV5IGhhdmUgdGhlCiAgICAgICAgOmF0dHI6YGJ1aWxkX3RpbWVfZGVwZW5kZW5jeWAgYXR0cmlidXRlIHNldCB0byBgYFRydWVgYCB1bmxlc3MgdGhleQogICAgICAgIGFyZSBwb3N0LWluc3RhbGxhdGlvbiBkZXBlbmRlbmNpZXMgb2YgdGhlIGBgcmVxdWlyZW1lbnRgYC4KCiAgICAgICAgVGhlIHByb2JsZW1zIHNob3VsZCBiZSBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlIHN0cmluZwogICAgICAgIGBgJ3Vuc2F0aXNmaWVkJ2BgIGFuZCB0aGUgcmVxdWlyZW1lbnQgd2hpY2ggY291bGRuJ3QgYmUgc2F0aXNmaWVkCiAgICAgICAgYnkgYW55IGRpc3RyaWJ1dGlvbiBrbm93biB0byB0aGUgbG9jYXRvci4KICAgICAgICB6AzoqOikDegY6dGVzdDp6BzpidWlsZDp6BTpkZXY6ehhwYXNzZWQgJXMgYXMgcmVxdWlyZW1lbnQpAXK6AAAATnoTVW5hYmxlIHRvIGxvY2F0ZSAlcnoKbG9jYXRlZCAlc1QpA9oEdGVzdNoFYnVpbGTaA2RldnoEOiVzOnoLJXNfcmVxdWlyZXN6GU5vIHByb3ZpZGVycyBmb3VuZCBmb3IgJXJ6EUNhbm5vdCBzYXRpc2Z5ICVyWgt1bnNhdGlzZmllZHoaQWRkaW5nICVzIHRvIGluc3RhbGxfZGlzdHN6IyVzIGlzIGEgYnVpbGQtdGltZSBkZXBlbmRlbmN5IG9ubHkuehBmaW5kIGRvbmUgZm9yICVzKR1yVAEAAHJSAQAAclEBAAByXgEAAHKtAAAAclcBAAByQwEAAHITAAAAcngAAAByeQAAAHKvAAAAcsEAAAByBAAAANoJcmVxdWVzdGVkcqkAAAByQAAAAHJWAQAAcmMBAABaDHJ1bl9yZXF1aXJlc1oNbWV0YV9yZXF1aXJlc1oOYnVpbGRfcmVxdWlyZXPaB2dldGF0dHJyXQEAAHKuAAAAcowAAABaEG5hbWVfYW5kX3ZlcnNpb25yrAAAANoGdmFsdWVzWhVidWlsZF90aW1lX2RlcGVuZGVuY3kpGHI5AAAAcrQAAABaC21ldGFfZXh0cmFzcroAAABysAAAAHLgAAAAcmEBAADaBHRvZG9aDWluc3RhbGxfZGlzdHNyZwAAAHJgAQAAWgZpcmVxdHNaBnNyZXF0c1oGZXJlcXRzckAAAAByWAAAAFoJYWxsX3JlcXRzcrsAAADaCXByb3ZpZGVyc3JcAQAA2gFucokAAAByVQEAAHJSAQAAciwAAAByLAAAAHItAAAA2gRmaW5kqAQAAHOSAAAAABoGAQYBBgEGAgwBCAEKAhACCgEIAQ4CCAEC/woCCAEMAQwBBgEGAQoBCgEGAQgBBgEKAQwDCgEKAQ4CDAEGAQYBEAEIAQgBCgEWAQwBCgEKAQYBDAEQAxABEAEKAQwBEAIOARABCgEKARQBCgEGAQT/BAIIAQYBDAEYAgoBCgIYAg4BCAEKAQgBBgEE/wgCDAF6FURlcGVuZGVuY3lGaW5kZXIuZmluZCkBTikCTkYpC3JCAAAAckMAAAByRAAAAHJFAAAAclEAAAByVgEAAHJZAQAAclsBAAByXQEAAHJjAQAAcm0BAAByLAAAAHIsAAAAciwAAAByLQAAAHJPAQAAKgQAAHMQAAAACAEEBAoICA8IEggQCBgIKHJPAQAAKQFOKUxy9wAAANoCaW9yAgAAAHLZAAAA2gdsb2dnaW5nciQBAABybQAAAHLwAAAAcgQBAADaC0ltcG9ydEVycm9yWg9kdW1teV90aHJlYWRpbmdyLwEAAHIyAAAAcgQAAADaBmNvbXBhdHIFAAAAcgYAAAByBwAAAHIIAAAAcgkAAAByCgAAAHILAAAAcgwAAAByDQAAAHIOAAAAcjcAAAByDwAAAHIQAAAAchEAAAByEgAAAFoIZGF0YWJhc2VyEwAAAHIUAAAAchUAAAByqgAAAHIWAAAAchcAAADaBHV0aWxyGAAAAHIZAAAAchoAAAByGwAAAHIcAAAAch0AAAByHgAAAHIfAAAAcowAAAByIAAAAHIhAAAAcp4AAAByIgAAAHIjAAAA2glnZXRMb2dnZXJyQgAAAHJ4AAAAcvEAAABykQAAAHLyAAAAcikBAAByJgEAAHIoAAAAci4AAAByLwAAANoGb2JqZWN0ckkAAAByxgAAAHLUAAAAcuEAAABy9QAAAHIxAQAAcjwBAAByQgEAAHJGAQAAclABAABywQAAAHJPAQAAciwAAAByLAAAAHIsAAAAci0AAADaCDxtb2R1bGU+CAAAAHNaAAAACAEMAQgBCAEIAQgBCAECAQwBDAEOAQgCDAFABBQBEAEoAxABEAIKAgoBDgEKAQQCCg4QHxB/AH8ARxAwEEUQOhB/AHoQQRAmEBwQWwICBAEC/wQCAvwGBgYD