gAJjZG9jdXRpbHMubm9kZXMKZG9jdW1lbnQKcQEpgXECfXEDKFUJbmFtZXR5cGVzcQR9cQUoWBoAAABtb2NraW5nIGEgZ2VuZXJhdG9yIG1ldGhvZHEGTlgkAAAAbW9jayBzdWJjbGFzc2VzIGFuZCB0aGVpciBhdHRyaWJ1dGVzcQdOWB0AAABjb3Bpbmcgd2l0aCBtdXRhYmxlIGFyZ3VtZW50c3EITlgVAAAAbW9ja2luZyBjaGFpbmVkIGNhbGxzcQlOWAwAAABtb2NraW5nIG9wZW5xCk5YKgAAAGxlc3MgdmVyYm9zZSBjb25maWd1cmF0aW9uIG9mIG1vY2sgb2JqZWN0c3ELTlgPAAAAeWllbGQgc3RhdGVtZW50cQyIWA0AAABjb3B5LmRlZXBjb3B5cQ2IWAoAAABweWhhbWNyZXN0cQ6IVQExiFgQAAAAZnVydGhlciBleGFtcGxlc3EPTlgPAAAAdHdpc3RlZCBhZGFwdG9ycRCIWCEAAABjaGVja2luZyBtdWx0aXBsZSBjYWxscyB3aXRoIG1vY2txEU5YIwAAAG1hdGNoaW5nIGFueSBhcmd1bWVudCBpbiBhc3NlcnRpb25zcRJOWCsAAABoYW1jcmVzdC5saWJyYXJ5LmludGVncmF0aW9uLm1hdGNoX2VxdWFsaXR5cROIWAkAAAB1bml0dGVzdDJxFIhYDwAAAHRoaXMgYmxvZyBlbnRyeXEViFglAAAAbXVsdGlwbGUgY2FsbHMgd2l0aCBkaWZmZXJlbnQgZWZmZWN0c3EWTlgVAAAAZGF0ZXRpbWUuZGF0ZS50b2RheSgpcReIWA0AAABhZHZhbmNlZCB1c2VzcRiIWBcAAABtb2NraW5nIHVuYm91bmQgbWV0aG9kc3EZTlgIAAAAX19pdGVyX19xGohVATKIWB4AAABtb3JlIGNvbXBsZXggYXJndW1lbnQgbWF0Y2hpbmdxG05YEAAAAGZ1cnRoZXItZXhhbXBsZXNxHIhYEgAAAG1vY2tpbmcgcHJvcGVydGllc3EdTlg4AAAAdHJhY2tpbmcgb3JkZXIgb2YgY2FsbHMgYW5kIGxlc3MgdmVyYm9zZSBjYWxsIGFzc2VydGlvbnNxHk5YKAAAAGdlbmVyYXRvciB0cmlja3MgZm9yIHN5c3RlbXMgcHJvZ3JhbW1lcnNxH4hYDwAAAHBhcnRpYWwgbW9ja2luZ3EgTlgjAAAAbW9ja2luZyBhIGRpY3Rpb25hcnkgd2l0aCBtYWdpY21vY2txIU5YJgAAAHJhaXNpbmcgZXhjZXB0aW9ucyBvbiBhdHRyaWJ1dGUgYWNjZXNzcSJOWCwAAABhcHBseWluZyB0aGUgc2FtZSBwYXRjaCB0byBldmVyeSB0ZXN0IG1ldGhvZHEjTlgdAAAAbW9ja3Mgd2l0aG91dCBzb21lIGF0dHJpYnV0ZXNxJE5YDwAAAG5lc3RpbmcgcGF0Y2hlc3ElTlgIAAAAb25lIHVzZXJxJohYHwAAAG1vY2tpbmcgaW1wb3J0cyB3aXRoIHBhdGNoLmRpY3RxJ051VRFzdWJzdGl0dXRpb25fZGVmc3EofXEpVQ5wYXJzZV9tZXNzYWdlc3EqXXErVQ5jdXJyZW50X3NvdXJjZXEsTlUKZGVjb3JhdGlvbnEtTlUSYXV0b2Zvb3Rub3RlX3N0YXJ0cS5LA1UHbmFtZWlkc3EvfXEwKGgGVRptb2NraW5nLWEtZ2VuZXJhdG9yLW1ldGhvZHExaAdVJG1vY2stc3ViY2xhc3Nlcy1hbmQtdGhlaXItYXR0cmlidXRlc3EyaAhVHWNvcGluZy13aXRoLW11dGFibGUtYXJndW1lbnRzcTNoCVUVbW9ja2luZy1jaGFpbmVkLWNhbGxzcTRoClUMbW9ja2luZy1vcGVucTVoC1UqbGVzcy12ZXJib3NlLWNvbmZpZ3VyYXRpb24tb2YtbW9jay1vYmplY3RzcTZoDFUPeWllbGQtc3RhdGVtZW50cTdoDVUNY29weS1kZWVwY29weXE4aA5VCnB5aGFtY3Jlc3RxOVUBMVUDaWQzcTpoD1UDaWQxcTtoEFUPdHdpc3RlZC1hZGFwdG9ycTxoEVUhY2hlY2tpbmctbXVsdGlwbGUtY2FsbHMtd2l0aC1tb2NrcT1oElUjbWF0Y2hpbmctYW55LWFyZ3VtZW50LWluLWFzc2VydGlvbnNxPmgTVStoYW1jcmVzdC1saWJyYXJ5LWludGVncmF0aW9uLW1hdGNoLWVxdWFsaXR5cT9oFFUJdW5pdHRlc3QycUBoFVUPdGhpcy1ibG9nLWVudHJ5cUFoFlUlbXVsdGlwbGUtY2FsbHMtd2l0aC1kaWZmZXJlbnQtZWZmZWN0c3FCaBdVE2RhdGV0aW1lLWRhdGUtdG9kYXlxQ2gYVQ1hZHZhbmNlZC11c2VzcURoGVUXbW9ja2luZy11bmJvdW5kLW1ldGhvZHNxRWgaVQRpdGVycUZVATJVA2lkNXFHaBtVHm1vcmUtY29tcGxleC1hcmd1bWVudC1tYXRjaGluZ3FIaBxVEGZ1cnRoZXItZXhhbXBsZXNxSWgdVRJtb2NraW5nLXByb3BlcnRpZXNxSmgeVTh0cmFja2luZy1vcmRlci1vZi1jYWxscy1hbmQtbGVzcy12ZXJib3NlLWNhbGwtYXNzZXJ0aW9uc3FLaB9VKGdlbmVyYXRvci10cmlja3MtZm9yLXN5c3RlbXMtcHJvZ3JhbW1lcnNxTGggVQ9wYXJ0aWFsLW1vY2tpbmdxTWghVSNtb2NraW5nLWEtZGljdGlvbmFyeS13aXRoLW1hZ2ljbW9ja3FOaCJVJnJhaXNpbmctZXhjZXB0aW9ucy1vbi1hdHRyaWJ1dGUtYWNjZXNzcU9oI1UsYXBwbHlpbmctdGhlLXNhbWUtcGF0Y2gtdG8tZXZlcnktdGVzdC1tZXRob2RxUGgkVR1tb2Nrcy13aXRob3V0LXNvbWUtYXR0cmlidXRlc3FRaCVVD25lc3RpbmctcGF0Y2hlc3FSaCZVCG9uZS11c2VycVNoJ1UfbW9ja2luZy1pbXBvcnRzLXdpdGgtcGF0Y2gtZGljdHFUdVUIY2hpbGRyZW5xVV1xVihjZG9jdXRpbHMubm9kZXMKdGFyZ2V0CnFXKYFxWH1xWShVCXJhd3NvdXJjZXFaWBUAAAAuLiBfZnVydGhlci1leGFtcGxlczpxW1UGcGFyZW50cVxoAlUGc291cmNlcV1jZG9jdXRpbHMubm9kZXMKcmVwcnVuaWNvZGUKcV5YHwAAAC9jb21waWxlL21vY2svZG9jcy9leGFtcGxlcy50eHRxX4WBcWB9cWFiVQd0YWduYW1lcWJVBnRhcmdldHFjVQphdHRyaWJ1dGVzcWR9cWUoVQNpZHNxZl1xZ1UIYmFja3JlZnNxaF1xaVUIZHVwbmFtZXNxal1xa1UHY2xhc3Nlc3FsXXFtVQVuYW1lc3FuXXFvVQVyZWZpZHFwaEl1VQRsaW5lcXFLAVUIZG9jdW1lbnRxcmgCaFVdcXN1YmNkb2N1dGlscy5ub2RlcwpzZWN0aW9uCnF0KYFxdX1xdihoWlUAaFxoAmhdaGBVGWV4cGVjdF9yZWZlcmVuY2VkX2J5X25hbWVxd31xeGgcaFhzaGJVB3NlY3Rpb25xeWhkfXF6KGhqXXF7aGxdcXxoaF1xfWhmXXF+KGhJaDtlaG5dcX8oaA9oHGV1aHFLBWhyaAJVF2V4cGVjdF9yZWZlcmVuY2VkX2J5X2lkcYB9cYFoSWhYc2hVXXGCKGNkb2N1dGlscy5ub2Rlcwp0aXRsZQpxgymBcYR9cYUoaFpYEAAAAEZ1cnRoZXIgRXhhbXBsZXNxhmhcaHVoXWhgaGJVBXRpdGxlcYdoZH1xiChoal1xiWhsXXGKaGhdcYtoZl1xjGhuXXGNdWhxSwVocmgCaFVdcY5jZG9jdXRpbHMubm9kZXMKVGV4dApxj1gQAAAARnVydGhlciBFeGFtcGxlc3GQhYFxkX1xkihoWmiGaFxohHViYXViY2RvY3V0aWxzLm5vZGVzCmNvbW1lbnQKcZMpgXGUfXGVKGhaWOYBAABmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCgpCYWNrZW5kUHJvdmlkZXIgPSBNb2NrKCkKc3lzLm1vZHVsZXNbJ215bW9kdWxlJ10gPSBteW1vZHVsZSA9IE1vY2sobmFtZT0nbXltb2R1bGUnKQoKZGVmIGdyb2IodmFsKToKICAgICJGaXJzdCBmcm9iIGFuZCB0aGVuIGNsZWFyIHZhbCIKICAgIG15bW9kdWxlLmZyb2IodmFsKQogICAgdmFsLmNsZWFyKCkKCm15bW9kdWxlLmZyb2IgPSBsYW1iZGEgdmFsOiB2YWwKbXltb2R1bGUuZ3JvYiA9IGdyb2IKbXltb2R1bGUuZGF0ZSA9IGRhdGUKCmNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0Mi5UZXN0UmVzdWx0KCkKICAgICAgICBvdXQgPSB1bml0dGVzdDIuVGVzdENhc2UucnVuKHNlbGYsIHJlc3VsdCkKICAgICAgICBhc3NlcnQgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKQoKZnJvbSBtb2NrIGltcG9ydCBpblB5M2txlmhcaHVoXWhgaGJVB2NvbW1lbnRxl2hkfXGYKFUMdGVzdG5vZGV0eXBlcZlYCQAAAHRlc3RzZXR1cHGaVQl4bWw6c3BhY2Vxm1UIcHJlc2VydmVxnGhmXXGdaGhdcZ5oal1xn2hsXXGgaG5dcaFVBmdyb3Vwc3GiXXGjVQdkZWZhdWx0caRhVQdvcHRpb25zcaV9caZ1aHFLCWhyaAJoVV1xp2iPWOYBAABmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCgpCYWNrZW5kUHJvdmlkZXIgPSBNb2NrKCkKc3lzLm1vZHVsZXNbJ215bW9kdWxlJ10gPSBteW1vZHVsZSA9IE1vY2sobmFtZT0nbXltb2R1bGUnKQoKZGVmIGdyb2IodmFsKToKICAgICJGaXJzdCBmcm9iIGFuZCB0aGVuIGNsZWFyIHZhbCIKICAgIG15bW9kdWxlLmZyb2IodmFsKQogICAgdmFsLmNsZWFyKCkKCm15bW9kdWxlLmZyb2IgPSBsYW1iZGEgdmFsOiB2YWwKbXltb2R1bGUuZ3JvYiA9IGdyb2IKbXltb2R1bGUuZGF0ZSA9IGRhdGUKCmNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0Mi5UZXN0UmVzdWx0KCkKICAgICAgICBvdXQgPSB1bml0dGVzdDIuVGVzdENhc2UucnVuKHNlbGYsIHJlc3VsdCkKICAgICAgICBhc3NlcnQgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKQoKZnJvbSBtb2NrIGltcG9ydCBpblB5M2txqIWBcal9caooaFpVAGhcaJR1YmF1YmNkb2N1dGlscy5ub2RlcwpwYXJhZ3JhcGgKcaspgXGsfXGtKGhaWFgAAABGb3IgY29tcHJlaGVuc2l2ZSBleGFtcGxlcywgc2VlIHRoZSB1bml0IHRlc3RzIGluY2x1ZGVkIGluIHRoZSBmdWxsIHNvdXJjZQpkaXN0cmlidXRpb24uca5oXGh1aF1oYGhiVQlwYXJhZ3JhcGhxr2hkfXGwKGhqXXGxaGxdcbJoaF1xs2hmXXG0aG5dcbV1aHFLI2hyaAJoVV1xtmiPWFgAAABGb3IgY29tcHJlaGVuc2l2ZSBleGFtcGxlcywgc2VlIHRoZSB1bml0IHRlc3RzIGluY2x1ZGVkIGluIHRoZSBmdWxsIHNvdXJjZQpkaXN0cmlidXRpb24ucbeFgXG4fXG5KGhaaK5oXGisdWJhdWJoqymBcbp9cbsoaFpYgQAAAEhlcmUgYXJlIHNvbWUgbW9yZSBleGFtcGxlcyBmb3Igc29tZSBzbGlnaHRseSBtb3JlIGFkdmFuY2VkIHNjZW5hcmlvcyB0aGFuIGluCnRoZSA6cmVmOmBnZXR0aW5nIHN0YXJ0ZWQgPGdldHRpbmctc3RhcnRlZD5gIGd1aWRlLnG8aFxodWhdaGBoYmivaGR9cb0oaGpdcb5obF1xv2hoXXHAaGZdccFobl1xwnVocUsmaHJoAmhVXXHDKGiPWFIAAABIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgZm9yIHNvbWUgc2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3MgdGhhbiBpbgp0aGUgccSFgXHFfXHGKGhaWFIAAABIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgZm9yIHNvbWUgc2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3MgdGhhbiBpbgp0aGUgccdoXGi6dWJjc3BoaW54LmFkZG5vZGVzCnBlbmRpbmdfeHJlZgpxyCmBccl9ccooaFpYKAAAADpyZWY6YGdldHRpbmcgc3RhcnRlZCA8Z2V0dGluZy1zdGFydGVkPmBxy2hcaLpoXWhgaGJVDHBlbmRpbmdfeHJlZnHMaGR9cc0oVQdyZWZ0eXBlcc5YAwAAAHJlZnHPVQdyZWZ3YXJucdCIVQlyZWZ0YXJnZXRx0VgPAAAAZ2V0dGluZy1zdGFydGVkcdJVCXJlZmRvbWFpbnHTWAMAAABzdGRx1GhmXXHVaGhdcdZVC3JlZmV4cGxpY2l0cdeIaGpdcdhobF1x2WhuXXHaVQZyZWZkb2Nx21UIZXhhbXBsZXNx3HVocUsmaFVdcd1jZG9jdXRpbHMubm9kZXMKZW1waGFzaXMKcd4pgXHffXHgKGhaaMtoZH1x4Shoal1x4mhsXXHjKFUEeHJlZnHkaNRYBwAAAHN0ZC1yZWZx5WVoaF1x5mhmXXHnaG5dceh1aFxoyWhVXXHpaI9YDwAAAGdldHRpbmcg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BQAAaFxq/wQAAHViZXViaKspgXIvBQAAfXIwBQAAKGhaWM0AAABBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgZGVhbGluZyB3aXRoIG1vY2tpbmcgZGF0ZXMsIG9yIG90aGVyIGJ1aWx0aW4gY2xhc3NlcywKaXMgZGlzY3Vzc2VkIGluIGB0aGlzIGJsb2cgZW50cnkKPGh0dHA6Ly93aWxsaWFtam9obmJlcnQuY29tLzIwMTEvMDcvaG93LXRvLXVuaXQtdGVzdGluZy1pbi1kamFuZ28td2l0aC1tb2NraW5nLWFuZC1wYXRjaGluZy8+YF8ucjEFAABoXGp3AwAAaF1oYGhiaK9oZH1yMgUAAChoal1yMwUAAGhsXXI0BQAAaGhdcjUFAABoZl1yNgUAAGhuXXI3BQAAdWhxS6RocmgCaFVdcjgFAAAoaI9YXAAAAEFuIGFsdGVybmF0aXZlIHdheSBvZiBkZWFsaW5nIHdpdGggbW9ja2luZyBkYXRlcywgb3Igb3RoZXIgYnVpbHRpbiBjbGFzc2VzLAppcyBkaXNjdXNzZWQgaW4gcjkFAACFgXI6BQAAfXI7BQAAKGhaWFwAAABBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgZGVhbGluZyB3aXRoIG1vY2tpbmcgZGF0ZXMsIG9yIG90aGVyIGJ1aWx0aW4gY2xhc3NlcywKaXMgZGlzY3Vzc2VkIGluIHI8BQAAaFxqLwUAAHViapsDAAApgXI9BQAAfXI+BQAAKGhaWHAAAABgdGhpcyBibG9nIGVudHJ5CjxodHRwOi8vd2lsbGlhbWpvaG5iZXJ0LmNvbS8yMDExLzA3L2hvdy10by11bml0LXRlc3RpbmctaW4tZGphbmdvLXdpdGgtbW9ja2luZy1hbmQtcGF0Y2hpbmcvPmBfcj8FAABoZH1yQAUAAChVBG5hbWVyQQUAAFgPAAAAdGhpcyBibG9nIGVudHJ5ckIFAABqogMAAFhbAAAAaHR0cDovL3dpbGxpYW1qb2huYmVydC5jb20vMjAxMS8wNy9ob3ctdG8tdW5pdC10ZXN0aW5nLWluLWRqYW5nby13aXRoLW1vY2tpbmctYW5kLXBhdGNoaW5nL3JDBQAAaGZdckQFAABoaF1yRQUAAGhqXXJGBQAAaGxdckcFAABobl1ySAUAAHVoXGov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AGhcakYGAAB1YmF1YmNkb2N1dGlscy5ub2Rlcwpmb290bm90ZQpyWAYAACmBclkGAAB9cloGAAAoaFpYPAEAAFRoZXJlIGFyZSBhbHNvIGdlbmVyYXRvciBleHByZXNzaW9ucyBhbmQgbW9yZSBgYWR2YW5jZWQgdXNlcwo8aHR0cDovL3d3dy5kYWJlYXouY29tL2Nvcm91dGluZXMvaW5kZXguaHRtbD5gXyBvZiBnZW5lcmF0b3JzLCBidXQgd2UgYXJlbid0CmNvbmNlcm5lZCBhYm91dCB0aGVtIGhlcmUuIEEgdmVyeSBnb29kIGludHJvZHVjdGlvbiB0byBnZW5lcmF0b3JzIGFuZCBob3cKcG93ZXJmdWwgdGhleSBhcmUgaXM6IGBHZW5lcmF0b3IgVHJpY2tzIGZvciBTeXN0ZW1zIFByb2dyYW1tZXJzCjxodHRwOi8vd3d3LmRhYmVhei5jb20vZ2VuZXJhdG9ycy8+YF8uCgpyWwYAAGhcaloFAABoXWhgaGJVCGZvb3Rub3RlclwGAABoZH1yXQYAAChqpAUAAEsBaGZdcl4GAABoOmFoaF1yXwYAAGqmBQAAYWhqXXJgBgAAaGxdcmEGAABobl1yYgYAAFUBMWF1aHFL0GhyaAJoVV1yYwYAAChjZG9jdXRpbHMubm9kZXMKbGFiZWwKcmQGAAApgXJlBgAAfXJmBgAAKGhaVQBoXGpZBgAAaF1OaGJVBWxhYmVscmcGAABoZH1yaAYAAChoal1yaQYAAGhsXXJqBgAAaGhdcmsGAABoZl1ybAYAAGhuXXJtBgAAdWhxTmhyaAJoVV1ybgYAAGiPWAEAAAAxhYFybwYAAH1ycAYAAChoWlUAaFxqZQYAAHViYXViaKspgXJxBgAAfXJyBgAAKGhaWDoBAABUaGVyZSBhcmUgYWxzbyBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgYW5kIG1vcmUgYGFkdmFuY2VkIHVzZXMKPGh0dHA6Ly93d3cuZGFiZWF6LmNvbS9jb3JvdXRpbmVzL2luZGV4Lmh0bWw+YF8gb2YgZ2VuZXJhdG9ycywgYnV0IHdlIGFyZW4ndApjb25jZXJuZWQgYWJvdXQgdGhlbSBoZXJlLiBBIHZlcnkgZ29vZCBpbnRyb2R1Y3Rpb24gdG8gZ2VuZXJhdG9ycyBh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ZCBNZXRob2Rzcs8HAABoXGrEBwAAaF1oYGhiaIdoZH1y0AcAAChoal1y0QcAAGhsXXLSBwAAaGhdctMHAABoZl1y1AcAAGhuXXLVBwAAdWhxTRsBaHJoAmhVXXLWBwAAaI9YFwAAAE1vY2tpbmcgVW5ib3VuZCBNZXRob2RzctcHAACFgXLYBwAAfXLZBwAAKGhaas8HAABoXGrNBwAAdWJhdWJoqymBctoHAAB9ctsHAAAoaFpYtgIAAFdoaWxzdCB3cml0aW5nIHRlc3RzIHRvZGF5IEkgbmVlZGVkIHRvIHBhdGNoIGFuICp1bmJvdW5kIG1ldGhvZCogKHBhdGNoaW5nIHRoZQptZXRob2Qgb24gdGhlIGNsYXNzIHJhdGhlciB0aGFuIG9uIHRoZSBpbnN0YW5jZSkuIEkgbmVlZGVkIHNlbGYgdG8gYmUgcGFzc2VkCmluIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIGFzc2VydHMgYWJvdXQgd2hpY2ggb2JqZWN0cwp3ZXJlIGNhbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIG1ldGhvZC4gVGhlIGlzc3VlIGlzIHRoYXQgeW91IGNhbid0IHBhdGNoIHdpdGggYQptb2NrIGZvciB0aGlzLCBiZWNhdXNlIGlmIHlvdSByZXBsYWNlIGFuIHVuYm91bmQgbWV0aG9kIHdpdGggYSBtb2NrIGl0IGRvZXNuJ3QKYmVjb21lIGEgYm91bmQgbWV0aG9kIHdoZW4gZmV0Y2hlZCBmcm9tIHRoZSBpbnN0YW5jZSwgYW5kIHNvIGl0IGRvZXNuJ3QgZ2V0CnNlbGYgcGFzc2VkIGluLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBwYXRjaCB0aGUgdW5ib3VuZCBtZXRob2Qgd2l0aCBhIHJlYWwKZnVuY3Rpb24gaW5zdGVhZC4gVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9yIG1ha2VzIGl0IHNvIHNpbXBsZSB0bwpwYXRjaCBvdXQgbWV0aG9kcyB3aXRoIGEgbW9jayB0aGF0IGhhdmluZyB0byBjcmVhdGUgYSByZWFsIGZ1bmN0aW9uIGJlY29tZXMgYQpudWlzYW5jZS5y3AcAAGhcasQHAABoXWhgaGJo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chUIAAAoaFpVAGhcagkIAAB1YmFoYmo3AQAAdWJhdWJoj1h4AAAAIGRlY29yYXRvciBtYWtlcyBpdCBzbyBzaW1wbGUgdG8KcGF0Y2ggb3V0IG1ldGhvZHMgd2l0aCBhIG1vY2sgdGhhdCBoYXZpbmcgdG8gY3JlYXRlIGEgcmVhbCBmdW5jdGlvbiBiZWNvbWVzIGEKbnVpc2FuY2UuchYIAACFgXIXCAAAfXIYCAAAKGhaWHgAAAAgZGVjb3JhdG9yIG1ha2VzIGl0IHNvIHNpbXBsZSB0bwpwYXRjaCBvdXQgbWV0aG9kcyB3aXRoIGEgbW9jayB0aGF0IGhhdmluZyB0byBjcmVhdGUgYSByZWFsIGZ1bmN0aW9uIGJlY29tZXMgYQpudWlzYW5jZS5yGQgAAGhcatoHAAB1YmV1YmirKYFyGggAAH1yGwgAAChoWlgaAgAASWYgeW91IHBhc3MgYGF1dG9zcGVjPVRydWVgIHRvIHBhdGNoIHRoZW4gaXQgZG9lcyB0aGUgcGF0Y2hpbmcgd2l0aCBhCipyZWFsKiBmdW5jdGlvbiBvYmplY3QuIFRoaXMgZnVuY3Rpb24gb2JqZWN0IGhhcyB0aGUgc2FtZSBzaWduYXR1cmUgYXMgdGhlIG9uZQppdCBpcyByZXBsYWNpbmcsIGJ1dCBkZWxlZ2F0ZXMgdG8gYSBtb2NrIHVuZGVyIHRoZSBob29kLiBZb3Ugc3RpbGwgZ2V0IHlvdXIKbW9jayBhdXRvLWNyZWF0ZWQgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgYmVmb3JlLiBXaGF0IGl0IG1lYW5zIHRob3VnaCwgaXMKdGhhdCBpZiB5b3UgdXNlIGl0IHRvIHBhdGNoIG91dCBhbiB1bmJvdW5kIG1ldGhvZCBvbiBhIGNsYXNzIHRoZSBtb2NrZWQKZnVuY3Rpb24gd2lsbCBiZSB0dXJuZWQgaW50byBhIGJvdW5kIG1ldGhvZCBpZiBpdCBpcyBmZXRjaGVkIGZyb20gYW4gaW5zdGFuY2UuCkl0IHdpbGwgaGF2ZSBgc2VsZmAgcGFzc2VkIGluIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkKd2FudGVkOnIcCAAAaFxqxAcAAGhdaGBo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RXJyb3IpCj4+PiB0eXBlKG0pLmZvbyA9IHAKPj4+IG0uZm9vClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLi4uLgpWYWx1ZUVycm9ycvoMAACFgXL7DAAAfXL8DAAAKGhaVQBoXGrrDAAAdWJhdWJoqymBcv0MAAB9cv4MAAAoaFpYGgEAAEJlY2F1c2UgZXZlcnkgbW9jayBvYmplY3QgaGFzIGl0cyBvd24gdHlwZSwgYSBuZXcgc3ViY2xhc3Mgb2Ygd2hpY2hldmVyIG1vY2sKY2xhc3MgeW91J3JlIHVzaW5nLCBhbGwgbW9jayBvYmplY3RzIGFyZSBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIuIFlvdSBjYW4Kc2FmZWx5IGF0dGFjaCBwcm9wZXJ0aWVzIChvciBvdGhlciBkZXNjcmlwdG9ycyBvciB3aGF0ZXZlciB5b3Ugd2FudCBpbiBmYWN0KQp0byBgdHlwZShtb2NrKWAgd2l0aG91dCBhZmZlY3Rpbmcgb3RoZXIgbW9jayBvYmplY3RzLnL/DAAAaFxqhwwAAGhdaGBoYmivaGR9cgANAAAoaGpdcgENAABobF1yAg0AAGhoXXIDDQAAaGZdcgQNAABobl1yBQ0AAHVocU0EAmhyaAJoVV1yBg0AAChoj1joAAAAQmVjYXVzZSBldmVyeSBtb2NrIG9iamVjdCBoYXMgaXRzIG93biB0eXBlLCBhIG5ldyBzdWJjbGFzcyBvZiB3aGljaGV2ZXIgbW9jawpjbGFzcyB5b3UncmUgdXNpbmcsIGFsbCBtb2NrIG9iamVjdHMgYXJlIGlzb2xhdGVkIGZyb20gZWFjaCBvdGhlci4gWW91IGNhbgpzYWZlbHkgYXR0YWNoIHByb3BlcnRpZXMgKG9yIG90aGVyIGRlc2NyaXB0b3JzIG9yIHdoYXRldmVyIHlvdSB3YW50IGluIGZhY3QpCnRvIHIHDQAAhYFyCA0AAH1yCQ0AAChoWljoAAAAQmVjYXVzZSBldmVyeSBtb2NrIG9iamVjdCBoYXMgaXRzIG93biB0eXBlLCBhIG5ldyBzdWJjbGFzcyBvZiB3aGljaGV2ZXIgbW9jawpjbGFzcyB5b3UncmUgdXNpbmcsIGFsbCBtb2NrIG9iamVjdHMgYXJlIGlz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aWZmZXJlbnRseSBvbiBzdWJzZXF1ZW50IGNhbGxzIGR1cmluZyB0aGUKdGVzdCBjYW4gYmUgdHJpY2t5LiBGb3IgZXhhbXBsZSB5b3UgbWF5IGhhdmUgYSBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIHJhaXNlCmFuIGV4Y2VwdGlvbiB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQgYnV0IHJldHVybnMgYSByZXNwb25zZSBvbiB0aGUgc2Vjb25kCmNhbGwgKHRlc3RpbmcgcmV0cnkgYmVoYXZpb3VyKS5yXQ0AAGhcahwNAABoXWhgaGJor2hkfXJeDQAAKGhqXXJfDQAAaGxdcmANAABoaF1yYQ0AAGhmXXJiDQAAaG5dcmMNAAB1aHFNEgJocmgCaFVdcmQNAABoj1gHAQAASGFuZGxpbmcgY29kZSB0aGF0IG5lZWRzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiBzdWJzZXF1ZW50IGNhbGxzIGR1cmluZyB0aGUKdGVzdCBjYW4gYmUgdHJpY2t5LiBGb3IgZXhhbXBsZSB5b3UgbWF5IGhhdmUgYSBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIHJhaXNlCmFuIGV4Y2VwdGlvbiB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQgYnV0IHJldHVybnMgYSByZXNwb25zZSBvbiB0aGUgc2Vjb25kCmNhbGwgKHRlc3RpbmcgcmV0cnkgYmVoYXZpb3VyKS5yZQ0AAIWBcmYNAAB9cmcNAAAoaFpqXQ0AAGhcalsNAAB1YmF1YmirKYFyaA0AAH1yaQ0AAChoWljWAAAAT25lIGFwcHJvYWNoIGlzIHRvIHVzZSBhIDphdHRyOmBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gdGhhdCByZXBsYWNlcyBpdHNlbGYuIFRoZQpmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZCB0aGUgYHNpZGVfZWZmZWN0YCBzZXRzIGEgbmV3IGBzaWRlX2VmZmVjdGAgdGhhdCB3aWxsCmJlIHVzZWQgZm9yIHRoZSBzZWNvbmQgY2FsbC4gSXQgdGhlbiByYWlzZXMgYW4gZXhjZXB0aW9uOnJqDQAAaFxqHA0AAGhdaGBoYmivaGR9cmsNAAAoaGpdcmwNAABobF1y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DQAAKGhaWHYBAAA+Pj4gcmV0dXJucyA9IFtFeGNlcHRpb24oJ2Jvb20nKSwgJ3Jlc3BvbnNlJ10KPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncyk6Ci4uLiAgIHJlc3VsdCA9IHJldHVybnMucG9wKDApCi4uLiAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBFeGNlcHRpb24pOgouLi4gICAgIHJhaXNlIHJlc3VsdAouLi4gICByZXR1cm4gcmVzdWx0Ci4uLgo+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QpCj4+PiBtb2NrKCdmaXJzdCcpClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIC4uLgpFeGNlcHRpb246IGJvb20KPj4+IG1vY2soJ3NlY29uZCcpCidyZXNwb25zZScKPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCdzZWNvbmQnKXLaDQAAaFxqHA0AAGhdaGBoYmqDAQAAaGR9ctsNAAAoVQx0ZXN0bm9kZXR5cGVy3A0AAFgHAAAAZG9jdGVzdHLdDQAAaJtonGhmXXLeDQAAaGhdct8NAABoal1y4A0AAGhsXXLhDQAAaG5dcuINAABVBmdyb3Vwc3LjDQAAXXLkDQAAaKRhaKV9cuUNAAB1aHFNLwJocmgCaFVdcuYNAABoj1h2AQAAPj4+IHJldHVybnMgPSBbRXhjZXB0aW9uKCdib29tJyksICdyZXNwb25zZSddCj4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MpOgouLi4gICByZXN1bHQgPSByZXR1cm5zLnBvcCgwKQouLi4gICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgRXhjZXB0aW9uKToKLi4uICAgICByYWlzZSByZXN1bHQKLi4uICAgcmV0dXJuIHJlc3VsdAouLi4KPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQo+Pj4gbW9jaygnZmlyc3QnKQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KRXhjZXB0aW9uOiBib29tCj4+PiBtb2NrKCdzZWNvbmQnKQoncmVzcG9uc2UnCj4+PiBtb2NrLmFz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LiAgICAgICAgIHRoaW5nID0gcGF0Y2hlci5zdGFydCgpCi4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCi4uLiAgICAgICAgIHJldHVybiB0aGluZwouLi4KLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6Ci4uLiAgICAgICAgIG1vY2tfZm9vID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkZvbycpCi4uLiAgICAgICAgIG1vY2tfYmFyID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkJhcicpCi4uLiAgICAgICAgIG1vY2tfc3BhbSA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5TcGFtJykKLi4uCi4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5Gb28gaXMgbW9ja19mb28KLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgouLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuU3BhbSBpcyBtb2NrX3NwYW0KLi4uCj4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbwo+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCj4+PiBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG9yaWdpbmFscpAOAABoXGr3DQAAaF1oYGhiaoMBAABoZH1ykQ4AAChVDHRlc3Rub2RldHlwZXKSDgAAWAcAAABkb2N0ZXN0cpMOAABom2icaGZdcpQOAABoaF1ylQ4AAGhqXXKWDgAAaGxdcpcOAABobl1ymA4AAFUGZ3JvdXBzcpkOAABdcpoOAABopGFopX1ymw4AAHVocU1hAmhyaAJoVV1ynA4AAGiPWIYCAAA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKLi4uCi4uLiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBuYW1lKToKLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKG5hbWUpCi4uLiAgICAgICAgIHRoaW5nID0gcGF0Y2hlci5zdGFydCgpCi4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCi4uLiAgICAgICAg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cm91cHNywQ8AAF1ywg8AAGikYWilfXLDDwAAdWhxTYoCaHJoAmhVXXLEDwAAaI9YCAEAAD4+PiBteV9kaWN0ID0geydhJzogMSwgJ2InOiAyLCAnYyc6IDN9Cj4+PiBkZWYgZ2V0aXRlbShuYW1lKToKLi4uICAgICAgcmV0dXJuIG15X2RpY3RbbmFtZV0KLi4uCj4+PiBkZWYgc2V0aXRlbShuYW1lLCB2YWwpOgouLi4gICAgIG15X2RpY3RbbmFtZV0gPSB2YWwKLi4uCj4+PiBtb2NrID0gTWFnaWNNb2NrKCkKPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCj4+PiBtb2NrLl9fc2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gc2V0aXRlbXLFDwAAhYFyxg8AAH1yxw8AAChoWlUAaFxqtg8AAHViYXViaogLAAApgXLIDwAAfXLJDwAAKGhaWEYCAABBbiBhbHRlcm5hdGl2ZSB0byB1c2luZyBgTWFnaWNNb2NrYCBpcyB0byB1c2UgYE1vY2tgIGFuZCAqb25seSogcHJvdmlkZQp0aGUgbWFnaWMgbWV0aG9kcyB5b3Ugc3BlY2lmaWNhbGx5IHdhbnQ6CgouLiBkb2N0ZXN0OjoKCiAgICA+Pj4gbW9jayA9IE1vY2soKQogICAgPj4+IG1vY2suX19zZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PWdldGl0ZW0pCiAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXyA9IE1vY2soc2lkZV9lZmZlY3Q9c2V0aXRlbSkKCkEgKnRoaXJkKiBvcHRpb24gaXMgdG8gdXNlIGBNYWdpY01vY2tgIGJ1dCBwYXNzaW5nIGluIGBkaWN0YCBhcyB0aGUgYHNwZWNgCihvciBgc3BlY19zZXRgKSBhcmd1bWVudCBzbyB0aGF0IHRoZSBgTWFnaWNNb2NrYCBjcmVhdGVkIG9ubHkgaGFzCmRpY3Rpb25hcnkgbWFnaWMgbWV0aG9kcyBhdmFpbGFibGU6CgouLiBkb2N0ZXN0OjoKCiAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzcGVjX3NldD1kaWN0KQogICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZl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c3ViY2xhc3MucsERAACFgXLCEQAAfXLDEQAAKGhaWJYAAAAuIFNvIGlmIHlvdSdyZSBzdWJjbGFzc2luZyB0byBhZGQgaGVscGVyIG1ldGhvZHMgdGhlbiB0aGV5J2xsIGFsc28gYmUKYXZhaWxhYmxlIG9uIHRoZSBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUgbW9jayBvZiBpbnN0YW5jZXMgb2YgeW91cgpzdWJjbGFzcy5yxBEAAGhcalMRAAB1YmV1Ymp/AQAAKYFyxREAAH1yxhEAAChoWliyAAAAPj4+IG15bW9jay5mb28KPE15TW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+Cj4+PiBteW1vY2suZm9vLmhhc19iZWVuX2NhbGxlZCgpCkZhbHNlCj4+PiBteW1vY2suZm9vKCkKPE15TW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKVHJ1ZXLHEQAAaFxqDBEAAGhdaGBoYmqDAQAAaGR9csgRAAAoVQx0ZXN0bm9kZXR5cGVyyREAAFgHAAAAZG9jdGVzdHLKEQAAaJtonGhmXXLLEQAAaGhdcswRAABoal1yzREAAGhsXXLOEQAAaG5dcs8RAABVBmdyb3Vwc3LQEQAAXXLREQAAaKRhaKV9ctIRAAB1aHFN6gJocmgCaFVdctMRAABoj1iyAAAAPj4+IG15bW9jay5mb28KPE15TW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+Cj4+PiBteW1vY2suZm9vLmhhc19iZWVuX2NhbGxlZCgpCkZhbHNlCj4+PiBteW1vY2suZm9vKCkKPE15TW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKVHJ1ZXLUEQAAhYFy1REAAH1y1hEAAChoWlUAaFxqxREAAHViYXViaKspgXLXEQAAfXLYEQAAKGhaWDABAABTb21ldGltZXMgdGhpcyBpcyBpbmNvbnZlbmllbnQuIEZvciBleGFtcGxlLCBgb25lIHVzZXIKPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvbW9jay9pc3N1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cyk6Ci4uLiAgICAgICAgIHJldHVybiBNYWdpY01vY2soKiprd2FyZ3MpCi4uLgo+Pj4gbXltb2NrID0gU3ViY2xhc3MoKQo+Pj4gbXltb2NrLmZvbwo8TWFnaWNNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KPj4+IGFzc2VydCBpc2luc3RhbmNlKG15bW9jaywgU3ViY2xhc3MpCj4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrLmZvbywgU3ViY2xhc3MpCj4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrKCksIFN1YmNsYXNzKXJiEgAAaFxqDBEAAGhdaGBoYmqDAQAAaGR9cmMSAAAoVQx0ZXN0bm9kZXR5cGVyZBIAAFgHAAAAZG9jdGVzdHJlEgAAaJtonGhmXXJmEgAAaGhdcmcSAABoal1yaBIAAGhsXXJpEgAAaG5dcmoSAABVBmdyb3Vwc3JrEgAAXXJsEgAAaKRhaKV9cm0SAAB1aHFNAQNocmgCaFVdcm4SAABoj1hIAQAAPj4+IGNsYXNzIFN1YmNsYXNzKE1hZ2ljTW9jayk6Ci4uLiAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6Ci4uLiAgICAgICAgIHJldHVybiBNYWdpY01vY2soKiprd2FyZ3MpCi4uLgo+Pj4gbXltb2NrID0gU3ViY2xhc3MoKQo+Pj4gbXltb2NrLmZvbwo8TWFnaWNNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KPj4+IGFzc2VydCBpc2luc3RhbmNlKG15bW9jaywgU3ViY2xhc3MpCj4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrLmZvbywgU3ViY2xhc3MpCj4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrKCksIFN1YmNsYXNzKXJvEgAAhYFycBIAAH1ycRIAAChoWlUAaFxqYBIAAHViYXVialgGAAApgXJyEgAAfXJzEgAAKGhaWKAAAABBbiBleGNlcHRpb24gdG8gdGhpcyBydWxlIGFyZSB0aGUgbm9uLWNhbGxhYmxlIG1vY2tzLiBBdHRyaWJ1dGVzIHVzZSB0aGUKY2FsbGFibGUgdmFyaWFu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ZSkgb3IgdG8gcHJldmVudCAidXAgZnJvbnQgY29zdHMiIGJ5IGRlbGF5aW5nIHRoZQppbXBvcnQuIFRoaXMgY2FuIGFsc28gYmUgc29sdmVkIGluIGJldHRlciB3YXlzIHRoYW4gYW4gdW5jb25kaXRpb25hbCBsb2NhbAppbXBvcnQgKHN0b3JlIHRoZSBtb2R1bGUgYXMgYSBjbGFzcyBvciBtb2R1bGUgYXR0cmlidXRlIGFuZCBvbmx5IGRvIHRoZSBpbXBvcnQKb24gZmlyc3QgdXNlKS5y0hIAAIWBctMSAAB9ctQSAAAoaFpYEwEAACBhIG11Y2ggYmV0dGVyIHdheSB0byBzb2x2ZQp0aGUgcHJvYmxlbSAocmVmYWN0b3IgdGhlIGNvZGUpIG9yIHRvIHByZXZlbnQgInVwIGZyb250IGNvc3RzIiBieSBkZWxheWluZyB0aGUKaW1wb3J0LiBUaGlzIGNhbiBhbHNvIGJlIHNvbHZlZCBpbiBiZXR0ZXIgd2F5cyB0aGFuIGFuIHVuY29uZGl0aW9uYWwgbG9jYWwKaW1wb3J0IChzdG9yZSB0aGUgbW9kdWxlIGFzIGEgY2xhc3Mgb3IgbW9kdWxlIGF0dHJpYnV0ZSBhbmQgb25seSBkbyB0aGUgaW1wb3J0Cm9uIGZpcnN0IHVzZSkuctUSAABoXGq3EgAAdWJldWJoqymBctYSAAB9ctcSAAAoaFpYhgEAAFRoYXQgYXNpZGUgdGhlcmUgaXMgYSB3YXkgdG8gdXNlIGBtb2NrYCB0byBhZmZlY3QgdGhlIHJlc3VsdHMgb2YgYW4gaW1wb3J0LgpJbXBvcnRpbmcgZmV0Y2hlcyBhbiAqb2JqZWN0KiBmcm9tIHRoZSBgc3lzLm1vZHVsZXNgIGRpY3Rpb25hcnkuIE5vdGUgdGhhdCBpdApmZXRjaGVzIGFuICpvYmplY3QqLCB3aGljaCBuZWVkIG5vdCBiZSBhIG1vZHVsZS4gSW1wb3J0aW5nIGEgbW9kdWxlIGZvciB0aGUKZmlyc3QgdGltZSByZXN1bHRzIGluIGEgbW9kdWxlIG9iamVjdCBiZWluZyBwdXQgaW4gYHN5cy5tb2R1bGVzYCwgc28gdXN1YWxseQp3aGVuIHlvdSBpbXBvcnQgc29tZXRoaW5nIHlvdSBnZXQg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XXIiFAAAaI9YOgAAAFdpdGggc2xpZ2h0bHkgbW9yZSB3b3JrIHlvdSBjYW4gYWxzbyBtb2NrIHBhY2thZ2UgaW1wb3J0czpyIxQAAIWBciQUAAB9ciUUAAAoaFpqGxQAAGhcahkUAAB1YmF1Ymp/AQAAKYFyJhQAAH1yJxQAAChoWlgXAQAAPj4+IG1vY2sgPSBNb2NrKCkKPj4+IG1vZHVsZXMgPSB7J3BhY2thZ2UnOiBtb2NrLCAncGFja2FnZS5tb2R1bGUnOiBtb2NrLm1vZHVsZX0KPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBtb2R1bGVzKToKLi4uICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGZvb2JsZQouLi4gICAgZm9vYmxlKCkKLi4uCjxNb2NrIG5hbWU9J21vY2subW9kdWxlLmZvb2JsZSgpJyBpZD0nLi4uJz4KPj4+IG1vY2subW9kdWxlLmZvb2JsZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpcigUAABoXGqUEgAAaF1oYGhiaoMBAABoZH1yKRQAAChVDHRlc3Rub2RldHlwZXIqFAAAWAcAAABkb2N0ZXN0cisUAABom2icaGZdciwUAABoaF1yLRQAAGhqXXIuFAAAaGxdci8UAABobl1yMBQAAFUGZ3JvdXBzcjEUAABdcjIUAABopGFopX1yMxQAAHVocU1MA2hyaAJoVV1yNBQAAGiPWBcBAAA+Pj4gbW9jayA9IE1vY2soKQo+Pj4gbW9kdWxlcyA9IHsncGFja2FnZSc6IG1vY2ssICdwYWNrYWdlLm1vZHVsZSc6IG1vY2subW9kdWxlfQo+Pj4gd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG1vZHVsZXMpOgouLi4gICAgZnJvbSBwYWNrYWdlLm1vZHVsZSBpbXBvcnQgZm9vYmxlCi4uLiAgICBmb29ibGUoKQouLi4KPE1vY2sgbmFtZT0nbW9jay5tb2R1bGUuZm9vYmxlKCknIGlkPScuLi4nPgo+Pj4gbW9jay5tb2R1bGUuZm9vYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKClyNRQAAIWBcjYUAAB9cjcUAAAoaFpVAGhcaiYUAAB1YmF1YmV1Ymh0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Y2hfbW9jayhNb2NrQ2xhc3MyLCAnTW9ja0NsYXNzMicpCi4uLiAgICAgICAgIE1vY2tDbGFzczEoKS5mb28oKQouLi4gICAgICAgICBNb2NrQ2xhc3MyKCkuYmFyKCkKLi4uCjxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MxKCkuZm9vKCknIGlkPScuLi4nPgo8TWFnaWNNb2NrIG5hbWU9J21vY2suTW9ja0NsYXNzMigpLmJhcigpJyBpZD0nLi4uJz4KPj4+IG1hbmFnZXIubW9ja19jYWxscwpbY2FsbC5Nb2NrQ2xhc3MxKCksCiBjYWxsLk1vY2tDbGFzczEoKS5mb28oKSwKIGNhbGwuTW9ja0NsYXNzMigpLAogY2FsbC5Nb2NrQ2xhc3MyKCkuYmFyKCldcpYVAABoXGo4FAAAaF1oYGhiaoMBAABoZH1ylxUAAChVDHRlc3Rub2RldHlwZXKYFQAAWAcAAABkb2N0ZXN0cpkVAABom2icaGZdcpoVAABoaF1ymxUAAGhqXXKcFQAAaGxdcp0VAABobl1ynhUAAFUGZ3JvdXBzcp8VAABdcqAVAABopGFopX1yoRUAAHVocU2AA2hyaAJoVV1yohUAAGiPWBACAAA+Pj4gbWFuYWdlciA9IE1hZ2ljTW9jaygpCj4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5DbGFzczEnKSBhcyBNb2NrQ2xhc3MxOgouLi4gICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMicpIGFzIE1vY2tDbGFzczI6Ci4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMSwgJ01vY2tDbGFzczEnKQouLi4gICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKE1vY2tDbGFzczIsICdNb2NrQ2xhc3MyJykKLi4uICAgICAgICAgTW9ja0NsYXNzMSgpLmZvbygpCi4uLiAgICAgICAgIE1vY2tDbGFzczIoKS5iYXIoKQouLi4KPE1hZ2ljTW9jayBuYW1lPSdtb2NrLk1vY2tDbGFzczEoKS5mb28oKScgaWQ9Jy4uLic+CjxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MyKCkuYmFyKCknIGlkPScuLi4nPgo+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dWFsIGJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSAod2hpY2ggaXMgdGhlIFB5dGhvbiBkZWZhdWx0IGZvciB1c2VyCmRlZmluZWQgY2xhc3NlcykuIFRvIHVzZSA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCB3ZSB3b3VsZCBuZWVkIHRvIHBhc3MKaW4gdGhlIGV4YWN0IHNhbWUgb2JqZWN0LiBJZiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMKb2YgdGhpcyBvYmplY3QgdGhlbiB3ZSBjYW4gY3JlYXRlIGEgbWF0Y2hlciB0aGF0IHdpbGwgY2hlY2sgdGhlc2UgYXR0cmlidXRlcwpmb3IgdXMuctAWAABoXGqZFgAAaF1oYGhiaK9oZH1y0RYAAChoal1y0hYAAGhsXXLTFgAAaGhdctQWAABoZl1y1RYAAGhuXXLWFgAAdWhxTbgDaHJoAmhVXXLXFgAAKGiPWKwAAABTdXBwb3NlIHdlIGV4cGVjdCBzb21lIG9iamVjdCB0byBiZSBwYXNzZWQgdG8gYSBtb2NrIHRoYXQgYnkgZGVmYXVsdApjb21wYXJlcyBlcXVhbCBiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkgKHdoaWNoIGlzIHRoZSBQeXRob24gZGVmYXVsdCBmb3IgdXNlcgpkZWZpbmVkIGNsYXNzZXMpLiBUbyB1c2UgctgWAACFgXLZFgAAfXLaFgAAKGhaWKwAAABTdXBwb3NlIHdlIGV4cGVjdCBzb21lIG9iamVjdCB0byBiZSBwYXNzZWQgdG8gYSBtb2NrIHRoYXQgYnkgZGVmYXVsdApjb21wYXJlcyBlcXVhbCBiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkgKHdoaWNoIGlzIHRoZSBQeXRob24gZGVmYXVsdCBmb3IgdXNlcgpkZWZpbmVkIGNsYXNzZXMpLiBUbyB1c2UgctsWAABoXGrOFgAAdWJoyCmBctwWAAB9ct0WAAAoaFpYIAAAADptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgct4WAABoXGrOFgAAaF1oYGhiaMxoZH1y3xYAAChVB3JlZnR5cGVy4BYAAFgEAAAAbWV0aHLhFgAA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ZCBwcm92aWRlIGEgbW9yZSB1c2VmdWwgZmFpbHVyZSBtZXNzYWdlLnI+GAAAhYFyPxgAAH1yQBgAAChoWlg0AAAAIGRpcmVjdGx5IGFuZCBwcm92aWRlIGEgbW9yZSB1c2VmdWwgZmFpbHVyZSBtZXNzYWdlLnJBGAAAaFxqIxgAAHViZXViaKspgXJCGAAAfXJDGAAAKGhaWFgBAABBcyBvZiB2ZXJzaW9uIDEuNSwgdGhlIFB5dGhvbiB0ZXN0aW5nIGxpYnJhcnkgYFB5SGFtY3Jlc3QKPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9QeUhhbWNyZXN0PmBfIHByb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwKdGhhdCBtYXkgYmUgdXNlZnVsIGhlcmUsIGluIHRoZSBmb3JtIG9mIGl0cyBlcXVhbGl0eSBtYXRjaGVyCihgaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eQo8aHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvUHlIYW1jcmVzdC9pbnRlZ3JhdGlvbi5odG1sI2hhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHk+YF8pLnJEGAAAaFxqmRYAAGhdaGBoYmivaGR9ckUYAAAoaGpdckYYAABobF1yRxgAAGhoXXJIGAAAaGZdckkYAABobl1yShgAAHVocU0EBGhyaAJoVV1ySxgAAChoj1guAAAAQXMgb2YgdmVyc2lvbiAxLjUsIHRoZSBQeXRob24gdGVzdGluZyBsaWJyYXJ5IHJMGAAAhYFyTRgAAH1yThgAAChoWlguAAAAQXMgb2YgdmVyc2lvbiAxLjUsIHRoZSBQeXRob24gdGVzdGluZyBsaWJyYXJ5IHJPGAAAaFxqQhgAAHViapsDAAApgXJQGAAAfXJRGAAAKGhaWDYAAABgUHlIYW1jcmVzdAo8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3Q+YF9yUhgAAGhkfXJTGAAAKFUEbmFtZXJUGAAAWAoAAABQeUhhbWNyZXN0clUYAABqogMAAFgmAAAAaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3RyVhgAAGhmXXJXGAAAaGhdclgYAABoal1yWRgAAGhsXXJaGAAAaG5dclsYAAB1aFxqQhgAAGhVXXJcGAAAaI9YCgAAAFB5SGFtY3Jlc3RyXRgAAIWBcl4YAAB9cl8YAAAoaFpVAGhcalAYAAB1YmFoYmqtAwAAdWJoVymBcmAYAAB9cmEYAAAoaFpYKQAAAAo8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3Q+cmIYAABqsQMAAEsBaFxqQhgAAGhiaGNoZH1yYxgAAChVBnJlZnVyaXJkGAAAalYYAABoZl1yZRgAAGg5YWhoXXJmGAAAaGpdcmcYAABobF1yaBgAAGhuXXJpGAAAaA5hdWhVXXJqGAAAdWJoj1hfAAAAIHByb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwKdGhhdCBtYXkgYmUgdXNlZnVsIGhlcmUsIGluIHRoZSBmb3JtIG9mIGl0cyBlcXVhbGl0eSBtYXRjaGVyCihyaxgAAIWBcmwYAAB9cm0YAAAoaFpYXwAAACBwcm92aWRlcyBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksCnRoYXQgbWF5IGJlIHVzZWZ1bCBoZXJlLCBpbiB0aGUgZm9ybSBvZiBpdHMgZXF1YWxpdHkgbWF0Y2hlcgoocm4YAABoXGpCGAAAdWJqmwMAACmBcm8YAAB9cnAYAAAoaFpYkwAAAGBoYW1jcmVzdC5saWJyYXJ5LmludGVncmF0aW9uLm1hdGNoX2VxdWFsaXR5CjxodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9QeUhhbWNyZXN0L2ludGVncmF0aW9uLmh0bWwjaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eT5gX3JxGAAAaGR9cnIYAAAoVQRuYW1lcnMYAABYKwAAAGhhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHlydBgAAGqiAwAAWGIAAABodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9QeUhhbWNyZXN0L2ludGVncmF0aW9uLmh0bWwjaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eXJ1GAAAaGZdcnYY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Zy9odG1sL3ItGgAAVQl0cmFjZWJhY2tyLhoAAIhVDnBlcF9yZWZlcmVuY2Vzci8aAABOVQ5zdHJpcF9jb21tZW50c3IwGgAATlUNdG9jX2JhY2tsaW5rc3IxGgAAVQVlbnRyeXIyGgAAVQ1sYW5ndWFnZV9jb2RlcjMaAABVAmVucjQaAABVCWRhdGVzdGFtcHI1GgAATlUMcmVwb3J0X2xldmVscjYaAABLAlUMX2Rlc3RpbmF0aW9ucjcaAABOVQpoYWx0X2xldmVscjgaAABLBVUNc3RyaXBfY2xhc3Nlc3I5GgAATmiHTlUcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcnI6GgAAVRBiYWNrc2xhc2hyZXBsYWNlcjsaAABVBWRlYnVncjwaAABOVRBlbWJlZF9zdHlsZXNoZWV0cj0aAACJVR1vdXRwdXRfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcnI+GgAAVQZzdHJpY3RyPxoAAFUNc2VjdG51bV94Zm9ybXJAGgAASwFVD2R1bXBfdHJhbnNmb3Jtc3JBGgAATlUNZG9jaW5mb194Zm9ybXJCGgAASwFVDndhcm5pbmdfc3RyZWFtckMaAABOVRVwZXBfZmlsZV91cmxfdGVtcGxhdGVyRBoAAFUIcGVwLSUwNGRyRRoAAFURZXhpdF9zdGF0dXNfbGV2ZWxyRhoAAEsFVQZjb25maWdyRxoAAE5VDnN0cmljdF92aXNpdG9yckgaAABOVRVjbG9ha19lbWFpbF9hZGRyZXNzZXNySRoAAIhVHXRyaW1fZm9vdG5vdGVfcmVmZXJlbmNlX3NwYWNlckoaAACJVQNlbnZySxoAAE5VD2R1bXBfcHNldWRvX3htbHJMGgAATlUQZXhwb3NlX2ludGVybmFsc3JNGgAATlUSc2VjdHN1YnRpdGxlX3hmb3Jtck4aAACJVQtzb3VyY2VfbGlua3JPGgAATlUOcmZjX3JlZmVyZW5jZXNyUBoAAE5VD291dHB1dF9lbmNvZGluZ3JRGgAAVQV1dGYtOHJSGgAAVQpzb3VyY2VfdXJsclMaAABOVQ5pbnB1dF9lbmNvZGluZ3JUGgAAVQl1dGYtOC1zaWdyVRoAAFUPX2Rpc2FibGVfY29uZmlnclYaAABOVQlpZF9wcmVmaXhyVxoAAFUAVQl0YWJfd2lkdGhyWBoAAEsIVQ5lcnJvcl9lbmNvZGluZ3JZGgAAVQltYWMtcm9tYW5yWhoAAFUHX3NvdXJjZXJbGgAAVR8vY29tcGlsZS9tb2NrL2RvY3MvZXhhbXBsZXMudHh0clwaAABVD2dldHRleHRfY29tcGFjdHJdGgAAiFUJZ2VuZXJhdG9ycl4aAABOVQ5kdW1wX2ludGVybmFsc3JfGgAATlUMcGVwX2Jhc2VfdXJscmAaAABVH2h0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9yYRoAAFUQc3ludGF4X2hpZ2hsaWdodHJiGgAAVQVzaG9ydHJjGgAAVRxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVycmQaAABqPxoAAFUOYXV0b19pZF9wcmVmaXhyZRoAAFUCaWRyZhoAAFUOZG9jdGl0bGVfeGZvcm1yZxoAAIlVG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc3JoGgAATlUNX2NvbmZpZ19maWxlc3JpGgAAXXJqGgAAVRZmaWxlX2luc2VydGlvbl9lbmFibGVkcmsaAABLAVULcmF3X2VuYWJsZWRybBoAAEsBVQ1kdW1wX3NldHRpbmdzcm0aAABOdWJVFXN5bWJvbF9mb290bm90ZV9zdGFydHJuGgAASwBVA2lkc3JvGgAAfXJwGgAAKGg8ahQSAABoN2qOBQAAaD1qmwgAAGg5amAYAABoNWpqGQAAaEVqxAcAAGhTavURAABoP2p/GAAAaEtqOBQAAGhOaqAOAABoSmonGQAAaEFqTQUAAGhUapQSAABoUGq7BgAAarkRAABqtBEAAGhHanISAABqpgUAAGqeBQAAaDpqWQYAAGg7aHVoUWqtGQAAaE9qhwwAAGhSavcNAABoQGqjBwAAaDFqWgUAAGhMaq4GAABoTWp3AwAAaEhqmRYAAGhDaq4DAABoNGjyaERqjwYAAGhJaHVoMmoMEQAAaDhqBQwAAGhGas4FAABoQmocDQAAaD5q5BgAAGgzahYKAABoNmqOGAAAdVUSc3Vic3RpdHV0aW9uX25hbWVzcnEaAAB9cnIaAABoYmhyaGR9cnMaAAAoaGpdcnQaAABoZl1ydRoAAGhoXXJ2GgAAVQZzb3VyY2VydxoAAGhgaGxdcngaAABobl1yeRoAAHVVCWZvb3Rub3Rlc3J6GgAAXXJ7GgAAVQZyZWZpZHNyfBoAAH1yfRoAAChoSV1yfhoAAGhYYWhHXXJ/GgAAarQRAABhaDpdcoAaAABqngUAAGF1dWIu