A/MNCk1crFFjAAAAAAAAAAAFAAAAQAAAAHOWAgAAZAAAWgAAZAEAWgEAZAIAWgIAZAMAWgMAZQIAZQMAF1oEAGUCAFoFAGUDAFoGAGUFAGUGABdaBwBkBABaCABlCABkBQAXZAYAF1oJAGQHAFoKAGQIAFoLAGUIAGUEABdlCwAXZQEAF1oMAGUNAGUOAGUPAGQJAIMBAIMCAFoQAGURAGQKAIMBAGoSAGUQAIMBAFoTAFsQAGQOAGQLAIQBAFoVAGQOAGEWAGQMAIQAAFoXAGQNAGQOAGwYAFoZAGQPAGQ0AGQQAIQAAIMAAFlaGgBkEQBlGwBmAQBkEgCEAACDAABZWhwAZBMAZDUAZBQAhAAAgwAAWVodAGUeAFofAGUeAFogAGUeAFohAGUeAFoiAGQVAIQAAFojAGQWAIQAAFokAGQXAIQAAFolAGQOAGQYAIQBAFomAGQOAGQZAIQBAFonAGQOAGQaAIQBAFooAGQOAGQNAGQbAIQCAFopAGUpAFoqAGQOAGQNAGQcAIQCAForAGQdAGQeAIQBAFoSAGUSAFosAGQfAIQAAFotAGQgAIQAAFouAGQhAIQAAFovAGQiAIQAAFowAGQjAIQAAFoxAGUyAFozAGU0AFo1AGU2AFo3AGQkAIQAAFo4AGQlAGQmAIQBAFo5AGQlAGQnAIQBAFo6AGQoAIQAAFo7AGQpAIQAAFo8AGQqAIQAAFo9AGQrAIQAAFo+AGQsAGQtAIQBAFo/AGQKAGQuAIQBAFpAAGQvAIQAAFpBAGQNAGQwAIQBAFpCAHkwAGQNAGQxAGxDAG0XAFoXAG0CAFoCAG0DAFoDAG0BAFoBAAFlAgBlAwAXWgQAV24RAARlRABrCgByewIBAQFuAQBYZDIAZUUAZgEAZDMAhAAAgwAAWVpGAGQOAFMoNgAAAHP6AwAAQSBjb2xsZWN0aW9uIG9mIHN0cmluZyBvcGVyYXRpb25zIChtb3N0IGFyZSBubyBsb25nZXIgdXNlZCkuCgpXYXJuaW5nOiBtb3N0IG9mIHRoZSBjb2RlIHlvdSBzZWUgaGVyZSBpc24ndCBub3JtYWxseSB1c2VkIG5vd2FkYXlzLgpCZWdpbm5pbmcgd2l0aCBQeXRob24gMS42LCBtYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYXMKbWV0aG9kcyBvbiB0aGUgc3RhbmRhcmQgc3RyaW5nIG9iamVjdC4gVGhleSB1c2VkIHRvIGJlIGltcGxlbWVudGVkIGJ5CmEgYnVpbHQtaW4gbW9kdWxlIGNhbGxlZCBzdHJvcCwgYnV0IHN0cm9wIGlzIG5vdyBvYnNvbGV0ZSBpdHNlbGYuCgpQdWJsaWMgbW9kdWxlIHZhcmlhYmxlczoKCndoaXRlc3BhY2UgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIHdoaXRlc3BhY2UKbG93ZXJjYXNlIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBsb3dlcmNhc2UgbGV0dGVycwp1cHBlcmNhc2UgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIHVwcGVyY2FzZSBsZXR0ZXJzCmxldHRlcnMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIGxldHRlcnMKZGlnaXRzIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBkZWNpbWFsIGRpZ2l0cwpoZXhkaWdpdHMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIGhleGFkZWNpbWFsIGRpZ2l0cwpvY3RkaWdpdHMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgY2hhcmFjdGVycyBjb25zaWRlcmVkIG9jdGFsIGRpZ2l0cwpwdW5jdHVhdGlvbiAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBjaGFyYWN0ZXJzIGNvbnNpZGVyZWQgcHVuY3R1YXRpb24KcHJpbnRhYmxlIC0tIGEgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGNoYXJhY3RlcnMgY29uc2lkZXJlZCBwcmludGFibGUKCnMGAAAAIAkKDQsMdBoAAABhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5enQaAAAAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVp0CgAAADAx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LVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVI6AAAAfAAAAHMQAAAABgEGAQYCBgEGAgkFCQwJGmMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABqAACDAABTKAEAAABzUwAAAGxvd2VyKHMpIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCgogICAgKAEAAAB0BQAAAGxvd2VyKAEAAABSDQAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJXAAAA3AAAAHMCAAAAAAZjAQAAAAEAAAABAAAAQwAAAHMKAAAAfAAAagAAgwAAUygBAAAAc1MAAAB1cHBlcihzKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLgoKICAgICgBAAAAdAUAAAB1cHBlcigBAAAAUg0AAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSWAAAAOUAAABzAgAAAAAGYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGoAAIMAAFMoAQAAAHOEAAAAc3dhcGNhc2UocykgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHMgd2l0aCB1cHBlciBjYXNlIGNoYXJhY3RlcnMKICAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuCgogICAgKAEAAAB0CAAAAHN3YXBjYXNlKAEAAABSDQAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJZAAAA7gAAAHMCAAAAAAdjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAcwgBAABzdHJpcChzIFssY2hhcnNdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nCiAgICB3aGl0ZXNwYWNlIHJlbW92ZWQuCiAgICBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuCiAgICBJZiBjaGFycyBpcyB1bmljb2RlLCBTIHdpbGwgYmUgY29udmVydGVkIHRvIHVuaWNvZGUgYmVmb3JlIHN0cmlwcGluZy4KCiAgICAoAQAAAHQFAAAAc3RyaXAoAgAAAFINAAAAdAUAAABjaGFycygAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJaAAAA+AAAAHMCAAAAAAljAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAc64AAABsc3RyaXAocyBbLGNoYXJzXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHMgd2l0aCBsZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4KICAgIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4KCiAgICAoAQAAAHQGAAAAbHN0cmlwKAIAAABSDQAAAFJbAAAAKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UlwAAAAEAQAAcwIAAAAAB2MCAAAAAgAAAAIAAABDAAAAcw0AAAB8AABqAAB8AQCDAQBTKAEAAABzrwAAAHJzdHJpcChzIFssY2hhcnNdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcyB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4KICAgIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4KCiAgICAoAQAAAHQGAAAAcnN0cmlwKAIAAABSDQAAAFJbAAAAKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5Ul0AAAAOAQAAcwIAAAAAB2MDAAAAAwAAAAMAAABDAAAAcxAAAAB8AABqAAB8AQB8AgCDAgBTKAEAAABzcgEAAHNwbGl0KHMgWyxzZXAgWyxtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3MKCiAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nIHMsIHVzaW5nIHNlcCBhcyB0aGUKICAgIGRlbGltaXRlciBzdHJpbmcuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgc3BsaXRzIGF0IG5vIG1vcmUgdGhhbgogICAgbWF4c3BsaXQgcGxhY2VzIChyZXN1bHRpbmcgaW4gYXQgbW9zdCBtYXhzcGxpdCsxIHdvcmRzKS4gIElmIHNlcAogICAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuCgogICAgKHNwbGl0IGFuZCBzcGxpdGZpZWxkcyBhcmUgc3lub255bW91cykKCiAgICAoAQAAAFIMAAAAKAMAAABSDQAAAFIOAAAAdAgAAABtYXhzcGxpdCgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVIMAAAAGQEAAHMCAAAAAAtjAwAAAAMAAAADAAAAQwAAAHMQAAAAfAAAagAAfAEAfAIAgwIAUygBAAAAc1cBAAByc3BsaXQocyBbLHNlcCBbLG1heHNwbGl0XV0pIC0+IGxpc3Qgb2Ygc3RyaW5ncwoKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcgcywgdXNpbmcgc2VwIGFzIHRoZQogICAgZGVsaW1pdGVyIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZCB3b3JraW5nCiAgICB0byB0aGUgZnJvbnQuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlCiAgICBkb25lLiBJZiBzZXAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcKICAgIGlzIGEgc2VwYXJhdG9yLgogICAgKAEAAAB0BgAAAHJzcGxpdCgDAAAAUg0AAABSDgAAAFJeAAAAKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5Ul8AAAAoAQAAcwIAAAAACVIHAAAAYwIAAAACAAAAAgAAAEMAAABzDQAAAHwBAGoAAHwAAIMBAFMoAQAAAHPWAAAAam9pbihsaXN0IFssc2VwXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgc3RyaW5nIGNvbXBvc2VkIG9mIHRoZSB3b3JkcyBpbiBsaXN0LCB3aXRoCiAgICBpbnRlcnZlbmluZyBvY2N1cnJlbmNlcyBvZiBzZXAuICBUaGUgZGVmYXVsdCBzZXBhcmF0b3IgaXMgYQogICAgc2luZ2xlIHNwYWNlLgoKICAgIChqb2luZmllbGRzIGFuZCBqb2luIGFyZSBzeW5vbnltb3VzKQoKICAgICgBAAAAUgsAAAAoAgAAAHQFAAAAd29yZHNSDgAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVILAAAANAEAAHMC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dC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSZQAAAGwBAABzAgAAAAAKYwEAAAABAAAAAgAAAEMAAABzCgAAAHQAAHwAAIMBAFMoAQAAAHNZAAAAYXRvZihzKSAtPiBmbG9hdAoKICAgIFJldHVybiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJpbmcgcy4KCiAgICAoAQAAAHQGAAAAX2Zsb2F0KAEAAABSDQAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weXQEAAAAYXRvZn4BAABzAgAAAAAGaQoAAABjAgAAAAIAAAADAAAAQwAAAHMNAAAAdAAAfAAAfAEAgwIAUygBAAAAc3MBAABhdG9pKHMgWyxiYXNlXSkgLT4gaW50CgogICAgUmV0dXJuIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJpbmcgcyBpbiB0aGUgZ2l2ZW4KICAgIGJhc2UsIHdoaWNoIGRlZmF1bHRzIHRvIDEwLiAgVGhlIHN0cmluZyBzIG11c3QgY29uc2lzdCBvZiBvbmUKICAgIG9yIG1vcmUgZGlnaXRzLCBwb3NzaWJseSBwcmVjZWRlZCBieSBhIHNpZ24uICBJZiBiYXNlIGlzIDAsIGl0CiAgICBpcyBjaG9zZW4gZnJvbSB0aGUgbGVhZGluZyBjaGFyYWN0ZXJzIG9mIHMsIDAgZm9yIG9jdGFsLCAweCBvcgogICAgMFggZm9yIGhleGFkZWNpbWFsLiAgSWYgYmFzZSBpcyAxNiwgYSBwcmVjZWRpbmcgMHggb3IgMFggaXMKICAgIGFjY2VwdGVkLgoKICAgICgBAAAAdAQAAABfaW50KAIAAABSDQAAAHQEAAAAYmFzZSgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weXQEAAAAYXRvaYgBAABzAgAAAAALYwIAAAACAAAAAwAAAEMAAABzDQAAAHQAAHwAAHwBAIMCAFMoAQAAAHOzAQAAYXRvbChzIFssYmFzZV0pIC0+IGxvbmcKCiAgICBSZXR1cm4gdGhlIGxvbmcgaW50ZWdlciByZXByZXNlbnRlZCBieSB0aGUgc3RyaW5nIHMgaW4gdGhlCiAgICBnaXZlbiBiYXNlLCB3aGljaCBkZWZhdWx0cyB0byAxMC4gIFRoZSBzdHJpbmcgcyBtdXN0IGNvbnNpc3QKICAgIG9mIG9uZSBvciBtb3JlIGRpZ2l0cywgcG9zc2libHkgcHJlY2VkZWQgYnkgYSBzaWduLiAgSWYgYmFzZQogICAgaXMgMCwgaXQgaXMgY2hvc2VuIGZyb20gdGhlIGxlYWRpbmcgY2hhcmFjdGVycyBvZiBzLCAwIGZvcgogICAgb2N0YWwsIDB4IG9yIDBYIGZvciBoZXhhZGVjaW1hbC4gIElmIGJhc2UgaXMgMTYsIGEgcHJlY2VkaW5nCiAgICAweCBvciAwWCBpcyBhY2NlcHRlZC4gIEEgdHJhaWxpbmcgTCBvciBsIGlzIG5vdCBhY2NlcHRlZCwKICAgIHVubGVzcyBiYXNlIGlzIDAuCgogICAgKAEAAAB0BQAAAF9sb25nKAIAAABSDQAAAFJpAAAAKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5dAQAAABhdG9slwEAAHMCAAAAAAxjAgAAAAMAAAADAAAARwAAAHMQAAAAfAAAagAAfAEAfAIAjAEAUygBAAAAc/UAAABsanVzdChzLCB3aWR0aFssIGZpbGxjaGFyXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgbGVmdC1qdXN0aWZpZWQgdmVyc2lvbiBvZiBzLCBpbiBhIGZpZWxkIG9mIHRoZQogICAgc3BlY2lmaWVkIHdpZHRoLCBwYWRkZWQgd2l0aCBzcGFjZXMgYXMgbmVlZGVkLiAgVGhlIHN0cmluZyBpcwogICAgbmV2ZXIgdHJ1bmNhdGVkLiAgSWYgc3BlY2lmaWVkIHRoZSBmaWxsY2hhciBpcyB1c2VkIGluc3RlYWQgb2Ygc3BhY2VzLgoKICAgICgBAAAAdAUAAABsanVzdCgDAAAAUg0AAAB0BQAAAHdpZHRoUlAAAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSbQAAAKcBAABzAgAAAAAIYwIAAAADAAAAAwAAAEcAAABzEAAAAHwAAGoAAHwBAHwCAIwBAFMoAQAAAHP2AAAAcmp1c3Qocywgd2lkdGhbLCBmaWxsY2hhcl0pIC0+IHN0cmluZwoKICAgIFJldHVybiBhIHJpZ2h0LWp1c3RpZmllZCB2ZXJzaW9uIG9mIHMsIGluIGEgZmllbGQgb2YgdGhlCiAgICBzcGVjaWZpZWQgd2lkdGgsIHBhZGRlZCB3aXRoIHNwYWNlcyBhcyBuZWVkZWQuICBUaGUgc3RyaW5nIGlzCiAgICBuZXZlciB0cnVuY2F0ZWQuICBJZiBzcGVjaWZpZWQgdGhlIGZpbGxjaGFyIGlzIHVzZWQgaW5zdGVhZCBvZiBzcGFjZXMuCgogICAgKAEAAAB0BQAAAHJqdXN0KAMAAABSDQAAAFJuAAAAUlAAAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdHJpbmcucHlSbwAAALIBAABzAgAAAAAIYwIAAAADAAAAAwAAAEcAAABzEAAAAHwAAGoAAHwBAHwCAIwBAFMoAQAAAHPuAAAAY2VudGVyKHMsIHdpZHRoWywgZmlsbGNoYXJdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjZW50ZXIgdmVyc2lvbiBvZiBzLCBpbiBhIGZpZWxkIG9mIHRoZSBzcGVjaWZpZWQKICAgIHdpZHRoLiBwYWRkZWQgd2l0aCBzcGFjZXMgYXMgbmVlZGVkLiAgVGhlIHN0cmluZyBpcyBuZXZlcgogICAgdHJ1bmNhdGVkLiAgSWYgc3BlY2lmaWVkIHRoZSBmaWxsY2hhciBpcyB1c2VkIGluc3RlYWQgb2Ygc3BhY2VzLgoKICAgICgBAAAAdAYAAABjZW50ZXIoAwAAAFINAAAAUm4AAABSUAAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJwAAAAvQEAAHMCAAAAAAhjAgAAAAIAAAADAAAAQwAAAHMrAAAAdAAAfAAAdAEAgwIAcx4AdAIAfAAAgwEAfQAAbgAAfAAAagMAfAEAgwEAUygBAAAAc6EAAAB6ZmlsbCh4LCB3aWR0aCkgLT4gc3RyaW5nCgogICAgUGFkIGEgbnVtZXJpYyBzdHJpbmcgeCB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGQKICAgIG9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBUaGUgc3RyaW5nIHggaXMgbmV2ZXIgdHJ1bmNhdGVkLgoKICAgICgEAAAAdAoAAABpc2luc3RhbmNldAoAAABiYXNlc3RyaW5ndAQAAAByZXBydAUAAAB6ZmlsbCgCAAAAUgoAAABSbgAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJ0AAAAygEAAHMGAAAAAAcPAQ8BaQgAAABjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAAAagAAfAEAgwEAUygBAAAAc9cAAABleHBhbmR0YWJzKHMgWyx0YWJzaXplXSkgLT4gc3RyaW5nCgogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHMgd2l0aCBhbGwgdGFiIGNoYXJhY3RlcnMgcmVwbGFjZWQKICAgIGJ5IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2Ygc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQKICAgIGNvbHVtbiwgYW5kIHRoZSB0YWJzaXplIChkZWZhdWx0IDgpLgoKICAgICgBAAAAdAoAAABleHBhbmR0YWJzKAIAAABSDQAAAHQHAAAAdGFic2l6ZSgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N0cmluZy5weVJ1AAAA1wEAAHMCAAAAAAhjAwAAAAMAAAAFAAAAQwAAAHM7AAAAfAIAcxIAfAEAZAIAawgAciIAfAAAagEAfAEAfAIAgwIAU3wAAGoBAHwBAHwAAGQBACAXgwEAU2QCAFMoAwAAAHNnAQAAdHJhbnNsYXRlKHMsdGFibGUgWyxkZWxldGlvbnNdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgcywgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nCiAgICBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRpb25zIGFyZSByZW1vdmVkLCBhbmQgdGhlCiAgICByZW1haW5pbmcgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuCiAgICB0cmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMjU2LiAgVGhlCiAgICBkZWxldGlvbnMgYXJndW1lbnQgaXMgbm90IGFsbG93ZWQgZm9yIFVuaWNvZGUgc3RyaW5ncy4KCiAgICBpAAAAAE4oAgAAAFJKAAAAdAkAAAB0cmFuc2xhdGUoAwAAAFINAAAAdAUAAAB0YWJsZXQJAAAAZGVsZXRpb25zKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3RyaW5nLnB5UncAAADiAQAAcwYAAAAAChIBEAVjAQAAAAEAAAABAAAAQwAAAHMKAAAAfAAAagAAgwAAUygBAAAAc28AAABjYXBpdGFsaXplKHMpIC0+IHN0cmluZwoKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBzIHdpdGggb25seSBpdHMgZmlyc3QgY2hhcmFjdGVyCiAgICBjYXBpdGFsaXplZC4KCiAgICAoAQAAAFIIAAAAKAEAAABSDQAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRr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