Mw0NChZae2MndwAA4wAAAAAAAAAAAAAAAAwAAABAAAAAc8YCAABkAGQBbABaAGQAZAFsAVoBZABkAWwCWgJkAGQBbANaA2QAZAFsBFoEZABkAWwFWgVkAGQBbAZaBmQAZAFsB1oHZABkAWwIWghkAGQBbAlaCWQAZAFsCloKZABkAWwLWgtkAGQBbAxaDGQAZAFsDVoNZABkAWwOWg5kAmQDbA9tEFoQbRFaEQEAZAJkBGwSbRNaE20UWhQBAGQCZAVsFW0WWhZtF1oXbRhaGAEAZAJkBmwZbRpaGm0bWhsBAGQCZAdsHG0dWh1tHloeAQBkAmQIbBFtH1ofbSBaIAEAZABkCWwhbSJaIgEAZABkCmwjbSRaJAEAZABkC2wlbSZaJgEAZABkDGwMbSdaJwEAZABkDWwobSlaKW0qWiptK1orbSxaLAEAZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZwxaLUcAZBpkEYQAZBFlLoMDWi9HAGQbZByEAGQcgwJaMEcAZB1kHoQAZB6DAloxRwBkH2QghABkIGUxgwNaMkcAZCFkIoQAZCJlM4MDWjRHAGQjZCSEAGQkZTSDA1o1RwBkJWQmhABkJoMCWjZHAGQnZCiEAGQoZTZlN4MEWjhHAGQpZCqEAGQqZQdqOYMDWjpHAGQrZCyEAGQsgwJaO0cAZC1kDoQAZA6DAlo8RwBkLmQPhABkD2UmgwNaPUcAZC9kMIQAZDCDAlo+RwBkMWQyhABkMoMCWj9HAGQzZDSEAGQ0gwJaQGUXRwBkNWQ2hABkNmUWZT2DBIMBWkFHAGQ3ZDiEAGQ4ZTyDA1pCZDlkEoQAWkNkOmQThABaRGURah9kO5wBZDxkFoQEWkVkPWQZhABaRmUsZTVlOGYCGQBkO5wBZD5kFIQEWkdkP2QVhABaSGRAZBiEAFpJZSplSmUpZUoZAGYCGQBkO5wBZEFkF4QEWktkQmRDhABaTGREZEWEAFpNZAFTAClG6QAAAABO6QEAAAApAtoJX2FkYXB0ZXJz2gVfbWV0YSkC2hRGcmVlemFibGVEZWZhdWx0RGljdNoEUGFpcikD2gpOdWxsRmluZGVy2gdpbnN0YWxs2gxweXB5X3BhcnRpYWwpAtoMbWV0aG9kX2NhY2hl2glwYXNzX25vbmUpAtoPYWx3YXlzX2l0ZXJhYmxl2g91bmlxdWVfZXZlcnNlZW4pAtoPUGFja2FnZU1ldGFkYXRh2gpTaW1wbGVQYXRoKQHaCHN1cHByZXNzKQHaDWltcG9ydF9tb2R1bGUpAdoOTWV0YVBhdGhGaW5kZXIpAdoHc3Rhcm1hcCkE2gRMaXN02gdNYXBwaW5n2ghPcHRpb25hbNoFVW5pb27aDERpc3RyaWJ1dGlvbtoSRGlzdHJpYnV0aW9uRmluZGVycg4AAADaFFBhY2thZ2VOb3RGb3VuZEVycm9y2gxkaXN0cmlidXRpb27aDWRpc3RyaWJ1dGlvbnPaDGVudHJ5X3BvaW50c9oFZmlsZXPaCG1ldGFkYXRh2hZwYWNrYWdlc19kaXN0cmlidXRpb25z2ghyZXF1aXJlc9oHdmVyc2lvbmMAAAAAAAAAAAAAAAADAAAAQAAAAHMkAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRlBWQEZAWEAIMBWgZkBlMAKQdyGgAAAHoaVGhlIHBhY2thZ2Ugd2FzIG5vdCBmb3VuZC5jAQAAAAAAAAABAAAAAgAAAEMAAABzDAAAAGQBfABqAJsAnQJTACkCTnoiTm8gcGFja2FnZSBtZXRhZGF0YSB3YXMgZm91bmQgZm9yICkB2gRuYW1lKQHaBHNlbGapAHIlAAAA+owvaG9tZS91ZXRsaHIvRG9jdW1lbnRzL1Nlcm1vUGxvdF9iYWNrZW5kL2RyYWZ0X1NSQU1fYmxhY2tib3gvVUVUUlZfRVNvQ19tcHc4L3ZlbnYvbGliL3B5dGhvbjMuNi9zaXRlLXBhY2thZ2VzL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5wedoHX19zdHJfXzYAAABzAgAAAAABehxQYWNrYWdlTm90Rm91bmRFcnJvci5fX3N0cl9fYwEAAAAAAAAAAgAAAAEAAABDAAAAcwwAAAB8AGoAXAF9AXwBUwApAU4pAdoEYXJncykCciQAAAByIwAAAHIlAAAAciUAAAByJgAAAHIjAAAAOQAAAHMEAAAAAAIIAXoZUGFja2FnZU5vdEZvdW5kRXJyb3IubmFtZU4pB9oIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX3InAAAA2ghwcm9wZXJ0eXIjAAAAciUAAAByJQAAAHIlAAAAciYAAAByGgAA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BIQAfAJ0CIMAgwFEAIMBgwF9A3QJagp8A4MBagtmAHwAjgFTACkFYYsCAABSZXR1cm4gRW50cnlQb2ludCBvYmplY3RzIGZvciBhbGwgaW5zdGFsbGVkIHBhY2thZ2VzLgoKICAgIFBhc3Mgc2VsZWN0aW9uIHBhcmFtZXRlcnMgKGdyb3VwIG9yIG5hbWUpIHRvIGZpbHRlciB0aGUKICAgIHJlc3VsdCB0byBlbnRyeSBwb2ludHMgbWF0Y2hpbmcgdGhvc2UgcHJvcGVydGllcyAoc2VlCiAgICBFbnRyeVBvaW50cy5zZWxlY3QoKSkuCgogICAgRm9yIGNvbXBhdGliaWxpdHksIHJldHVybnMgYGBTZWxlY3RhYmxlR3JvdXBzYGAgb2JqZWN0IHVubGVzcwogICAgc2VsZWN0aW9uIHBhcmFtZXRlcnMgYXJlIHN1cHBsaWVkLiBJbiB0aGUgZnV0dXJlLCB0aGlzIGZ1bmN0aW9uCiAgICB3aWxsIHJldHVybiBgYEVudHJ5UG9pbnRzYGAgaW5zdGVhZCBvZiBgYFNlbGVjdGFibGVHcm91cHNgYAogICAgZXZlbiB3aGVuIG5vIHNlbGVjdGlvbiBwYXJhbWV0ZXJzIGFyZSBzdXBwbGllZC4KCiAgICBGb3IgbWF4aW11bSBmdXR1cmUgY29tcGF0aWJpbGl0eSwgcGFzcyBzZWxlY3Rpb24gcGFyYW1ldGVycwogICAgb3IgaW52b2tlIGBgLnNlbGVjdGBgIHdpdGggcGFyYW1ldGVycyBvbiB0aGUgcmVzdWx0LgoKICAgIDpyZXR1cm46IEVudHJ5UG9pbnRzIG9yIFNlbGVjdGFibGVHcm91cHMgZm9yIGFsbCBpbnN0YWxsZWQgcGFja2FnZXMuCiAgICBy5wAAACkBcqsAAABjAQAAAAAAAAACAAAAAgAAAHMAAABzFAAAAHwAXQx9AXwBagBWAAEAcQJkAFMAKQFOKQFyHQAAACkCcjIAAABybAAAAHIlAAAAciUAAAByJgAAAHI0AAAA9QMAAHMCAAAABAB6H2VudHJ5X3BvaW50cy48bG9jYWxzPi48Z2VuZXhwcj4pDHJzAAAAcq0AAAByUwAAAHJUAAAAcg0AAAByrwAAAHKxAAAAcrIAAAByHAAAAHKqAAAAcmcAAABymwAA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