VQ0NCgAAAADJuIxjcxwAAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABziAEAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBWQBZAJsBloFZAFkAmwHWgdkAWQDbAhtCVoJAQBkAWQEbAptC1oLAQBkAWQFbAxtDVoNAQBkBmQHbA5tD1oPAQBkAWQIbBBtEVoRbRJaEgEAZAFkCWwTbRRaFG0VWhUBAGQBZAJsFloXZAFkCmwYbRlaGQEAZAFkC2wabRtaG20cWhwBAGQBZAxsHW0eWh4BAGQGZA1sH20gWiABAGUhWiJkDmQPZBBkEWQSZBNkFGQVZwhaI2URcuZlI6AkZBahAQEAZRdqJWomWiZkAlonZBdaKGQYZwFaKUcAZBlkGoQAZBqDAloqRwBkG2QchABkHGUqgwNaK2UqaixaLWURkAFyLGUraixaLmQdZB6EAFovZB9kDoQAWjBlBWoxajBqAGUwXwBlIKAyZQVqMWozoQFaNEcAZCBkEYQAZBFlNIMDWjNkIWQihABaNWUBajZmAWQjZCSEAVo3ZSCgOKEAAQBkAlMAKSV6QEV4dGVuc2lvbnMgdG8gdGhlICdkaXN0dXRpbHMnIGZvciBsYXJnZSBvciBjb21wbGV4IGRpc3RyaWJ1dGlvbnPpAAAAAE4pAdoURGlzdHV0aWxzT3B0aW9uRXJyb3IpAdoMY29udmVydF9wYXRoqQHaC2ZubWF0Y2hjYXNl6QEAAAApAdocU2V0dXB0b29sc0RlcHJlY2F0aW9uV2FybmluZykC2gNQWTPaDHN0cmluZ190eXBlcykC2gZmaWx0ZXLaA21hcCkB2glFeHRlbnNpb24pAtoMRGlzdHJpYnV0aW9u2gdGZWF0dXJlKQHaB1JlcXVpcmUpAdoGbW9ua2V52gVzZXR1cHINAAAAcg4AAADaB0NvbW1hbmRyDAAAAHIPAAAAcgcAAADaDWZpbmRfcGFja2FnZXPaF2ZpbmRfbmFtZXNwYWNlX3BhY2thZ2VzVHoNbGliMnRvMy5maXhlc2MAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzQgAAAGUAWgFkAFoCZAFaA2UEZA5kBWQGhAGDAVoFZQRkB2QIhACDAVoGZQdkCWQKhACDAVoIZQdkC2QMhACDAVoJZA1TACkP2g1QYWNrYWdlRmluZGVyekkKICAgIEdlbmVyYXRlIGEgbGlzdCBvZiBhbGwgUHl0aG9uIHBhY2thZ2VzIGZvdW5kIHdpdGhpbiBhIGRpcmVjdG9yeQogICAg2gEuqQCpAdoBKmMEAAAAAAAAAAAAAAAEAAAABwAAAEMAAABzJgAAAHQAfACgAXQCfAGDAXwAagNkA3wCngKOAHwAagN8A44AoQODAVMAKQRhCQMAAFJldHVybiBhIGxpc3QgYWxsIFB5dGhvbiBwYWNrYWdlcyBmb3VuZCB3aXRoaW4gZGlyZWN0b3J5ICd3aGVyZScKCiAgICAgICAgJ3doZXJlJyBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgcGFja2FnZXMuICBJdAogICAgICAgIHNob3VsZCBiZSBzdXBwbGllZCBhcyBhICJjcm9zcy1wbGF0Zm9ybSIgKGkuZS4gVVJMLXN0eWxlKSBwYXRoOyBpdCB3aWxsCiAgICAgICAgYmUgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbCBwYXRoIHN5bnRheC4KCiAgICAgICAgJ2V4Y2x1ZGUnIGlzIGEgc2VxdWVuY2Ugb2YgcGFja2FnZSBuYW1lcyB0byBleGNsdWRlOyAnKicgY2FuIGJlIHVzZWQKICAgICAgICBhcyBhIHdpbGRjYXJkIGluIHRoZSBuYW1lcywgc3VjaCB0aGF0ICdmb28uKicgd2lsbCBleGNsdWRlIGFsbAogICAgICAgIHN1YnBhY2thZ2VzIG9mICdmb28nIChidXQgbm90ICdmb28nIGl0c2VsZikuCgogICAgICAgICdpbmNsdWRlJyBpcyBhIHNlcXVlbmNlIG9mIHBhY2thZ2UgbmFtZXMgdG8gaW5jbHVkZS4gIElmIGl0J3MKICAgICAgICBzcGVjaWZpZWQsIG9ubHkgdGhlIG5hbWVkIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQuICBJZiBpdCdzIG5vdAogICAgICAgIHNwZWNpZmllZCwgYWxsIGZvdW5kIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQuICAnaW5jbHVkZScgY2FuIGNvbnRhaW4KICAgICAgICBzaGVsbCBzdHlsZSB3aWxkY2FyZCBwYXR0ZXJucyBqdXN0IGxpa2UgJ2V4Y2x1ZGUnLgogICAgICAgINoIZXpfc2V0dXD6DCpfX3B5Y2FjaGVfXykCchoAAAByGwAAACkE2gRsaXN02hNfZmluZF9wYWNrYWdlc19pdGVycgMAAADaDV9idWlsZF9maWx0ZXIpBNoDY2xz2gV3aGVyZdoHZXhjbHVkZdoHaW5jbHVkZXIXAAAAchcAAAD6Ny90bXAvcGlwLXVucGFja2VkLXdoZWVsLTJvX3d4NXdqL3NldHVwdG9vbHMvX19pbml0X18ucHnaBGZpbmQ0AAAAcwoAAAAAEgYBBgEMAQj9ehJQYWNrYWdlRmluZGVyLmZpbmRjBAAAAAAAAAAAAAAADAAAAAYAAABjAAAAc6AAAAB0AGoBfAFkAWQCjQJEAF2MXAN9BH0FfQZ8BWQDZAOFAhkAfQdnAHwFZANkA4UCPAB8B0QAXWR9CHQAagKgA3wEfAihAn0JdABqAqAEfAl8AaECfQp8CqAFdABqAmoGZAShAn0LZAR8CGsGczR8AKAHfAmhAXN4cTR8A3wLgwFyjnwCfAuDAXOOfAtWAAEAfAWgCHwIoQEBAHE0cQ5kA1MAKQV6eQogICAgICAgIEFsbCB0aGUgcGFja2FnZXMgZm91bmQgaW4gJ3doZXJlJyB0aGF0IHBhc3MgdGhlICdpbmNsdWRlJyBmaWx0ZXIsIGJ1dAogICAgICAgIG5vdCB0aGUgJ2V4Y2x1ZGUnIGZpbHRlci4KICAgICAgICBUqQHaC2ZvbGxvd2xpbmtzTnIWAAAAKQnaAm9z2gR3YWxr2gRwYXRo2gRqb2lu2gdyZWxwYXRo2gdyZXBsYWNl2gNzZXDaE19sb29rc19saWtlX3BhY2thZ2XaBmFwcGVuZCkMch8AAAByIAAAAHIhAAAAciIAAADaBHJvb3TaBGRpcnPaBWZpbGVzWghhbGxfZGlyc9oDZGly2glmdWxsX3BhdGjaCHJlbF9wYXRo2gdwYWNrYWdlchcAAAByFwAAAHIjAAAAch0AAABLAAAAcxgAAAAABhgCDAEMAggBDgEOARADEgECAxABBgR6IVBhY2thZ2VGaW5kZXIuX2ZpbmRfcGFja2FnZXNfaXRlcmMBAAAAAAAAAAAAAAABAAAABgAAAEMAAABzFgAAAHQAagGgAnQAagGgA3wAZAGhAqEBUwApAnolRG9lcyBhIGRpcmVjdG9yeSBsb29rIGxpa2UgYSBwYWNrYWdlP3oLX19pbml0X18ucHkpBHInAAAAcikAAADaBmlzZmlsZXIqAAAAqQFyKQAAAHIXAAAAchcAAAByIwAAAHIuAAAAZwAAAHMCAAAAAAN6IVBhY2thZ2VGaW5kZXIuX2xvb2tzX2xpa2VfcGFja2FnZWMAAAAAAAAAAAAAAAABAAAAAwAAAAcAAABzDAAAAIcAZgFkAWQChAhTACkDeo8KICAgICAgICBHaXZlbiBhIGxpc3Qgb2YgcGF0dGVybnMsIHJldHVybiBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSB0cnVlIG9ubHkgaWYKICAgICAgICB0aGUgaW5wdXQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YgdGhlIHBhdHRlcm5zLgogICAgICAgIGMBAAAAAAAAAAAAAAABAAAABAAAABMAAABzFgAAAHQAhwBmAWQBZAKECIgBRACDAYMBUwApA05jAQAAAAAAAAAAAAAAAgAAAAUAAAAzAAAAcxoAAAB8AF0SfQF0AIgAfAFkAI0CVgABAHECZAFTACkCKQHaA3BhdE5yBAAAACkC2gIuMHI5AAAAqQHaBG5hbWVyFwAAAHIjAAAA2gk8Z2VuZXhwcj5yAAAAcwQAAAAEAAIAekBQYWNrYWdlRmluZGVyLl9idWlsZF9maWx0ZXIuPGxvY2Fscz4uPGxhbWJkYT4uPGxvY2Fscz4uPGdlbmV4cHI+KQHaA2FueXI7AAAAqQHaCHBhdHRlcm5zcjsAAAByIwAAANoIPGxhbWJkYT5yAAAA8wAAAAB6LVBhY2thZ2VGaW5kZXIuX2J1aWxkX2ZpbHRlci48bG9jYWxzPi48bGFtYmRhPnIXAAAAcj8AAAByFwAAAHI/AAAAciMAAAByHgAAAGwAAABzAgAAAAAGehtQYWNrYWdlRmluZGVyLl9idWlsZF9maWx0ZXJOKQNyFgAAAHIXAAAAchgAAAApCtoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX9oLY2xhc3NtZXRob2RyJAAAAHIdAAAA2gxzdGF0aWNtZXRob2RyLgAAAHIeAAAAchcAAAByFwAAAHIXAAAAciMAAAByFQAAAC8AAABzEgAAAAgBBAQCAQwWAgEKGwIBCgQCAXIVAAAAYwAAAAAAAAAAAAAAAAAAAAADAAAAQAAAAHMYAAAAZQBaAWQAWgJlA2QBZAKEAIMBWgRkA1MAKQTaE1BFUDQyMFBhY2thZ2VGaW5kZXJjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJOVHIXAAAAcjgAAAByFwAAAHIXAAAAciMAAAByLgAAAHYAAABzAgAAAAACeidQRVA0MjBQYWNrYWdlRmluZGVyLl9sb29rc19saWtlX3BhY2thZ2VOKQVyQwAAAHJEAAAAckUAAABySAAAAHIuAAAAchcAAAByFwAAAHIXAAAAciMAAABySQAAAHUAAABzBAAAAAgBAgFySQAAAGMBAAAAAAAAAAAAAAACAAAABgAAAEMAAABzQAAAAHQAagGgAnQDZAFkAoQAfACgBKEARACDAYMBoQF9AXwBagVkA2QEjQEBAHwBagZyPHwBoAd8AWoGoQEBAGQAUwApBU5jAQAAAAAAAAAAAAAAAwAAAAMAAABzAAAAcyIAAAB8AF0aXAJ9AX0CfAFkAGsGcgJ8AXwCZgJWAAEAcQJkAVMAKQIpAloQZGVwZW5kZW5jeV9saW5rc9oOc2V0dXBfcmVxdWlyZXNOchcAAAApA3I6AAAA2gFr2gF2chcAAAByFwAAAHIjAAAAcj0AAACEAAAAcwYAAAAEAQYBCP96Kl9pbnN0YWxsX3NldHVwX3JlcXVpcmVzLjxsb2NhbHM+LjxnZW5leHByPlQpAVoUaWdub3JlX29wdGlvbl9lcnJvcnMpCNoJZGlzdHV0aWxz2gRjb3Jlcg0AAADaBGRpY3TaBWl0ZW1z2hJwYXJzZV9jb25maWdfZmlsZXNySgAAAFoQZmV0Y2hfYnVpbGRfZWdncykC2gVhdHRyc9oEZGlzdHIXAAAAchcAAAByIwAAANoXX2luc3RhbGxfc2V0dXBfcmVxdWlyZXOBAAAAcwwAAAAAAw4BBv8KBQwBBgFyVAAAAGMAAAAAAAAAAAAAAAABAAAAAwAAAEsAAABzFgAAAHQAfACDAQEAdAFqAmoDZgB8AI4BUwCpAU4pBHJUAAAAck0AAAByTgAAAHIRAAAAKQFyUgAAAHIXAAAAchcAAAByIwAAAHIRAAAAjgAAAHMEAAAAAAIIAWMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzOgAAAGUAWgFkAFoCZQNqBFoEZAFaBWQCZAOEAFoGZAxkBWQGhAFaB2QHZAiEAFoIZA1kCmQLhAFaCWQEUwApDnISAAAARmMCAAAAAAAAAAAAAAADAAAABAAAAEsAAABzHgAAAHQAoAF8AHwBoQIBAHQCfACDAaADfAKhAQEAZAFTACkCemoKICAgICAgICBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgZm9yIGRpc3QsIHVwZGF0aW5nCiAgICAgICAgdmFycyhzZWxmKSB3aXRoIGFueSBrZXl3b3JkIHBhcmFtZXRlcnMuCiAgICAgICAgTikE2ghfQ29tbWFuZNoIX19pbml0X1/aBHZhcnPaBnVwZGF0ZSkD2gRzZWxmclMAAADaAmt3chcAAAByFwAAAHIjAAAAclcAAACeAAAAcwQAAAAABQwBehBDb21tYW5kLl9faW5pdF9fTmMEAAAAAAAAAAAAAAAFAAAABQAAAEMAAABzQgAAAHQAfAB8AYMCfQR8BGQAawhyInQBfAB8AXwDgwMBAHwDUwB0AnwEdAODAnM+dARkAXwBfAJ8BGYDFgCDAYIBfARTACkCTnocJyVzJyBtdXN0IGJlIGEgJXMgKGdvdCBgJXNgKSkF2gdnZXRhdHRy2gdzZXRhdHRy2gppc2luc3RhbmNlcgkAAAByAgAAACkFcloAAADaBm9wdGlvbtoEd2hhdNoHZGVmYXVsdNoDdmFschcAAAByFwAAAHIjAAAA2hJfZW5zdXJlX3N0cmluZ2xpa2WmAAAAcxIAAAAAAQoBCAEMAQQBCgEEAQj/BgJ6GkNvbW1hbmQuX2Vuc3VyZV9zdHJpbmdsaWtlYwIAAAAAAAAAAAAAAAQAAAAHAAAAQwAAAHNwAAAAdAB8AHwBgwJ9AnwCZAFrCHIWZAFTAHQBfAJ0AoMCcjZ0A3wAfAF0BKAFZAJ8AqECgwMBAG42dAF8AnQGgwJyVHQHZANkBIQAfAJEAIMBgwF9A24EZAV9A3wDc2x0CGQGfAF8AmYCFgCDAYIBZAFTACkHeu5FbnN1cmUgdGhhdCAnb3B0aW9uJyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4gIElmICdvcHRpb24nIGlzCiAgICAgICAgY3VycmVudGx5IGEgc3RyaW5nLCB3ZSBzcGxpdCBpdCBlaXRoZXIgb24gLyxccyovIG9yIC9ccysvLCBzbwogICAgICAgICJmb28gYmFyIGJheiIsICJmb28sYmFyLGJheiIsIGFuZCAiZm9vLCAgIGJhciBiYXoiIGFsbCBiZWNvbWUKICAgICAgICBbImZvbyIsICJiYXIiLCAiYmF6Il0uCiAgICAgICAgTnoILFxzKnxccytjAQAAAAAAAAAAAAAAAgAAAAQAAABzAAAAcxgAAAB8AF0QfQF0AHwBdAGDAlYAAQBxAmQAUwByVQAAACkCcl4AAAByCQAAACkCcjoAAAByTAAAAHIXAAAAchcAAAByIwAAAHI9AAAAvQAAAHMEAAAABAACAHotQ29tbWFuZC5lbnN1cmVfc3RyaW5nX2xpc3QuPGxvY2Fscz4uPGdlbmV4cHI+RnonJyVzJyBtdXN0IGJlIGEgbGlzdCBvZiBzdHJpbmdzIChnb3QgJXIpKQlyXAAAAHJeAAAAcgkAAAByXQAAANoCcmXaBXNwbGl0chwAAADaA2FsbHICAAAAKQRyWgAAAHJfAAAAcmIAAADaAm9rchcAAAByFwAAAHIjAAAA2hJlbnN1cmVfc3RyaW5nX2xpc3SwAAAAcxwAAAAABgoBCAEEAQoBFgIKARQCBAEEAQIBAgEG/wL/ehpDb21tYW5kLmVuc3VyZV9zdHJpbmdfbGlzdHIBAAAAYwMAAAAAAAAAAAAAAAUAAAAFAAAASwAAAHMgAAAAdACgAXwAfAF8AqEDfQR0AnwEgwGgA3wDoQEBAHwEUwByVQAAACkEclYAAADaFHJlaW5pdGlhbGl6ZV9jb21tYW5kclgAAAByWQAAACkFcloAAADaB2NvbW1hbmTaEnJlaW5pdF9zdWJjb21tYW5kc3JbAAAA2gNjbWRyFwAAAHIXAAAAciMAAAByaQAAAMUAAABzBgAAAAABDgEOAXocQ29tbWFuZC5yZWluaXRpYWxpemVfY29tbWFuZCkBTikBcgEAAAApCnJDAAAAckQAAAByRQAAAHJWAAAAckYAAABaGmNvbW1hbmRfY29uc3VtZXNfYXJndW1lbnRzclcAAAByYwAAAHJoAAAAcmkAAAByFwAAAHIXAAAAchcAAAByIwAAAHISAAAAmQAAAHMMAAAACAEGAgQCCAgKCggVYwEAAAAAAAAAAAAAAAIAAAAFAAAAQwAAAHMmAAAAZAFkAoQAdABqAXwAZANkBI0CRACDAX0BdAJ0AGoDagR8AYMCUwApBXolCiAgICBGaW5kIGFsbCBmaWxlcyB1bmRlciAncGF0aCcKICAgIGMBAAAAAAAAAAAAAAAFAAAABgAAAHMAAABzLAAAAHwAXSRcA30BfQJ9A3wDRABdFH0EdABqAaACfAF8BKECVgABAHEQcQJkAFMAclUAAAApA3InAAAAcikAAAByKgAAACkFcjoAAADaBGJhc2VyMQAAAHIyAAAA2gRmaWxlchcAAAByFwAAAHIjAAAAcj0AAADPAAAAcwgAAAAEAggBBgAC/nojX2ZpbmRfYWxsX3NpbXBsZS48bG9jYWxzPi48Z2VuZXhwcj5UciUAAAApBXInAAAAcigAAAByCgAAAHIpAAAAcjcAAAApAnIpAAAA2gdyZXN1bHRzchcAAAByFwAAAHIjAAAA2hBfZmluZF9hbGxfc2ltcGxlywAAAHMIAAAAAAQGAgz+BgVycAAAAGMBAAAAAAAAAAAAAAADAAAABAAAAEMAAABzNgAAAHQAfACDAX0BfAB0AWoCawJyLnQDagR0AWoFagZ8AGQBjQJ9AnQHfAJ8AYMCfQF0CHwBgwFTACkCeowKICAgIEZpbmQgYWxsIGZpbGVzIHVuZGVyICdkaXInIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgZnVsbCBmaWxlbmFtZXMuCiAgICBVbmxlc3MgZGlyIGlzICcuJywgcmV0dXJuIGZ1bGwgZmlsZW5hbWVzIHdpdGggZGlyIHByZXBlbmRlZC4KICAgICkB2gVzdGFydCkJcnAAAAByJwAAANoGY3VyZGly2glmdW5jdG9vbHPaB3BhcnRpYWxyKQAAAHIrAAAAcgsAAAByHAAAACkDcjMAAAByMgAAAFoIbWFrZV9yZWxyFwAAAHIXAAAAciMAAADaB2ZpbmRhbGzXAAAAcwoAAAAABQgBCgESAQoBcnUAAAApOXJGAAAAcicAAADaA3N5c3JzAAAA2g5kaXN0dXRpbHMuY29yZXJNAAAA2hJkaXN0dXRpbHMuZmlsZWxpc3RyZAAAANoQZGlzdHV0aWxzLmVycm9yc3ICAAAA2g5kaXN0dXRpbHMudXRpbHIDAAAA2gdmbm1hdGNocgUAAABaFF9kZXByZWNhdGlvbl93YXJuaW5ncgcAAABaFXNldHVwdG9vbHMuZXh0ZXJuLnNpeHIIAAAAcgkAAABaG3NldHVwdG9vbHMuZXh0ZXJuLnNpeC5tb3Zlc3IKAAAAcgsAAABaEnNldHVwdG9vbHMudmVyc2lvbtoKc2V0dXB0b29sc1oUc2V0dXB0b29scy5leHRlbnNpb25yDAAAAFoPc2V0dXB0b29scy5kaXN0cg0AAAByDgAAAFoSc2V0dXB0b29scy5kZXBlbmRzcg8AAADaAHIQAAAA2gR0eXBl2g1fX21ldGFjbGFzc19f2gdfX2FsbF9fci8AAADaB3ZlcnNpb27aC19fdmVyc2lvbl9fWhZib290c3RyYXBfaW5zdGFsbF9mcm9tWhRydW5fMnRvM19vbl9kb2N0ZXN0c1oWbGliMnRvM19maXhlcl9wYWNrYWdlc3IVAAAAckkAAAByJAAAAHITAAAAchQAAAByVAAAAHIRAAAAck4AAABaDWdldF91bnBhdGNoZWRyEgAAAHJWAAAAcnAAAABycgAAAHJ1AAAAWglwYXRjaF9hbGxyFwAAAHIXAAAAchcAAAByIwAAANoIPG1vZHVsZT4BAAAAc1wAAAAEAggBCAEIAQgBCAEIAQwBDAEMAgwCEAEQAggBDAEQAQwBDAIEBAIAAgACAAIAAgACAQIBAv0EBgQBCgIIAgQEBAIGAw5GEAYGAgYBBgMIDQgFDAMOAxAyCAwODQ==