<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ExtendedArticleEdit</Name>
    <Version>11.0.6</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-10-29 12:51:43" Version="11.0.6">Updated package with ACL-related improvements from core.</ChangeLog>
    <ChangeLog Date="2026-04-27 16:13:31" Version="11.0.5">Update to OTOBO 11.0.16.</ChangeLog>
    <ChangeLog Date="2026-02-05 13:24:57" Version="11.0.4">Update to OTOBO 11.0.15.</ChangeLog>
    <ChangeLog Date="2025-08-12 11:21:18" Version="11.0.3">Implemented sysconfig to enable or disable editing customer articles.</ChangeLog>
    <ChangeLog Date="2025-03-31 08:12:05" Version="11.0.2">Bugfixes.</ChangeLog>
    <ChangeLog Date="2025-03-25 14:51:37" Version="11.0.1">Initial Release.</ChangeLog>
    <Description Lang="en">The package ExtendedArticleEdit adds the possibility to change ticket and article attributes.</Description>
    <Framework>11.0.x</Framework>
    <BuildCommitID>4ff3dcbcc026eb62522d404c0c6269598608e244</BuildCommitID>
    <BuildDate>2026-10-29 12:51:47</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AgentTicketActionCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBkNzM0MWM5ZWMyYzZkY2E3OGJlZTNhYTYzMDk4NjY0NTk3ODgwYjQ1IC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiMgdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKdXNlIExpc3Q6OlV0aWwgcXcoYW55IGZpcnN0KTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXIgICAoKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIFRyeSB0byBsb2FkIGRyYWZ0IGlmIHJlcXVlc3RlZC4KICAgIGlmICgKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57Rm9ybURyYWZ0fQogICAgICAgICYmICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMb2FkRm9ybURyYWZ0JyApCiAgICAgICAgJiYgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1EcmFmdElEJyApCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9ID0gJFBhcmFtT2JqZWN0LT5Mb2FkRm9ybURyYWZ0KAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0SUQnICksCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFydGljbGUgZm9yIHdob20gdGhpcyBzaG91bGQgYmUgYSByZXBseSwgaWYgYXZhaWxhYmxlCiAgICBteSAkUmVwbHlUb0FydGljbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUmVwbHlUb0FydGljbGUnICkgfHwgJyc7CiAgICBteSAkVGlja2V0SUQgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGlja2V0SUQnICkgICAgICAgfHwgJyc7CgogICAgIyBjaGVjayBpZiBSZXBseVRvQXJ0aWNsZSByZWFsbHkgYmVsb25ncyB0byB0aGUgdGlja2V0CiAgICBteSAlUmVwbHlUb0FydGljbGVDb250ZW50OwogICAgaWYgKCRSZXBseVRvQXJ0aWNsZSkgewoKICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFRpY2tldElELAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICk7CiAgICAgICAgJVJlcGx5VG9BcnRpY2xlQ29udGVudCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFJlcGx5VG9BcnRpY2xlLAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gICAgICAgID0gJFJlcGx5VG9BcnRpY2xlOwogICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSA9IFwlUmVwbHlUb0FydGljbGVDb250ZW50OwoKICAgICAgICAjIGdldCBzZW5kZXIgb2Ygb3JpZ2luYWwgbm90ZSAodG8gaW5mb3JtIHNlbmRlciBhYm91dCBhbnN3ZXIpCiAgICAgICAgaWYgKCAkUmVwbHlUb0FydGljbGVDb250ZW50e0NyZWF0ZUJ5fSApIHsKICAgICAgICAgICAgbXkgQFJlcGx5VG9TZW5kZXJJRCA9ICggJFJlcGx5VG9BcnRpY2xlQ29udGVudHtDcmVhdGVCeX0gKTsKICAgICAgICAgICAgJFNlbGYtPntSZXBseVRvU2VuZGVyVXNlcklEfSA9IFxAUmVwbHlUb1NlbmRlcklEOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGJlbG9uZ3MgdG8gb3RoZXIgdGlja2V0LCBkb24ndCB1c2UgaXQgYXMgcmVwbHkKICAgICAgICBpZiAoICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7VGlja2V0SUR9IG5lICRTZWxmLT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSA9ICIiOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhcnRpY2xlIGlzIG5vdCBvZiB0eXBlIG5vdGUtaW50ZXJuYWwsIGRvbid0IHVzZSBpdCBhcyByZXBseQogICAgICAgIGlmICgKICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIG5lICdJbnRlcm5hbCcKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpIGVxICdJbnRlcm5hbCcKICAgICAgICAgICAgICAgICYmICRSZXBseVRvQXJ0aWNsZUNvbnRlbnR7U2VuZGVyVHlwZX0gbmUgJ2FnZW50JwogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRTZWxmLT57UmVwbHlUb0FydGljbGV9ID0gIiI7CiAgICAgICAgfQogICAgfQoKICAgICMgZnJvbnRlbmQgc3BlY2lmaWMgY29uZmlnCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAxLAoKICAgICAgICAjIG9ubHkgc2NyZWVucyB0aGF0IGFkZCBub3RlcyBjYW4gbW9kaWZ5IEFydGljbGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBPYmplY3RUeXBlICA9PiAkQ29uZmlnLT57Tm90ZX0gPyBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXSA6IFsnVGlja2V0J10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgIG15ICRUaWNrZXREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6TWFzaycpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIE1hc2sgPT4gJFNlbGYtPntBY3Rpb259LAogICAgKSB8fCB7fTsKCiAgICAjIGRlZmluaXRpb25zIGFyZSBzcGxpdCB1cCBiZWNhdXNlIGFydGljbGUgaXMgcmVuZGVyZWQgc2VwYXJhdGVseQogICAgJFNlbGYtPntUaWNrZXRNYXNrRGVmaW5pdGlvbn0gID0gJFRpY2tldERlZmluaXRpb24tPntNYXNrfTsKICAgICRTZWxmLT57QXJ0aWNsZU1hc2tEZWZpbml0aW9ufSA9IFtdOwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ICAgICAgICAgID0ge307CgogICAgIyBhbGlnbiBzeXNjb25maWcgYW5kIHRpY2tldCBtYXNrIGRhdGEgSQogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyAkRHluYW1pY0ZpZWxkTGlzdCAvLyBbXSB9ICkgewoKICAgICAgICAjIHNlcGFyYXRlIHRpY2tldCBhbmQgYXJ0aWNsZSB0eXBlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgICAgIGlmICggZXhpc3RzICRUaWNrZXREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkc317ICREeW5hbWljRmllbGQtPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJFBhcmFtZXRlcnMgPSBkZWxldGUgJFRpY2tldERlZmluaXRpb24tPntEeW5hbWljRmllbGRzfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gLy8ge307CgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICRQYXJhbWV0ZXJzLT4lKiApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57JEF0dHJpYnV0ZX0gPSAkUGFyYW1ldGVycy0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCAkU2VsZi0+e1RpY2tldE1hc2tEZWZpbml0aW9ufS0+QCosIHsKICAgICAgICAgICAgICAgICAgICBERiAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPT0gMiA/IDEgOiAwLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntNYW5kYXRvcnl9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCAkU2VsZi0+e0FydGljbGVNYXNrRGVmaW5pdGlvbn0tPkAqLCB7CiAgICAgICAgICAgICAgICBERiAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+ICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyID8gMSA6IDAsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoICRDb25maWctPntEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9PSAyICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e01hbmRhdG9yeX0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgIH0KCiAgICAjIGFsaWduIHN5c2NvbmZpZyBhbmQgdGlja2V0IG1hc2sgZGF0YSBJSQogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICgga2V5cyAkVGlja2V0RGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH17JER5bmFtaWNGaWVsZE5hbWV9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICk7CgogICAgICAgIG15ICRQYXJhbWV0ZXJzID0gJFRpY2tldERlZmluaXRpb24tPntEeW5hbWljRmllbGRzfXskRHluYW1pY0ZpZWxkTmFtZX0gLy8ge307CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAkUGFyYW1ldGVycy0+JSogKSB7CiAgICAgICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfXskRHluYW1pY0ZpZWxkTmFtZX17JEF0dHJpYnV0ZX0gPSAkUGFyYW1ldGVycy0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpGb3JtQ2FjaGUnKS0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICApOwoKICAgICMgbWV0aG9kcyB3aGljaCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgc3RhbmRhcmQgZmllbGRzCiAgICAkU2VsZi0+e0ZpZWxkTWV0aG9kc30gPSBbCiAgICAgICAgewogICAgICAgICAgICBGaWVsZElEID0+ICdEZXN0JywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRRdWV1ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV3VXNlcklEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRPd25lcnMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0UmVzcG9uc2libGUKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnTmV4dFN0YXRlSUQnLAogICAgICAgICAgICBNZXRob2QgID0+IFwmX0dldE5leHRTdGF0ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnUHJpb3JpdHlJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0UHJpb3JpdGllcwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWVsZElEID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICBNZXRob2QgID0+IFwmX0dldFNlcnZpY2VzCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpZWxkSUQgPT4gJ1NMQUlEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRTTEFzCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpZWxkSUQgPT4gJ1N0YW5kYXJkVGVtcGxhdGVJRCcsCiAgICAgICAgICAgIE1ldGhvZCAgPT4gXCZfR2V0U3RhbmRhcmRUZW1wbGF0ZXMKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRmllbGRJRCA9PiAnVHlwZUlEJywKICAgICAgICAgICAgTWV0aG9kICA9PiBcJl9HZXRUeXBlcwogICAgICAgIH0sCiAgICBdOwoKICAgICMgZGVwZW5kZW5jaWVzIG9mIHN0YW5kYXJkIGZpZWxkcyB3aGljaCBhcmUgbm90IGRlZmluZWQgdmlhIEFDTHMKICAgICRTZWxmLT57SW50ZXJuYWxEZXBlbmRhbmN5fSA9IHsKICAgICAgICBEZXN0ID0+IHsKICAgICAgICAgICAgTmV3VXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgICA9PiAxLAogICAgICAgICAgICBTdGFuZGFyZFRlbXBsYXRlSUQgPT4gMSwKICAgICAgICB9LAogICAgICAgIFNlcnZpY2VJRCA9PiB7CiAgICAgICAgICAgIFNMQUlEICAgICA9PiAxLAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gMSwgICAgI0N1c3RvbWVyVXNlciB1cGRhdGVzIGNhbiBiZSBzdWJtaXR0ZWQgYXMgRWxlbWVudENoYW5nZWQ6IFNlcnZpY2VJRAogICAgICAgIH0sCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+IHsKICAgICAgICAgICAgU2VydmljZUlEID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPd25lckFsbCA9PiB7CiAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVzcG9uc2libGVBbGwgPT4gewogICAgICAgICAgICBOZXdSZXNwb25zaWJsZUlEID0+IDEsCiAgICAgICAgfSwKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpGaWVsZFJlc3RyaWN0aW9ucycpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUaWNrZXRJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfQogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbiwgZG9uJ3Qgc2hvdyB0aWNrZXQKICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEFDTCByZXN0cmljdGlvbnMKICAgIG15ICVQb3NzaWJsZUFjdGlvbnMgPSAoIDEgPT4gJFNlbGYtPntBY3Rpb259ICk7CgogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUG9zc2libGVBY3Rpb25zLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAlQWNsQWN0aW9uID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsQWN0aW9uRGF0YSgpOwoKICAgICMgY2hlY2sgaWYgQUNMIHJlc3RyaWN0aW9ucyBleGlzdAogICAgaWYgKCRBQ0wpIHsKCiAgICAgICAgbXkgJUFjbEFjdGlvbkxvb2t1cCA9IHJldmVyc2UgJUFjbEFjdGlvbjsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbiBpZiBBQ0wgcHJvaGliaXRzIHRoaXMgYWN0aW9uCiAgICAgICAgaWYgKCAhJEFjbEFjdGlvbkxvb2t1cHsgJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBmb3IgZmFpbGVkIGRyYWZ0IGxvYWRpbmcgcmVxdWVzdC4KICAgIGlmICgKICAgICAgICAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTG9hZEZvcm1EcmFmdCcgKQogICAgICAgICYmICEkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdMb2FkaW5nIGRyYWZ0IGZhaWxlZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvYWRlZEZvcm1EcmFmdDsKICAgIGlmICggJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgJExvYWRlZEZvcm1EcmFmdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKS0+Rm9ybURyYWZ0R2V0KAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfSwKICAgICAgICAgICAgR2V0Q29udGVudCAgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBPbmx5TGFzdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmIChAQXJ0aWNsZXMpIHsKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlID0gJEFydGljbGVzWzBdOwoKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZTsKICAgICAgICAgICAgaWYgKCAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgICAgIG15ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWUgPSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGb3JtRHJhZnRTeXN0ZW1UaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZVRpbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdFN5c3RlbVRpbWUgPSAkRm9ybURyYWZ0U3lzdGVtVGltZU9iamVjdC0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgaWYgKCAhJExhc3RBcnRpY2xlU3lzdGVtVGltZSB8fCAkRm9ybURyYWZ0U3lzdGVtVGltZSA8PSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAgICAgJFBhcmFte0Zvcm1EcmFmdE91dGRhdGVkfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTG9hZGVkRm9ybURyYWZ0KSApIHsKCiAgICAgICAgJExvYWRlZEZvcm1EcmFmdC0+e0NoYW5nZUJ5TmFtZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRMb2FkZWRGb3JtRHJhZnQtPntDaGFuZ2VCeX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CiAgICBteSBAQXJ0aWNsZUF0dGFjaG1lbnRzOwogICAgbXkgJUFydGljbGVEYXRhOwoKICAgICMgaWYgd2UgYXJlIGVkaXRpbmcgYW4gYXJ0aWNsZQogICAgaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gJiYgISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICBSZWFsTmFtZXMgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBrZXlzICVBcnRpY2xlRGF0YSApIHsKICAgICAgICAgICAgQEFydGljbGVBdHRhY2htZW50cyA9ICRTZWxmLT5fQ29weUFydGljbGVBdHRhY2htZW50c1RvVXBsb2FkQ2FjaGUoCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAlR2V0UGFyYW0gPSAkU2VsZi0+X0xvYWRBcnRpY2xlRWRpdCgKICAgICAgICAgICAgICAgIEFydGljbGVEYXRhICAgICAgICAgID0+IFwlQXJ0aWNsZURhdGEsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIEFydGljbGVCYWNrZW5kT2JqZWN0ID0+ICRBcnRpY2xlQmFja2VuZE9iamVjdAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdQcm9wZXJ0aWVzJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRm9ybURyYWZ0ICAgICAgPT4gJENvbmZpZy0+e0Zvcm1EcmFmdH0sCiAgICAgICAgICAgIEZvcm1EcmFmdElEICAgID0+ICRTZWxmLT57TG9hZGVkRm9ybURyYWZ0SUR9LAogICAgICAgICAgICBGb3JtRHJhZnRUaXRsZSA9PiAkTG9hZGVkRm9ybURyYWZ0ID8gJExvYWRlZEZvcm1EcmFmdC0+e1RpdGxlfSA6ICcnLAogICAgICAgICAgICBGb3JtRHJhZnRNZXRhICA9PiAkTG9hZGVkRm9ybURyYWZ0LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIFJlcGx5VG9BcnRpY2xlID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICA9PiAkU2VsZi0+e0FydGljbGVJRH0gfHwgJycsCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgcmlnaHQgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdIZWFkZXInIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBcnRpY2xlVGl0bGUgPT4gJEdldFBhcmFte1N1YmplY3R9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGxvY2sgc3RhdGUKICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgaWYgKCAhJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja0dldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKSApIHsKCiAgICAgICAgICAgIG15ICRMb2NrID0gJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJExvY2spIHsKCiAgICAgICAgICAgICAgICAjIFNldCBuZXcgb3duZXIgaWYgdGlja2V0IG93bmVyIGlzIGRpZmZlcmVudCB0aGVuIGxvZ2dlZCB1c2VyLgogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0e093bmVySUR9ICE9ICRTZWxmLT57VXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBSZW1lbWJlciBwcmV2aW91cyBvd25lciwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlc3RvcmUgdGlja2V0IG93bmVyIG9uIHVuZG8gYWN0aW9uLgogICAgICAgICAgICAgICAgICAgICRQYXJhbXtQcmV2aW91c093bmVyfSA9ICRUaWNrZXR7T3duZXJJRH07CgogICAgICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFNob3cgbG9jayBzdGF0ZS4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXNMb2NrJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFRpY2tldE9iamVjdC0+T3duZXJDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgT3duZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRUaWNrZXR7TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5XYXJuaW5nKAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSB0aWNrZXQgb3duZXIgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjaGFuZ2UgdGhlIG93bmVyIGZpcnN0LicpLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IGJhY2sgbGluayB3aGVuIHRoZSBvd25lciBjaGVjayB3YXMgb2sKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRCYWNrJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldEJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbXMKICAgIFBBUkFNRVRFUjoKICAgIGZvciBteSAkS2V5ICgKICAgICAgICBxdygKICAgICAgICAgICAgTmV3U3RhdGVJRCBOZXdQcmlvcml0eUlEIFRpbWVVbml0cyBJc1Zpc2libGVGb3JDdXN0b21lciBUaXRsZSBCb2R5IFN1YmplY3QgTmV3UXVldWVJRAogICAgICAgICAgICBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSBOZXdPd25lcklEIE5ld1Jlc3BvbnNpYmxlSUQgVHlwZUlEIFNlcnZpY2VJRCBTTEFJRAogICAgICAgICAgICBSZXBseVRvQXJ0aWNsZSBTdGFuZGFyZFRlbXBsYXRlSUQgQ3JlYXRlQXJ0aWNsZSBGb3JtRHJhZnRJRCBUaXRsZQogICAgICAgICkKICAgICAgICApCiAgICB7CgogICAgICAgIG5leHQgUEFSQU1FVEVSIGlmICRTZWxmLT57QXJ0aWNsZUlEfSAmJiAhJFNlbGYtPntTdWJhY3Rpb259ICYmICggJEtleSBlcSAnQm9keScgfHwgJEtleSBlcSAnU3ViamVjdCcgKTsKCiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgfQoKICAgICMgQUNMIGNvbXBhdGliaWxpdHkgdHJhbnNsYXRpb24KICAgIG15ICVBQ0xDb21wYXRHZXRQYXJhbSA9ICgKICAgICAgICBTdGF0ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICBQcmlvcml0eUlEICAgID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICBPd25lcklEICAgICAgID0+ICRHZXRQYXJhbXtOZXdPd25lcklEfSwKICAgICAgICBSZXNwb25zaWJsZUlEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgaW50byBhIHN0cnVjdHVyZSBmb3IgQUNMcwogICAgewogICAgICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRJdGVtOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgZGVmaW5lZCAkRHluYW1pY0ZpZWxkVmFsdWVzeyREeW5hbWljRmllbGRJdGVtfTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkSXRlbSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkSXRlbX07CiAgICAgICAgfQogICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gXCVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgfQoKICAgICMgdHJhbnNmb3JtIHBlbmRpbmcgdGltZSwgdGltZSBzdGFtcCBiYXNlZCBvbiB1c2VyIHRpbWUgem9uZQogICAgaWYgKAogICAgICAgIGRlZmluZWQgJEdldFBhcmFte1llYXJ9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17TW9udGh9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17RGF5fQogICAgICAgICYmIGRlZmluZWQgJEdldFBhcmFte0hvdXJ9CiAgICAgICAgJiYgZGVmaW5lZCAkR2V0UGFyYW17TWludXRlfQogICAgICAgICkKICAgIHsKICAgICAgICAlR2V0UGFyYW0gPSAkTGF5b3V0T2JqZWN0LT5UcmFuc2Zvcm1EYXRlU2VsZWN0aW9uKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJld3JhcCBib2R5IGlmIG5vIHJpY2ggdGV4dCBpcyB1c2VkCiAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSAmJiAhJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+V3JhcFBsYWluVGV4dCgKICAgICAgICAgICAgTWF4Q2hhcmFjdGVycyA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZScpLAogICAgICAgICAgICBQbGFpblRleHQgICAgID0+ICRHZXRQYXJhbXtCb2R5fSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVwbG9hZCBjYWNoZSBvYmplY3QKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgaWYgKAogICAgICAgICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RvcmUnCiAgICAgICAgfHwKICAgICAgICAkU2VsZi0+e0xvYWRlZEZvcm1EcmFmdElEfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdG9yZScgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKICAgICAgICB9CgogICAgICAgICRHZXRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gLy89IDA7CgogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBhbmQgdmFsaWRhdGUgZHJhZnQgYWN0aW9uLgogICAgICAgIG15ICRGb3JtRHJhZnRBY3Rpb24gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybURyYWZ0QWN0aW9uJyApOwogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJENvbmZpZy0+e0Zvcm1EcmFmdH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdGb3JtRHJhZnQgZnVuY3Rpb25hbGl0eSBkaXNhYmxlZCEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVGb3JtRHJhZnRSZXNwb25zZTsKCiAgICAgICAgIyBDaGVjayBkcmFmdCBuYW1lLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEZvcm1EcmFmdEFjdGlvbgogICAgICAgICAgICAmJgogICAgICAgICAgICAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgfHwgJEZvcm1EcmFmdEFjdGlvbiBlcSAnVXBkYXRlJyApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRUaXRsZScgKTsKCiAgICAgICAgICAgICMgQSBkcmFmdCBuYW1lIGlzIHJlcXVpcmVkLgogICAgICAgICAgICBpZiAoICEkVGl0bGUgKSB7CgogICAgICAgICAgICAgICAgJUZvcm1EcmFmdFJlc3BvbnNlID0gKAogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgiRHJhZnQgbmFtZSBpcyByZXF1aXJlZCEiKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ2hvc2VuIGRyYWZ0IG5hbWUgbXVzdCBiZSB1bmlxdWUuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEZvcm1EcmFmdExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdExpc3RHZXQoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIERSQUZUOgogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JtRHJhZnQgKCBAeyRGb3JtRHJhZnRMaXN0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBObyBleGlzdGluZyBkcmFmdCB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUIGlmICRUaXRsZSBuZSAkRm9ybURyYWZ0LT57VGl0bGV9OwoKICAgICAgICAgICAgICAgICAgICAjIFNhbWUgbmFtZSBmb3IgdXBkYXRlIG9uIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gZXEgJEZvcm1EcmFmdC0+e0Zvcm1EcmFmdElEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERSQUZUOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGRyYWZ0IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICAgICAgICAgICVGb3JtRHJhZnRSZXNwb25zZSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSggIkZvcm1EcmFmdCBuYW1lICVzIGlzIGFscmVhZHkgaW4gdXNlISIsICRUaXRsZSApLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGxhc3QgRFJBRlQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUGVyZm9ybSBkcmFmdCBhY3Rpb24gaW5zdGVhZCBvZiBzYXZpbmcgZm9ybSBkYXRhIGluIHRpY2tldC9hcnRpY2xlLgogICAgICAgIGlmICggJEZvcm1EcmFmdEFjdGlvbiAmJiAhJUZvcm1EcmFmdFJlc3BvbnNlICkgewoKICAgICAgICAgICAgIyBSZXNldCBGb3JtRHJhZnRJRCB0byBwcmV2ZW50IHVwZGF0aW5nIGV4aXN0aW5nIGRyYWZ0LgogICAgICAgICAgICBpZiAoICRGb3JtRHJhZnRBY3Rpb24gZXEgJ0FkZCcgJiYgJEdldFBhcmFte0Zvcm1EcmFmdElEfSApIHsKCiAgICAgICAgICAgICAgICAjIG1lZGRsaW5nIHdpdGggdGhlIGlubmFyZHMgb2YgS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcmFtT2JqZWN0LT5TZXRBcnJheSgKICAgICAgICAgICAgICAgICAgICBQYXJhbSAgPT4gJ0Zvcm1EcmFmdElEJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgPT4gWycnXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdEFjdGlvbk9rOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0QWN0aW9uIGVxICdBZGQnCiAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgKCAkRm9ybURyYWZ0QWN0aW9uIGVxICdVcGRhdGUnICYmICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0QWN0aW9uT2sgPSAkUGFyYW1PYmplY3QtPlNhdmVGb3JtRHJhZnQoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlUGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVwbHlUb0FydGljbGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkRm9ybURyYWZ0QWN0aW9uT2spIHsKICAgICAgICAgICAgICAgICRGb3JtRHJhZnRSZXNwb25zZXtTdWNjZXNzfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAlRm9ybURyYWZ0UmVzcG9uc2UgPSAoCiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3QgcGVyZm9ybSByZXF1ZXN0ZWQgZHJhZnQgYWN0aW9uIScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFJldHVybiBKU09OIHdoZW4gdGhlcmUgYWxyZWFkeSBpcyBhIHJlc3BvbnNlCiAgICAgICAgaWYgKCVGb3JtRHJhZnRSZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJUZvcm1EcmFmdFJlc3BvbnNlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzdGF0ZSBvYmplY3QKICAgICAgICBteSAkU3RhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKCiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgY2hlY2sgcGVuZGluZyB0aW1lCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVTdGF0ZURhdGEgPSAkU3RhdGVPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJEdldFBhcmFte05ld1N0YXRlSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBzdGF0ZSB0eXBlCiAgICAgICAgICAgIGlmICggJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15wZW5kaW5nL2kgKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICAgICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgZGF0ZXRpbWUgb2JqZWN0CiAgICAgICAgICAgICAgICBteSAkUGVuZGluZ0RhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGN1cnJlbnQgc3lzdGVtIGVwb2NoCiAgICAgICAgICAgICAgICBteSAkQ3VyU3lzdGVtRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGRhdGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhJFBlbmRpbmdEYXRlVGltZU9iamVjdAogICAgICAgICAgICAgICAgICAgIHx8ICRQZW5kaW5nRGF0ZVRpbWVPYmplY3QgPCAkQ3VyU3lzdGVtRGF0ZVRpbWVPYmplY3QKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yeydEYXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgICAgICAjIGlmIGFjdGlvbiBpcyBBcnRpY2xlRWRpdCwgY2hlY2sgaWYgYXJ0aWNsZSBpcyBlZGl0YWJsZQogICAgICAgIG15ICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgPSAwOwogICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEFydGljbGVFZGl0JyAmJiAkQ29uZmlnLT57QXJ0aWNsZX0gJiYgJFNlbGYtPntBcnRpY2xlSUR9ICkgewoKICAgICAgICAgICAgIyBmZXRjaCBjb21tdW5pY2F0aW9uIGNoYW5uZWwgaWQgYnkgYXJ0aWNsZSBpZAogICAgICAgICAgICBteSBAQmFzZUFydGljbGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5BcnRpY2xlTGlzdCgKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmIChAQmFzZUFydGljbGVzKSB7CiAgICAgICAgICAgICAgICBteSAkQ29tbXVuaWNhdGlvbkNoYW5uZWxJRCA9ICRCYXNlQXJ0aWNsZXNbMF0tPntDb21tdW5pY2F0aW9uQ2hhbm5lbElEfTsKICAgICAgICAgICAgICAgIG15ICVDb21tdW5pY2F0aW9uQ2hhbm5lbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb21tdW5pY2F0aW9uQ2hhbm5lbCcpLT5DaGFubmVsR2V0KAogICAgICAgICAgICAgICAgICAgIENoYW5uZWxJRCAgID0+ICRDb21tdW5pY2F0aW9uQ2hhbm5lbElELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgPSAkU2VsZi0+X0NoZWNrQXJ0aWNsZUVkaXRpbmdFbmFibGVkKAogICAgICAgICAgICAgICAgICAgIEFydGljbGUgICAgICAgICAgICAgID0+ICRDb25maWctPntBcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAkQ29tbXVuaWNhdGlvbkNoYW5uZWx7Q2hhbm5lbE5hbWV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fSA9ICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQ7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0gPSAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkOwogICAgICAgICAgICB9CiAgICAgICAgfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Tm90ZX0gJiYgJENvbmZpZy0+e05vdGVNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBzdWJqZWN0CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtTdWJqZWN0fSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnU3ViamVjdEludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYm9keQogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17Qm9keX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J0JvZHlJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG93bmVyCiAgICAgICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICYmICRDb25maWctPntPd25lck1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3T3duZXJJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlc3BvbnNpYmxlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57UmVzcG9uc2libGV9ICYmICRDb25maWctPntSZXNwb25zaWJsZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3UmVzcG9uc2libGVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRpdGxlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICYmICEkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAkRXJyb3J7J1RpdGxlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdHlwZQogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkKICAgICAgICAgICAgJiYKICAgICAgICAgICAgKCAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSAmJgogICAgICAgICAgICAoICEkR2V0UGFyYW17VHlwZUlEfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnVHlwZUlESW52YWxpZCd9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHNlcnZpY2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykKICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2V9CiAgICAgICAgICAgICYmICRHZXRQYXJhbXtTTEFJRH0KICAgICAgICAgICAgJiYgISRHZXRQYXJhbXtTZXJ2aWNlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnsnU2VydmljZUludmFsaWQnfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBtYW5kYXRvcnkgc2VydmljZQogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKQogICAgICAgICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0KICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9CiAgICAgICAgICAgICYmICEkR2V0UGFyYW17U2VydmljZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRXJyb3J7J1NlcnZpY2VJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHNsYQogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKQogICAgICAgICAgICAmJiAkQ29uZmlnLT57U2VydmljZX0KICAgICAgICAgICAgJiYgJENvbmZpZy0+e1NMQU1hbmRhdG9yeX0KICAgICAgICAgICAgJiYgISRHZXRQYXJhbXtTTEFJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydTTEFJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbWFuZGF0b3J5IHF1ZXVlCiAgICAgICAgaWYgKCAkQ29uZmlnLT57UXVldWV9ICYmICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtOZXdRdWV1ZUlEfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsnTmV3UXVldWVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG1hbmRhdG9yeSBzdGF0ZQogICAgICAgIGlmICggJENvbmZpZy0+e1N0YXRlfSAmJiAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9ICkgewogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17TmV3U3RhdGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7J05ld1N0YXRlSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB0aW1lIHVuaXRzLCBidXQgb25seSBpZiB0aGUgY3VycmVudCBzY3JlZW4gaGFzIGEgbm90ZQogICAgICAgICMgICAoYWNjb3VudGVkIHRpbWUgY2FuIG9ubHkgYmUgc3RvcmVkIGlmIGFuZCBhcnRpY2xlIGlzIGdlbmVyYXRlZCkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKQogICAgICAgICAgICAmJiAkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0KICAgICAgICAgICAgJiYgJEdldFBhcmFte1RpbWVVbml0c30gZXEgJycKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yeydUaW1lVW5pdHNJbnZhbGlkJ30gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgICMgc2tpcCB2YWxpZGF0aW9uIG9mIGhpZGRlbiBmaWVsZHMKICAgICAgICBteSAlVmlzaWJpbGl0eTsKCiAgICAgICAgIyB0cmFuc2Zvcm0gZHluYW1pYyBmaWVsZCBkYXRhIGludG8gREZOYW1lID0+IERGTmFtZSBwYWlyCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEFjbCA9IG1hcCB7ICRfID0+ICRfIH0ga2V5cyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqOwoKICAgICAgICAjIGNhbGwgdGlja2V0IEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0Zvcm0nLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZEFjbCwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTFJlc3VsdCkgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDAgfSBrZXlzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVBY2xEYXRhICkgewogICAgICAgICAgICAgICAgJFZpc2liaWxpdHl7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZCB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBkeW5hbWljIGZpZWxkIHZhbGlkYXRpb24gcmVzdWx0cyBpZiBlcnJvbmVvdXMKICAgICAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFsc28gcGFzcyBvYmplY3QgaGVyZT8KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgRG8gbm90IHZhbGlkYXRlIG9ubHkgaWYgb2JqZWN0IHR5cGUgaXMgQXJ0aWNsZSBhbmQgQ3JlYXRlQXJ0aWNsZSB2YWx1ZSBpcyBub3QgZGVmaW5lZCwgb3IgRmllbGQgaXMgaW52aXNpYmxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0FydGljbGUnICYmICEkR2V0UGFyYW17Q3JlYXRlQXJ0aWNsZX0gKQogICAgICAgICAgICAgICAgJiYgJFZpc2liaWxpdHl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKCiAgICAgICAgICAgICAgICAgICAgIyBNYW5kYXRvcnkgaXMgYWRkZWQgdG8gdGhlIGNvbmZpZ3MgYnkgJFNlbGYtPm5ldwogICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TWFuZGF0b3J5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICVzIScsICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUHJvcGFnYXRlIHZhbGlkYXRpb24gZXJyb3IgdG8gdGhlIEVycm9yIHZhcmlhYmxlIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSBmcm9udGVuZC4KICAgICAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gICAgICAgICAgICAgICAgICAgICAgICA9ICcgU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBzYXZlIGZvcm0gaWYgYSBkcmFmdCB3YXMgbG9hZGVkLgogICAgICAgIGlmICggJFNlbGYtPntMb2FkZWRGb3JtRHJhZnRJRH0gKSB7CiAgICAgICAgICAgICVFcnJvciA9ICggTG9hZGVkRm9ybURyYWZ0ID0+IDEgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZXJyb3JzCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgICAgICBWaXNpYmlsaXR5ICAgICAgID0+IFwlVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICAgICBERlBvc3NpYmxlVmFsdWVzID0+IFwlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgREZFcnJvcnMgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFZhbGlkYXRpb25SZXN1bHQsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdGl0bGUKICAgICAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17VGl0bGV9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgdHlwZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlQUNMQ29tcGF0R2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCAgID0+ICRHZXRQYXJhbXtUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUFDTENvbXBhdEdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkR2V0UGFyYW17U0xBSUR9ICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlQUNMQ29tcGF0R2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgIFNMQUlEICAgID0+ICRHZXRQYXJhbXtTTEFJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFVubG9ja09uQXdheSA9IDE7CgogICAgICAgICMgbW92ZSB0aWNrZXQgdG8gYSBuZXcgcXVldWUsIGJ1dCBvbmx5IGlmIHRoZSBxdWV1ZSB3YXMgY2hhbmdlZAogICAgICAgIGlmICgKICAgICAgICAgICAgJENvbmZpZy0+e1F1ZXVlfQogICAgICAgICAgICAmJiAkR2V0UGFyYW17TmV3UXVldWVJRH0KICAgICAgICAgICAgJiYgJEdldFBhcmFte05ld1F1ZXVlSUR9IG5lICRUaWNrZXR7UXVldWVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbW92ZSB0aWNrZXQgKHNlbmQgbm90aWZpY2F0aW9uIGlmIG5vIG5ldyBvd25lciBpcyBzZWxlY3RlZCkKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJyc7CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEJvZHlUZXh0ID0gJEdldFBhcmFte0JvZHl9IHx8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJE1vdmUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRRdWV1ZVNldCgKICAgICAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgU2VuZE5vTm90aWZpY2F0aW9uID0+ICRHZXRQYXJhbXtOZXdVc2VySUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICAgICAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRNb3ZlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBvd25lcgogICAgICAgIG15IEBOb3RpZnlEb25lOwogICAgICAgIGlmICggJENvbmZpZy0+e093bmVyfSApIHsKICAgICAgICAgICAgbXkgJEJvZHlUZXh0ID0gJExheW91dE9iamVjdC0+UmljaFRleHQyQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtOZXdPd25lcklEfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgID0+ICRCb2R5VGV4dCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVW5sb2NrT25Bd2F5ID0gMDsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgb3duZXIgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgICAgICAgICBteSAkQm9keVRleHQgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dDJBc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0JvZHl9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgTmV3VXNlcklEID0+ICRHZXRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgPT4gJEJvZHlUZXh0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRvIG5vdCBub3RpZnkgcmVzcG9uc2libGUgdHdpY2UKICAgICAgICAgICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgJFN1Y2Nlc3MgZXEgMSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBOb3RpZnlEb25lLCAkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIG5vdGUKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJyc7CiAgICAgICAgbXkgJFJldHVyblVSTDsKCiAgICAgICAgIyBzZXQgcHJpb3JpdHkKICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQcmlvcml0eUlEID0+ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gJiYgJEdldFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZVNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1bmxvY2sgdGhlIHRpY2tldCBhZnRlciBjbG9zZQogICAgICAgICAgICBteSAlU3RhdGVEYXRhID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgICAgIElEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZSBzdGF0ZQogICAgICAgICAgICBpZiAoICRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9eY2xvc2UvaSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgcGVuZGluZyB0aW1lIG9uIHBlbmRpbmcgc3RhdGUKICAgICAgICAgICAgZWxzaWYgKCAkU3RhdGVEYXRhe1R5cGVOYW1lfSA9fiAvXnBlbmRpbmcvaSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHBhcmVudCB3aW5kb3cgdG8gbGFzdCBzY3JlZW4gb3ZlcnZpZXcgb24gY2xvc2VkIHRpY2tldHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pCiAgICAgICAgICAgICAgICAmJiAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpSZWRpcmVjdEFmdGVyQ2xvc2VEaXNhYmxlZCcpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRSZXR1cm5VUkwgPSAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30gfHwgJ0FjdGlvbj1BZ2VudERhc2hib2FyZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte0NyZWF0ZUFydGljbGV9CiAgICAgICAgICAgICYmICRDb25maWctPntOb3RlfQogICAgICAgICAgICAmJiAoICRHZXRQYXJhbXtTdWJqZWN0fSB8fCAkR2V0UGFyYW17Qm9keX0gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1N1YmplY3R9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3ViamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1YmplY3QgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRDb25maWctPntTdWJqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtTdWJqZWN0fSA9ICRTdWJqZWN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJEdldFBhcmFte1N1YmplY3R9CiAgICAgICAgICAgICAgICAgICAgfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBzdWJqZWN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHByZSBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudHMsIFwlVXBsb2FkU3R1ZmY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRNaW1lVHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICRNaW1lVHlwZSA9ICd0ZXh0L2h0bWwnOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHVudXNlZCBpbmxpbmUgaW1hZ2VzCiAgICAgICAgICAgICAgICBteSBATmV3QXR0YWNobWVudERhdGE7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElEID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID1+IC9pbWFnZS9pICkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50SURIVE1MUXVvdGUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3JrYXJvdW5kIGZvciBsaW5rIGVuY29kZSBvZiByaWNoIHRleHQgZWRpdG9yLCBzZWUgYnVnIzUwNTMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17Qm9keX0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGF0dGFjaG1lbnQgaWYgbm90IGxpbmtlZCBpbiBib2R5CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0JvZHl9ICF+IC8oXFEkQ29udGVudElESFRNTFF1b3RlXEV8XFEkQ29udGVudElEXEUpL2k7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGlubGluZSBpbWFnZXMgYW5kIG5vcm1hbCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIHB1c2ggQE5ld0F0dGFjaG1lbnREYXRhLCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAQXR0YWNobWVudHMgPSBATmV3QXR0YWNobWVudERhdGE7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaHRtbCBkb2N1bWVudAogICAgICAgICAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRnJvbSA9ICJcIiRTZWxmLT57VXNlckZ1bGxuYW1lfVwiIDwkU2VsZi0+e1VzZXJFbWFpbH0+IjsKICAgICAgICAgICAgbXkgQE5vdGlmeVVzZXJJRHM7CgogICAgICAgICAgICAjIGdldCBsaXN0IG9mIHVzZXJzIHRoYXQgd2lsbCBiZSBpbmZvcm1lZCB3aXRob3V0IHNlbGVjdGlvbiBpbiBpbmZvcm1lZC9pbnZvbHZlZCBsaXN0CiAgICAgICAgICAgIG15IEBVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gPSBzcGxpdCAvLC8sICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24nICkgfHwgIiI7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwoKICAgICAgICAgICAgIyBnZXQgaW52b2x2ZWQgdXNlciBsaXN0CiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE5vdGlmeVVzZXJJRHMsIEBJbmZvcm1Vc2VySUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQEludm9sdmVkVXNlcklEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBATm90aWZ5VXNlcklEcywgQFVzZXJMaXN0V2l0aG91dFNlbGVjdGlvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50VGlja2V0RW1haWxPdXRib3VuZCcgKSB7CiAgICAgICAgICAgICAgICAkQXJ0aWNsZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6RW1haWwnKS0+QXJ0aWNsZVNlbmQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICAgICAgICAgICAgID0+ICRNaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeVR5cGV9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICBFeGNsdWRlTXV0ZU5vdGlmaWNhdGlvblRvVXNlcklEID0+IFxATm90aWZ5RG9uZSwKICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gKSB7CiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgICAgICAgICAgICAgJEFydGljbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6OkludGVybmFsJyktPkFydGljbGVFZGl0KAojICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKIyAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBcnRpY2xlSUR9LCAgICAgICAgICAgICAjSW5jbHVkZSB0aGUgb3JpZ2luYWwgYXJ0aWNsZSBpZCBmb3IgYXJ0aWNsZSB2ZXJzaW9uaW5nCiMgICAgICAgICAgICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICAgICAgICAgICAgID0+ICdhZ2VudCcsCiMgICAgICAgICAgICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRGcm9tLAojICAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiMgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiMgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKIyAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKIyAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlDb21tZW50fSwKIyAgICAgICAgICAgICAgICAgICAgIEZvcmNlTm90aWZpY2F0aW9uVG9Vc2VySUQgICAgICAgPT4gXEBOb3RpZnlVc2VySURzLAojICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiMgICAgICAgICAgICAgICAgICAgICBVbmxvY2tPbkF3YXkgICAgICAgICAgICAgICAgICAgID0+ICRVbmxvY2tPbkF3YXksCiMgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ICAgICAgICAgICAgICAgICAgICAgID0+IFxAQXR0YWNobWVudHMsCiMgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKIyAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKIyAgICAgICAgICAgICAgICAgKTsKIyAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBlZGl0aW5nIGlzIG5lY2Vzc2FyeSBieSBjb21wYXJpbmcgYXJ0aWNsZSBib2R5CiAgICAgICAgICAgICAgICBteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVBcnRpY2xlID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEICAgICA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJlYWxOYW1lcyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVEYXRhID0gJFNlbGYtPl9Mb2FkQXJ0aWNsZUVkaXQoCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZURhdGEgICAgICAgICAgPT4gXCVBcnRpY2xlLAogICAgICAgICAgICAgICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IFwlVGlja2V0LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVCYWNrZW5kT2JqZWN0ID0+ICRBcnRpY2xlQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBOb0F0dGFjaG1lbnRzICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNhbml0aXplIGJvdGggYm9keSBzdHJpbmdzIGZyb20gY29udGVudCBpZHMgZm9yIGNvbXBhcmlzb24KICAgICAgICAgICAgICAgIG15ICRFeGlzdGluZ0JvZHkgPSAkRGF0YXtCb2R5fTsKICAgICAgICAgICAgICAgICRFeGlzdGluZ0JvZHkgPX4gcy8oPXwifCcpY2lkOiguKj8pKCJ8J3w+fFwvPnxccykvL2VneGk7CiAgICAgICAgICAgICAgICBteSAkTmV3Qm9keSA9ICRHZXRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICROZXdCb2R5ID1+IHMvKD18InwnKWNpZDooLio/KSgifCd8PnxcLz58XHMpLy9lZ3hpOwoKICAgICAgICAgICAgICAgICMgY29tcGFyZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRzRGlmZmVyZW50ID0gMDsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIGRlZmluZSBpZiByaWNoIHRleHQgc2hvdWxkIGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1JpY2hUZXh0fSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6Wm9vbVJpY2hUZXh0Rm9yY2UnKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgICAgICAgICB8fCAwOwoKICAgICAgICAgICAgICAgICAgICAjIEFsd2F5cyBleGNsdWRlIHBsYWluIHRleHQgYXR0YWNobWVudCwgYnV0IGV4Y2x1ZGUgSFRNTCBib2R5IG9ubHkgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQuCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlUGxhaW5UZXh0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVIVE1MQm9keSAgPT4gJFNlbGYtPntSaWNoVGV4dH0sCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgIyBHZXQgYXR0YWNobWVudCBpbmRleCAoZXhjbHVkaW5nIGJvZHkgYXR0YWNobWVudHMpLgogICAgICAgICAgICAgICAgICAgIG15ICVBdG1JbmRleCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9IH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIgQEF0dGFjaG1lbnRzICE9IHNjYWxhciggdmFsdWVzICVBdG1JbmRleCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHNEaWZmZXJlbnQgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQEF0dGFjaG1lbnRzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbXBhcmVBdHRhY2htZW50ID0gZmlyc3QgeyAkXy0+e0ZpbGVuYW1lfSBlcSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSB9IHZhbHVlcyAlQXRtSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ29tcGFyZUF0dGFjaG1lbnQpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50c0RpZmZlcmVudCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBBVFRBQ0hNRU5UOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29tcGFyZUF0dGFjaG1lbnQtPntGaWxlc2l6ZVJhd30gIT0gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRzRGlmZmVyZW50ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICggJEV4aXN0aW5nQm9keSBuZSAkTmV3Qm9keSApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkQXJ0aWNsZXtTdWJqZWN0fSBuZSAkR2V0UGFyYW17U3ViamVjdH0gKQogICAgICAgICAgICAgICAgICAgIHx8ICggJEF0dGFjaG1lbnRzRGlmZmVyZW50ICkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRBcnRpY2xlSUQgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVFZGl0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAkQXJ0aWNsZXtTZW5kZXJUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzZXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57SGlzdG9yeUNvbW1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU5vdGlmaWNhdGlvblRvVXNlcklEICAgICAgID0+IFxATm90aWZ5VXNlcklEcywKICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVubG9ja09uQXdheSAgICAgICAgICAgICAgICAgICAgPT4gJFVubG9ja09uQXdheSwKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCAgICAgICAgICAgICAgICAgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gICAgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXJ0aWNsZUlEID0gJFNlbGYtPntBcnRpY2xlSUR9OwogICAgICAgICAgICAgICAgfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRBcnRpY2xlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlOjpCYWNrZW5kOjpJbnRlcm5hbCcpLT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICAgICAgICAgICAgID0+ICRDb25maWctPntIaXN0b3J5Q29tbWVudH0sCiAgICAgICAgICAgICAgICAgICAgRm9yY2VOb3RpZmljYXRpb25Ub1VzZXJJRCAgICAgICA9PiBcQE5vdGlmeVVzZXJJRHMsCiAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU11dGVOb3RpZmljYXRpb25Ub1VzZXJJRCA9PiBcQE5vdGlmeURvbmUsCiAgICAgICAgICAgICAgICAgICAgVW5sb2NrT25Bd2F5ICAgICAgICAgICAgICAgICAgICA9PiAkVW5sb2NrT25Bd2F5LAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgICAgICAgICAgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGltZSBhY2NvdW50aW5nCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVVbml0c30gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2NvdW50VGltZSgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVGltZVVuaXQgID0+ICRHZXRQYXJhbXtUaW1lVW5pdHN9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgZm9ybSBkYXRhCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGhpZGRlbiBmaWVsZHMgY2FjaGUKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgICAgICBLZXkgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50VGlja2V0QXJ0aWNsZUVkaXQnICYmICggJENvbmZpZy0+e1RpbWVVbml0c30gfHwgJEFydGljbGVFZGl0aW5nRW5hYmxlZCApICkgewoKICAgICAgICAgICAgIyB0aW1lIGFjY291bnRpbmcKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57QXJ0aWNsZUlEfTsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17VGltZVVuaXRzfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBUaW1lVW5pdCAgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudFRpY2tldEFydGljbGVFZGl0JyAmJiAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICAgICBteSAkSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPSAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJEZWZhdWx0fTsKICAgICAgICAgICAgJElzVmlzaWJsZUZvckN1c3RvbWVyID0gJEdldFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSA/IDEgOiAwOwoKICAgICAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVVcGRhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICdJc1Zpc2libGVGb3JDdXN0b21lcicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJElzVmlzaWJsZUZvckN1c3RvbWVyLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57QXJ0aWNsZUlEfTsKICAgICAgICB9CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKICAgICAgICAjIHNldCBkeW5hbWljIGZpZWxkcwogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkVmlzaWJpbGl0eXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBJRCAoVGlja2V0SUQgb3IgQXJ0aWNsZUlEKSBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgbXkgJE9iamVjdElEID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdBcnRpY2xlJwogICAgICAgICAgICAgICAgPyAkU2VsZi0+e0FydGljbGVJRH0gfHwgJEFydGljbGVJRAogICAgICAgICAgICAgICAgOiAkU2VsZi0+e1RpY2tldElEfTsKCiAgICAgICAgICAgICMgc2V0IHRoZSB2YWx1ZSB3aGljaCB3YXMgdGFrZW4gZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgICAgICAjIFRPRE86IGZvciBSZWZlcmVuY2UgYW5kIExlbnMsIHRoZSBvcmRlciBpcyByZWxldmFudAogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIElmIGZvcm0gd2FzIGNhbGxlZCBiYXNlZCBvbiBhIGRyYWZ0LAogICAgICAgICMgICBkZWxldGUgZHJhZnQgc2luY2UgaXRzIGNvbnRlbnQgaGFzIG5vdyBiZWVuIHVzZWQuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkR2V0UGFyYW17Rm9ybURyYWZ0SUR9CiAgICAgICAgICAgICYmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Rm9ybURyYWZ0JyktPkZvcm1EcmFmdERlbGV0ZSgKICAgICAgICAgICAgICAgIEZvcm1EcmFmdElEID0+ICRHZXRQYXJhbXtGb3JtRHJhZnRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBkZWxldGUgZHJhZnQhJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvYWQgbmV3IFVSTCBpbiBwYXJlbnQgd2luZG93IGFuZCBjbG9zZSBwb3B1cAogICAgICAgICRSZXR1cm5VUkwgfHw9ICJBY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRTZWxmLT57VGlja2V0SUR9O0FydGljbGVJRD0kQXJ0aWNsZUlEIjsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAkUmV0dXJuVVJMLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFVwZGF0ZScgKSB7CiAgICAgICAgbXkgJVRpY2tldCAgICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApOwogICAgICAgIG15ICRDdXN0b21lclVzZXIgICA9ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9OwogICAgICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKCiAgICAgICAgIyB1c2UgdGhlIEZpZWxkSURzLCB3aGljaCBhcmUgZm91bmQgaW4gQWdlbnRUaWNrZXRQaG9uZS9FbWFpbCwgYW5kIEN1c3RvbWVyVGlja2V0TWVzc2FnZQogICAgICAgIG15ICVVbmlmb3JtaXR5ID0gKAogICAgICAgICAgICBOZXdRdWV1ZUlEICAgID0+ICdEZXN0JywKICAgICAgICAgICAgTmV3T3duZXJJRCAgICA9PiAnTmV3VXNlcklEJywKICAgICAgICAgICAgTmV3UHJpb3JpdHlJRCA9PiAnUHJpb3JpdHlJRCcsCiAgICAgICAgICAgIE5ld1N0YXRlSUQgICAgPT4gJ05leHRTdGF0ZUlEJywKICAgICAgICApOwogICAgICAgIGlmICggJEVsZW1lbnRDaGFuZ2VkICYmICRVbmlmb3JtaXR5eyRFbGVtZW50Q2hhbmdlZH0gKSB7CiAgICAgICAgICAgICRFbGVtZW50Q2hhbmdlZCA9ICRVbmlmb3JtaXR5eyRFbGVtZW50Q2hhbmdlZH07CiAgICAgICAgfQoKICAgICAgICAjIHVzZSB0aWNrZXQgc2VydmljZSB2YWx1ZSB3aGVuIGl0IGNhbid0IGJlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgISRDb25maWctPntTZXJ2aWNlfSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1NlcnZpY2VJRH0gPSAkVGlja2V0e1NlcnZpY2VJRH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIHVzZSB0aGUgRmllbGRJRHMsIHdoaWNoIGFyZSBmb3VuZCBpbiBBZ2VudFRpY2tldFBob25lL0VtYWlsLCBhbmQgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlOyBpZiBuZWVkZWQsIGZpbGwgd2l0aCB0aWNrZXQgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ICAgICA9ICRHZXRQYXJhbXtOZXdRdWV1ZUlEfSB8fCAkVGlja2V0e1F1ZXVlSUR9OwogICAgICAgICRHZXRQYXJhbXtEZXN0fSAgICAgICAgPSAkR2V0UGFyYW17UXVldWVJRH07CiAgICAgICAgJEdldFBhcmFte05leHRTdGF0ZUlEfSA9ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSAgICB8fCAkVGlja2V0e1N0YXRlSUR9OwogICAgICAgICRHZXRQYXJhbXtOZXdVc2VySUR9ICAgPSAkR2V0UGFyYW17TmV3T3duZXJJRH0gICAgfHwgJyc7CiAgICAgICAgJEdldFBhcmFte1ByaW9yaXR5SUR9ICA9ICRHZXRQYXJhbXtOZXdQcmlvcml0eUlEfSB8fCAnJzsKCiAgICAgICAgIyBnZXQgbGlzdCB0eXBlCiAgICAgICAgbXkgJFRyZWVWaWV3ICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnID8gMSA6IDA7CiAgICAgICAgbXkgJEF1dG9zZWxlY3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgICAgIG15ICRBQ0xQcmVzZWxlY3Rpb247CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEFDTDo6QUNMUHJlc2VsZWN0aW9uJykgKSB7CgogICAgICAgICAgICAjIGdldCBjYWNoZWQgcHJlc2VsZWN0aW9uIHJ1bGVzCiAgICAgICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUaWNrZXRBQ0wnLAogICAgICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbiApIHsKICAgICAgICAgICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb252ZXJnZW5jZSA9ICgKICAgICAgICAgICAgU3RkRmllbGRzID0+IDAsCiAgICAgICAgICAgIEZpZWxkcyAgICA9PiAwLAogICAgICAgICk7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50cyAgICAgICAgPSAkRWxlbWVudENoYW5nZWQgPyAoICRFbGVtZW50Q2hhbmdlZCA9PiAxICkgOiAoKTsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCA9ICVDaGFuZ2VkRWxlbWVudHM7CiAgICAgICAgbXkgJUNoYW5nZWRTdGRGaWVsZHMgICAgICAgPSAkRWxlbWVudENoYW5nZWQgJiYgJEVsZW1lbnRDaGFuZ2VkICF+IC9eRHluYW1pY0ZpZWxkXy8gPyAlQ2hhbmdlZEVsZW1lbnRzIDogKCk7CgogICAgICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKICAgICAgICBteSAlU3RkRmllbGRWYWx1ZXM7CiAgICAgICAgbXkgJUR5bkZpZWxkU3RhdGVzID0gKAogICAgICAgICAgICBWaXNpYmlsaXR5ID0+IHt9LAogICAgICAgICAgICBGaWVsZHMgICAgID0+IHt9LAogICAgICAgICAgICBTZXRzICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgIHVudGlsICggJENvbnZlcmdlbmNle0ZpZWxkc30gKSB7CgogICAgICAgICAgICAjIGRldGVybWluZSBzdGFuZGFyZCBmaWVsZCBpbnB1dAogICAgICAgICAgICB1bnRpbCAoICRDb252ZXJnZW5jZXtTdGRGaWVsZHN9ICkgewoKICAgICAgICAgICAgICAgIG15ICVOZXdDaGFuZ2VkRWxlbWVudHM7CgogICAgICAgICAgICAgICAgIyB3aGljaCBzdGFuZGFyZCBmaWVsZHMgdG8gY2hlY2sgLSBGaWVsZElEID0+IEdldFBhcmFtVmFsdWUgKG5lY2Vzc2FyeSBmb3IgRGVzdCkKICAgICAgICAgICAgICAgIG15ICVDaGVjayA9ICgKICAgICAgICAgICAgICAgICAgICBEZXN0ICAgICAgICAgICAgID0+ICdRdWV1ZUlEJywKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgICAgICAgID0+ICdOZXdVc2VySUQnLAogICAgICAgICAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgICAgICAgICAgICAgIE5leHRTdGF0ZUlEICAgICAgPT4gJ05leHRTdGF0ZUlEJywKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eUlEICAgICAgID0+ICdQcmlvcml0eUlEJywKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICAgICAgICAgIFNMQUlEICAgICAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkQUNMUHJlc2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZElEICggc29ydCBrZXlzICVDaGVjayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbi0+e0ZpZWxkc317JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEZpZWxkSUQgbm90IGRlZmluZWQgaW4gVGlja2V0QUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57JEZpZWxkSUR9ICYmICRDaGFuZ2VkRWxlbWVudHN7JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJUNoYW5nZWRFbGVtZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uLT57UnVsZXN9e1RpY2tldH17JEVsZW1lbnR9eyRGaWVsZElEfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57SW50ZXJuYWxEZXBlbmRhbmN5fXskRWxlbWVudH17JEZpZWxkSUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uLT57RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBUaWNrZXRBQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIHVuYWZmZWN0ZWQgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ2hlY2t7JEZpZWxkSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZvciBlYWNoIHN0YW5kYXJkIGZpZWxkIHdoaWNoIGhhcyB0byBiZSBjaGVja2VkLCBydW4gdGhlIGRlZmluZWQgbWV0aG9kCiAgICAgICAgICAgICAgICBNRVRIT0Q6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggJFNlbGYtPntGaWVsZE1ldGhvZHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FVEhPRCBpZiAhJENoZWNreyAkRmllbGQtPntGaWVsZElEfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHVzZSAkQ2hlY2t7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gZm9yIERlc3Q9PlF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAkU3RkRmllbGRWYWx1ZXN7ICRDaGVja3sgJEZpZWxkLT57RmllbGRJRH0gfSB9ID0gJEZpZWxkLT57TWV0aG9kfS0+KAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJEN1c3RvbWVyVXNlciB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgPT4gJEdldFBhcmFte05leHRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgc3R1ZmYgZm9yIFF1ZXVlSUQvRGVzdDogaW5jbHVkZWQgZm9yIG1vcmUgc2ltaWxhcml0eSB0byBBZ2VudFRpY2tldFBob25lIGV0Yy47CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmllbGQtPntGaWVsZElEfSBlcSAnRGVzdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdGRGaWVsZFZhbHVlc3tEZXN0fSA9ICRTdGRGaWVsZFZhbHVlc3tRdWV1ZUlEfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBzZWxlY3Rpb24gb2YgUXVldWVJRCAoRGVzdCB3aWxsIGJlIGRvbmUgdG9nZXRoZXIgd2l0aCB0aGUgb3RoZXIgZmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtRdWV1ZUlEfSAmJiAhJFN0ZEZpZWxkVmFsdWVze1F1ZXVlSUR9eyAkR2V0UGFyYW17UXVldWVJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtRdWV1ZUlEfSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGF1dG9zZWxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFte1F1ZXVlSUR9ICYmICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57RGVzdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17UXVldWVJRH0gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFN0ZEZpZWxkVmFsdWVze1F1ZXVlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgc2VsZWN0ZWQgdmFsdWUgaXMgc3RpbGwgdmFsaWQgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkU3RkRmllbGRWYWx1ZXN7ICRGaWVsZC0+e0ZpZWxkSUR9IH17ICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbm90IGVtcHR5IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gICAgICAgICAgID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdDaGFuZ2VkRWxlbWVudHN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAkQ2hhbmdlZFN0ZEZpZWxkc3sgJEZpZWxkLT57RmllbGRJRH0gfSAgID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYXV0b3NlbGVjdAogICAgICAgICAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSAmJiAkQXV0b3NlbGVjdCAmJiAkQXV0b3NlbGVjdC0+eyAkRmllbGQtPntGaWVsZElEfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkU3RkRmllbGRWYWx1ZXN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld0NoYW5nZWRFbGVtZW50c3sgJEZpZWxkLT57RmllbGRJRH0gfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hhbmdlZFN0ZEZpZWxkc3sgJEZpZWxkLT57RmllbGRJRH0gfSAgID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICElTmV3Q2hhbmdlZEVsZW1lbnRzICkgewogICAgICAgICAgICAgICAgICAgICRDb252ZXJnZW5jZXtTdGRGaWVsZHN9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHMgPSAlTmV3Q2hhbmdlZEVsZW1lbnRzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0ID0gKAogICAgICAgICAgICAgICAgICAgICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0LAogICAgICAgICAgICAgICAgICAgICVOZXdDaGFuZ2VkRWxlbWVudHMsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJExvb3BQcm90ZWN0aW9uLS0gPCAxICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUmFuIGludG8gdW5yZXNvbHZhYmxlIGxvb3AhIiwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzICAgICAgICA9ICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0OwogICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCA9ICgpOwoKICAgICAgICAgICAgIyBjaGVjayBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBteSAlQ3VyRmllbGRTdGF0ZXM7CiAgICAgICAgICAgIGlmICglQ2hhbmdlZEVsZW1lbnRzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdmFsdWVzIGFuZCB2aXNpYmlsaXR5IG9mIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAlQ3VyRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldE9iamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRFbGVtZW50cyAgICAgICAgICAgPT4gXCVDaGFuZ2VkRWxlbWVudHMsICAgICAgICAgICAgIyBvcHRpb25hbCB0byByZWR1Y2UgQUNMIGV2YWx1YXRpb24KICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciB8fCAnJywKICAgICAgICAgICAgICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgICAgICAgICBBQ0xQcmVzZWxlY3Rpb24gICAgICAgICAgID0+ICRBQ0xQcmVzZWxlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNvbWJpbmUgRmllbGRTdGF0ZXMKICAgICAgICAgICAgICAgICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze0ZpZWxkc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkRHluRmllbGRTdGF0ZXN7VmlzaWJpbGl0eX0gPSB7CiAgICAgICAgICAgICAgICAgICAgJXsgJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJER5bkZpZWxkU3RhdGVze1NldHN9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tTZXRzfSB9LAogICAgICAgICAgICAgICAgICAgICV7ICRDdXJGaWVsZFN0YXRlc3tTZXRzfSB9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIG5ldyB2YWx1ZXMKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgY2hlY2sgc3RhbmRhcmQgZmllbGRzIGFnYWluCiAgICAgICAgICAgIGlmICggJUN1ckZpZWxkU3RhdGVzICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ3VyRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAgICAgJENvbnZlcmdlbmNle1N0ZEZpZWxkc30gPSAwOwogICAgICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50cyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRDdXJGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ29udmVyZ2VuY2V7RmllbGRzfSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHRoZSBBSkFYIHJldHVybiBmb3IgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAkRHluRmllbGRTdGF0ZXN7RmllbGRzfS0+JSogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkU2VsZi0+e0R5bmFtaWNGaWVsZH17JE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRpICggMCAuLiAkI3sgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In1bJGldIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gIl8kaSIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0ZW1wbGF0ZSB2YWx1ZSBmb3Iga2VlcGluZyB0ZW1wbGF0ZXMgaW4gbGluZSB3aXRoIEFDTHMKICAgICAgICAgICAgICAgIGlmICggISREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICJfVGVtcGxhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17Tm90QUNMUmVkdWNpYmxlfQogICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gLy8gJycgKQogICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZXRGaWVsZCAoIHZhbHVlcyAkRHluRmllbGRTdGF0ZXN7U2V0c30tPiUqICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNldEZpZWxkLT57RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgICAgICMgdGhlIGZyb250ZW5kIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkIGluY2x1ZGluZyBpdHMgaW5kZXggb3IgdGhlICdfVGVtcGxhdGUnIHN1ZmZpeAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRnJvbnRlbmROYW1lICgga2V5cyAkU2V0RmllbGQtPntGaWVsZFN0YXRlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gJiYgcmVmICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiXyRpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfVskaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGFkZCB0ZW1wbGF0ZSB2YWx1ZSBmb3Iga2VlcGluZyB0ZW1wbGF0ZXMgaW4gbGluZSB3aXRoIEFDTHMKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17Tm90QUNMUmVkdWNpYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiX1RlbXBsYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICA/ICggJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRnJvbnRlbmROYW1lLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZXN0cmljdGlvbnNfVmlzaWJpbGl0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgQUpBWCByZXR1cm4gZm9yIHRoZSBzdGFuZGFyZCBmaWVsZHMKICAgICAgICBteSBAU3RkRmllbGRBSkFYOwogICAgICAgIG15ICVBdHRyaWJ1dGVzID0gKAogICAgICAgICAgICBEZXN0ID0+IHsKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOZXdVc2VySUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5leHRTdGF0ZUlEID0+IHsKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gewogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZUlEID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmVlVmlldywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTTEFJRCA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3RhbmRhcmRUZW1wbGF0ZUlEID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUeXBlSUQgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgICAgIGRlbGV0ZSAkU3RkRmllbGRWYWx1ZXN7UXVldWVJRH07CiAgICAgICAgbXkgJURpdmVyc2l0eSA9IHJldmVyc2UgJVVuaWZvcm1pdHk7CiAgICAgICAgZm9yIG15ICRGaWVsZCAoIHNvcnQga2V5cyAlU3RkRmllbGRWYWx1ZXMgKSB7CiAgICAgICAgICAgIHB1c2ggQFN0ZEZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRGl2ZXJzaXR5eyRGaWVsZH0gfHwgJEZpZWxkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkU3RkRmllbGRWYWx1ZXN7JEZpZWxkfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFteyRGaWVsZH0sCiAgICAgICAgICAgICAgICAleyAkQXR0cmlidXRlc3skRmllbGR9IH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSBAVGVtcGxhdGVBSkFYOwoKICAgICAgICAjIHVwZGF0ZSB0aWNrZXQgYm9keSBhbmQgYXR0YWNobWVudHMgaWYgbmVlZGVkLgogICAgICAgIGlmICggJENoYW5nZWRTdGRGaWVsZHN7U3RhbmRhcmRUZW1wbGF0ZUlEfSApIHsKICAgICAgICAgICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzOwogICAgICAgICAgICBteSAkVGVtcGxhdGVUZXh0OwoKICAgICAgICAgICAgIyByZW1vdmUgYWxsIGF0dGFjaG1lbnRzIGZyb20gdGhlIFVwbG9hZCBjYWNoZQogICAgICAgICAgICBteSAkUmVtb3ZlU3VjY2VzcyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFJlbW92ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGb3JtIGF0dGFjaG1lbnRzIGNvdWxkIG5vdCBiZSBkZWxldGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB0aGUgdGVtcGxhdGUgdGV4dCBhbmQgc2V0IG5ldyBhdHRhY2htZW50cyBpZiBhIHRlbXBsYXRlIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRHZXRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVHZW5lcmF0b3IgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0ZW1wbGF0ZSB0ZXh0LCByZXBsYWNlIHNtYXJ0IHRhZ3MgKGxpbWl0ZWQgYXMgdGlja2V0IGlzIG5vdCBjcmVhdGVkKQogICAgICAgICAgICAgICAgJFRlbXBsYXRlVGV4dCA9ICRUZW1wbGF0ZUdlbmVyYXRvci0+VGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkR2V0UGFyYW17U3RhbmRhcmRUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIFJlcGx5VG9BcnRpY2xlIGlzIGdpdmVuLCBnZXQgdGhpcyBhcnRpY2xlIHRvIGdlbmVyYXRlCiAgICAgICAgICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBhcnRpY2xlIHRvIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgbXkgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRDYWNoZU9iamVjdCA9PiAkVXBsb2FkQ2FjaGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAkQm9keSA9ICRTZWxmLT5fR2V0UXVvdGVkUmVwbHlCb2R5KAogICAgICAgICAgICAgICAgICAgICAgICAleyAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGVtcGxhdGVUZXh0ID0gJFRlbXBsYXRlVGV4dCAuICc8YnI+PGJyPicgLiAkQm9keTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wbGF0ZVRleHQgPSAkVGVtcGxhdGVUZXh0IC4gIlxuXG4iIC4gJEJvZHk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFN0ZEF0dGFjaG1lbnRPYmplY3QKICAgICAgICAgICAgICAgIG15ICRTdGRBdHRhY2htZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0ZEF0dGFjaG1lbnQnKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBzdGQuIGF0dGFjaG1lbnRzIHRvIHRpY2tldAogICAgICAgICAgICAgICAgbXkgJUFsbFN0ZEF0dGFjaG1lbnRzID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZFRlbXBsYXRlSUQgPT4gJEdldFBhcmFte1N0YW5kYXJkVGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yICggc29ydCBrZXlzICVBbGxTdGRBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudHNEYXRhID0gJFN0ZEF0dGFjaG1lbnRPYmplY3QtPlN0ZEF0dGFjaG1lbnRHZXQoIElEID0+ICRfICk7CiAgICAgICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgJUF0dGFjaG1lbnRzRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnRzaWRlIEphdmFTY3JpcHQKICAgICAgICAgICAgICAgICMgd2hpY2ggcmVuZGVycyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgQFRpY2tldEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAVGlja2V0QXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSA9ICRMYXlvdXRPYmplY3QtPkh1bWFuUmVhZGFibGVEYXRhU2l6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSA9PiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBAVGVtcGxhdGVBSkFYID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1VzZVRlbXBsYXRlTm90ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAnMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRUZW1wbGF0ZVRleHQgfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICdUaWNrZXRBdHRhY2htZW50cycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXEBUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICBLZWVwRGF0YSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICBAU3RkRmllbGRBSkFYLAogICAgICAgICAgICAgICAgQER5bmFtaWNGaWVsZEFKQVgsCiAgICAgICAgICAgICAgICBAVGVtcGxhdGVBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CgogICAgICAgICMgY2FuJ3QgdXNlIEpTT05SZXBseSBoZXJlLCBhcyB3ZSBhbHJlYWR5IGhhdmUgSlNPTgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRCb2R5ID0gJyc7CgogICAgICAgICMgaWYgUmVwbHlUb0FydGljbGUgaXMgZ2l2ZW4sIGdldCB0aGlzIGFydGljbGUgdG8gZ2VuZXJhdGUKICAgICAgICAjIHRoZSBxdW90ZWQgYXJ0aWNsZSBjb250ZW50CiAgICAgICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IGFydGljbGUgdG8gcXVvdGUKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlUXVvdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGV9LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgVXBsb2FkQ2FjaGVPYmplY3QgPT4gJFVwbG9hZENhY2hlT2JqZWN0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBwcmVwYXJlIHF1b3RlZCBib2R5IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPSAkU2VsZi0+X0dldFF1b3RlZFJlcGx5Qm9keSgKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQm9keSA9PiAkQm9keSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgaWYgYSBib2R5IGNvbnRlbnQgd2FzIHByZSBkZWZpbmVkLCBhZGQgdGhpcyBiZWZvcmUgdGhlIHF1b3RlZCBhcnRpY2xlIGNvbnRlbnQKICAgICAgICBpZiAoICRHZXRQYXJhbXtCb2R5fSApIHsKCiAgICAgICAgICAgICMgbWFrZSBzdXJlIGJvZHkgaXMgcmljaCB0ZXh0CiAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gJiYgISRTZWxmLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMlJpY2hUZXh0KAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQm9keSA9ICRHZXRQYXJhbXtCb2R5fSAuICRCb2R5OwogICAgICAgIH0KCiAgICAgICAgIyBmaWxsdXAgY29uZmlndXJlZCBkZWZhdWx0IHZhcnMKICAgICAgICBpZiAoICRCb2R5IGVxICcnICYmICRDb25maWctPntCb2R5fSApIHsKICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkQ29uZmlnLT57Qm9keX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSBib2R5IGlzIHJpY2ggdGV4dAogICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgJEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJSaWNoVGV4dCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEJvZHksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBCb2R5IHZhciB0byBjYWxjdWxhdGVkIGNvbnRlbnQKICAgICAgICAkR2V0UGFyYW17Qm9keX0gPSAkQm9keTsKCiAgICAgICAgbXkgJVNhZmV0eUNoZWNrUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyA9PiAkR2V0UGFyYW17Qm9keX0sCgogICAgICAgICAgICAjIFN0cmlwIG91dCBleHRlcm5hbCBjb250ZW50IGlmIEJsb2NrTG9hZGluZ1JlbW90ZUNvbnRlbnQgaXMgZW5hYmxlZC4KICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QmxvY2tMb2FkaW5nUmVtb3RlQ29udGVudCcpLAoKICAgICAgICAgICAgIyBEaXNhbGxvdyBwb3RlbnRpYWxseSB1bnNhZmUgY29udGVudC4KICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9TVkcgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEdldFBhcmFte0JvZHl9ID0gJFNhZmV0eUNoZWNrUmVzdWx0e1N0cmluZ307CgogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgICAgIG15ICRUaWNrZXRTdWJqZWN0UmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U3ViamVjdFJlJykgfHwgJ1JlJzsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJFRpY2tldFN1YmplY3RSZSAuICc6ICcgLiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH17U3ViamVjdH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggIWRlZmluZWQgJEdldFBhcmFte1N1YmplY3R9ICYmICRDb25maWctPntTdWJqZWN0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJENvbmZpZy0+e1N1YmplY3R9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1c2UgdGlja2V0IHZhbHVlcwogICAgICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ID0gJFRpY2tldHtRdWV1ZUlEfSAvLyAnJzsKICAgICAgICAgICAgJEdldFBhcmFte0Rlc3R9ICAgID0gJFRpY2tldHtRdWV1ZUlEfSAvLyAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29uZmlnLT57U2VydmljZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtTTEFJRH0gICAgID0gJFRpY2tldHtTTEFJRH0gICAgIC8vICcnOwogICAgICAgICAgICAkR2V0UGFyYW17U2VydmljZUlEfSA9ICRUaWNrZXR7U2VydmljZUlEfSAvLyAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtUeXBlSUR9ID0gJFRpY2tldHtUeXBlSUR9IC8vICcnOwogICAgICAgIH0KICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtOZXh0U3RhdGVJRH0gPSAkVGlja2V0e1N0YXRlSUR9IC8vICcnOwogICAgICAgIH0KICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtQcmlvcml0eUlEfSA9ICRUaWNrZXR7UHJpb3JpdHlJRH0gLy8gJyc7CiAgICAgICAgfQogICAgICAgIG15ICRDdXN0b21lclVzZXIgPSAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSAvLyAnJzsKCiAgICAgICAgIyBHZXQgdmFsdWVzIGZvciBUaWNrZXQgZmllbGRzIGFuZCB1c2UgZGVmYXVsdCB2YWx1ZSBmb3IgQXJ0aWNsZSBmaWVsZHMsIGlmIGdpdmVuIChhbGwgc2NyZWVucyBiYXNlZCBvbgogICAgICAgICMgQWdlbnRUaWNrZXRBY3Rpb25Db21tb24gZ2VuZXJhdGUgYSBuZXcgYXJ0aWNsZSwgdGhlbiBhcnRpY2xlIGZpZWxkcyB3aWxsIGJlIGFsd2F5cyBkZWZhdWx0IHZhbHVlIG9yCiAgICAgICAgIyBlbXB0eSBhdCB0aGUgYmVnaW5uaW5nKS4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBUaGlzIG92ZXJ3cml0ZXMgdGhlIHZhbHVlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiB0YWtlbiBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlcmUgc2hvdWxkbid0IGJlIGFueSB2YWx1ZXMgZnJvbSB0aGUgd2ViIHJlcXVlc3QsCiAgICAgICAgICAgICMgYmVjYXVzZSBzdWJtaXRzLCBzdWNjZXNzZnVsIGFuZCB1bnN1Y2Nlc3NmdWwgaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeSBhYm92ZS4KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgKSB7CgogICAgICAgICAgICAgICAgIyBWYWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIGZyb20gVGlja2V0LgogICAgICAgICAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0FydGljbGUnICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgaWYgd2UgYXJlIGluIGVkaXQgbW9kZSB0YWtlIHRoZSBkYiBkYXRhIG9mIHRoZSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJEFydGljbGVEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57RGVmYXVsdFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmUtZmlsbGluZyBjYWNoZSBmb3IgcmVmZXJlbmNlIGZpZWxkIC0gbmVjZXNzYXJ5IGZvciBBQ0wgY2FsY3VsYXRpb24gb2YgbGVucyBmaWVsZHMKICAgICAgICAgICAgbXkgJElzUmVmZXJlbmNlRmllbGQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJElzUmVmZXJlbmNlRmllbGQ7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpGb3JtQ2FjaGUnKS0+U2V0Rm9ybURhdGEoCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1Bvc3NpYmxlVmFsdWVzX0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQXV0b3NlbGVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0QUNMOjpBdXRvc2VsZWN0JykgfHwgdW5kZWY7CgogICAgICAgICMgZ2F0aGVyIGZpZWxkcyB3aGljaCBhcmUgc3VwcG9zZWQgdG8gYmUgaGlkZGVuIHdoZW4gYXV0b3NlbGVjdGVkCiAgICAgICAgbXkgJEhpZGVBdXRvc2VsZWN0ZWRKU09OOwogICAgICAgIGlmICgkQXV0b3NlbGVjdCkgewogICAgICAgICAgICBteSBASGlkZUF1dG9zZWxlY3RlZCA9IGdyZXAgeyAhcmVmKCAkQXV0b3NlbGVjdC0+eyRffSApICYmICRBdXRvc2VsZWN0LT57JF99ID09IDIgfSBrZXlzICV7JEF1dG9zZWxlY3R9OwogICAgICAgICAgICBpZiAoICRBdXRvc2VsZWN0LT57RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEhpZGVBdXRvc2VsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgbWFwIHsgIkR5bmFtaWNGaWVsZF8iIC4gJF8gfQogICAgICAgICAgICAgICAgICAgICggZ3JlcCB7ICRBdXRvc2VsZWN0LT57RHluYW1pY0ZpZWxkfXskX30gPT0gMiB9IGtleXMgJXsgJEF1dG9zZWxlY3QtPntEeW5hbWljRmllbGR9IH0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKEBIaWRlQXV0b3NlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICAgICAgICAgICAgICAkSGlkZUF1dG9zZWxlY3RlZEpTT04gPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXEBIaWRlQXV0b3NlbGVjdGVkLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFDTFByZXNlbGVjdGlvbjsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0QUNMOjpBQ0xQcmVzZWxlY3Rpb24nKSApIHsKCiAgICAgICAgICAgICMgZ2V0IGNhY2hlZCBwcmVzZWxlY3Rpb24gcnVsZXMKICAgICAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RpY2tldEFDTCcsCiAgICAgICAgICAgICAgICBLZXkgID0+ICdQcmVzZWxlY3Rpb24nLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uICkgewogICAgICAgICAgICAgICAgJEFDTFByZXNlbGVjdGlvbiA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+U2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJUNvbnZlcmdlbmNlID0gKAogICAgICAgICAgICBTdGRGaWVsZHMgPT4gMCwKICAgICAgICAgICAgRmllbGRzICAgID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzOwogICAgICAgIG15ICVDaGFuZ2VkRWxlbWVudHNERlN0YXJ0OwogICAgICAgIG15ICVDaGFuZ2VkU3RkRmllbGRzOwoKICAgICAgICBteSAkTG9vcFByb3RlY3Rpb24gPSAxMDA7CiAgICAgICAgbXkgJVN0ZEZpZWxkVmFsdWVzOwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICgKICAgICAgICAgICAgVmlzaWJpbGl0eSA9PiB7fSwKICAgICAgICAgICAgRmllbGRzICAgICA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBteSAkSW5pdGlhbFJ1biA9IDE7CgogICAgICAgIHVudGlsICggJENvbnZlcmdlbmNle0ZpZWxkc30gKSB7CgogICAgICAgICAgICAjIGRldGVybWluZSBzdGFuZGFyZCBmaWVsZCBpbnB1dAogICAgICAgICAgICB1bnRpbCAoICRDb252ZXJnZW5jZXtTdGRGaWVsZHN9ICkgewoKICAgICAgICAgICAgICAgIG15ICVOZXdDaGFuZ2VkRWxlbWVudHM7CgogICAgICAgICAgICAgICAgIyB3aGljaCBzdGFuZGFyZCBmaWVsZHMgdG8gY2hlY2sgLSBGaWVsZElEID0+IEdldFBhcmFtVmFsdWUgKG5lY2Vzc2FyeSBmb3IgRGVzdCkKICAgICAgICAgICAgICAgIG15ICVDaGVjayA9ICgKICAgICAgICAgICAgICAgICAgICBEZXN0ICAgICAgICAgICAgID0+ICdRdWV1ZUlEJywKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgICAgICAgID0+ICdOZXdVc2VySUQnLAogICAgICAgICAgICAgICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgICAgICAgICAgICAgIE5leHRTdGF0ZUlEICAgICAgPT4gJ05leHRTdGF0ZUlEJywKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eUlEICAgICAgID0+ICdQcmlvcml0eUlEJywKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICAgICAgICAgIFNMQUlEICAgICAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgICAgICAgICBUeXBlSUQgICAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJEFDTFByZXNlbGVjdGlvbiAmJiAhJEluaXRpYWxSdW4gKSB7CiAgICAgICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZElEICggc29ydCBrZXlzICVDaGVjayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEFDTFByZXNlbGVjdGlvbi0+e0ZpZWxkc317JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEZpZWxkSUQgbm90IGRlZmluZWQgaW4gVGlja2V0QUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRBdXRvc2VsZWN0ICYmICRBdXRvc2VsZWN0LT57JEZpZWxkSUR9ICYmICRDaGFuZ2VkRWxlbWVudHN7JEZpZWxkSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJUNoYW5nZWRFbGVtZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uLT57UnVsZXN9e1RpY2tldH17JEVsZW1lbnR9eyRGaWVsZElEfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57SW50ZXJuYWxEZXBlbmRhbmN5fXskRWxlbWVudH17JEZpZWxkSUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uLT57RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBUaWNrZXRBQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIHVuYWZmZWN0ZWQgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ2hlY2t7JEZpZWxkSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZvciBlYWNoIHN0YW5kYXJkIGZpZWxkIHdoaWNoIGhhcyB0byBiZSBjaGVja2VkLCBydW4gdGhlIGRlZmluZWQgbWV0aG9kCiAgICAgICAgICAgICAgICBNRVRIT0Q6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggQHsgJFNlbGYtPntGaWVsZE1ldGhvZHN9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNRVRIT0QgdW5sZXNzICRDaGVja3sgJEZpZWxkLT57RmllbGRJRH0gfTsKCiAgICAgICAgICAgICAgICAgICAgIyB1c2UgJENoZWNreyAkRmllbGQtPntGaWVsZElEfSB9IGZvciBEZXN0PT5RdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgJFN0ZEZpZWxkVmFsdWVzeyAkQ2hlY2t7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gfSA9ICRGaWVsZC0+e01ldGhvZH0tPigKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRDdXN0b21lclVzZXIgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICAgID0+ICRHZXRQYXJhbXtOZXh0U3RhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIHN0dWZmIGZvciBRdWV1ZUlEL0Rlc3Q6IGluY2x1ZGVkIGZvciBtb3JlIHNpbWlsYXJpdHkgdG8gQWdlbnRUaWNrZXRQaG9uZSBldGMuOwogICAgICAgICAgICAgICAgICAgIGlmICggJEZpZWxkLT57RmllbGRJRH0gZXEgJ0Rlc3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3RkRmllbGRWYWx1ZXN7RGVzdH0gPSAkU3RkRmllbGRWYWx1ZXN7UXVldWVJRH07CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGN1cnJlbnQgc2VsZWN0aW9uIG9mIFF1ZXVlSUQgKERlc3Qgd2lsbCBiZSBkb25lIHRvZ2V0aGVyIHdpdGggdGhlIG90aGVyIGZpZWxkcykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17UXVldWVJRH0gJiYgISRTdGRGaWVsZFZhbHVlc3tRdWV1ZUlEfXsgJEdldFBhcmFte1F1ZXVlSUR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17UXVldWVJRH0gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhdXRvc2VsZWN0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtRdWV1ZUlEfSAmJiAkQXV0b3NlbGVjdCAmJiAkQXV0b3NlbGVjdC0+e0Rlc3R9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte1F1ZXVlSUR9ID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+ICRTdGRGaWVsZFZhbHVlc3tRdWV1ZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciBjdXJyZW50IHNlbGVjdGVkIHZhbHVlIGlzIHN0aWxsIHZhbGlkIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAhJFN0ZEZpZWxkVmFsdWVzeyAkRmllbGQtPntGaWVsZElEfSB9eyAkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCBlbXB0eSB0aGUgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9ICAgICAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3Q2hhbmdlZEVsZW1lbnRzeyAkRmllbGQtPntGaWVsZElEfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgJENoYW5nZWRTdGRGaWVsZHN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gICA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGF1dG9zZWxlY3QKICAgICAgICAgICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRGaWVsZC0+e0ZpZWxkSUR9IH0gJiYgJEF1dG9zZWxlY3QgJiYgJEF1dG9zZWxlY3QtPnsgJEZpZWxkLT57RmllbGRJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkRmllbGQtPntGaWVsZElEfSB9ID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFN0ZEZpZWxkVmFsdWVzeyAkRmllbGQtPntGaWVsZElEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJEZpZWxkLT57RmllbGRJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdDaGFuZ2VkRWxlbWVudHN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENoYW5nZWRTdGRGaWVsZHN7ICRGaWVsZC0+e0ZpZWxkSUR9IH0gICA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhJU5ld0NoYW5nZWRFbGVtZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAkQ29udmVyZ2VuY2V7U3RkRmllbGRzfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzID0gJU5ld0NoYW5nZWRFbGVtZW50czsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCA9ICgKICAgICAgICAgICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydCwKICAgICAgICAgICAgICAgICAgICAlTmV3Q2hhbmdlZEVsZW1lbnRzLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRMb29wUHJvdGVjdGlvbi0tIDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJhbiBpbnRvIHVucmVzb2x2YWJsZSBsb29wISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50cyAgICAgICAgPSAlQ2hhbmdlZEVsZW1lbnRzREZTdGFydDsKICAgICAgICAgICAgJUNoYW5nZWRFbGVtZW50c0RGU3RhcnQgPSAoKTsKCiAgICAgICAgICAgICMgY2hlY2sgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgbXkgJUN1ckZpZWxkU3RhdGVzOwogICAgICAgICAgICBpZiAoICVDaGFuZ2VkRWxlbWVudHMgfHwgJEluaXRpYWxSdW4gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdmFsdWVzIGFuZCB2aXNpYmlsaXR5IG9mIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAlQ3VyRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldE9iamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRFbGVtZW50cyAgICAgICAgICAgPT4gXCVDaGFuZ2VkRWxlbWVudHMsICAgICAgICAgICAgIyBvcHRpb25hbCB0byByZWR1Y2UgQUNMIGV2YWx1YXRpb24KICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciB8fCAnJywKICAgICAgICAgICAgICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgICAgICAgICBBQ0xQcmVzZWxlY3Rpb24gICAgICAgICAgID0+ICRBQ0xQcmVzZWxlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNvbWJpbmUgRmllbGRTdGF0ZXMKICAgICAgICAgICAgICAgICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9ID0gewogICAgICAgICAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze0ZpZWxkc30gfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkRHluRmllbGRTdGF0ZXN7VmlzaWJpbGl0eX0gPSB7CiAgICAgICAgICAgICAgICAgICAgJXsgJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEN1ckZpZWxkU3RhdGVze1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICMgc3RvcmUgbmV3IHZhbHVlcwogICAgICAgICAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gfSwKICAgICAgICAgICAgICAgICAgICAleyAkQ3VyRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSB9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiBkeW5hbWljIGZpZWxkcyBjaGFuZ2VkLCBjaGVjayBzdGFuZGFyZCBmaWVsZHMgYWdhaW4KICAgICAgICAgICAgaWYgKCAlQ3VyRmllbGRTdGF0ZXMgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDdXJGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAkQ29udmVyZ2VuY2V7U3RkRmllbGRzfSA9IDA7CiAgICAgICAgICAgICAgICAlQ2hhbmdlZEVsZW1lbnRzID0gbWFwIHsgJF8gPT4gMSB9IGtleXMgJXsgJEN1ckZpZWxkU3RhdGVze05ld1ZhbHVlc30gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDb252ZXJnZW5jZXtGaWVsZHN9ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEluaXRpYWxSdW4gPSAwOwogICAgICAgIH0KCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzID0gbWFwIHsKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gZGVmaW5lZCAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskX30KICAgICAgICAgICAgICAgID8gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JF99e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgOiB1bmRlZgogICAgICAgIH0gKCBrZXlzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSogKTsKCiAgICAgICAgIyBwcmludCBmb3JtIC4uLgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJFNlbGYtPl9NYXNrKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgIE5ld1F1ZXVlSUQgICAgICAgPT4gJEdldFBhcmFte1F1ZXVlSUR9LAogICAgICAgICAgICAgICAgTmV3T3duZXJJRCAgICAgICA9PiAkR2V0UGFyYW17TmV3VXNlcklEfSwKICAgICAgICAgICAgICAgIE5ld1N0YXRlSUQgICAgICAgPT4gJEdldFBhcmFte05leHRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIE5ld1ByaW9yaXR5SUQgICAgPT4gJEdldFBhcmFte1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgU0xBSUQgICAgICAgICAgICA9PiAkR2V0UGFyYW17U0xBSUR9LAogICAgICAgICAgICAgICAgU2VydmljZUlEICAgICAgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgIFR5cGVJRCAgICAgICAgICAgPT4gJEdldFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgICAgICBIaWRlQXV0b3NlbGVjdGVkID0+ICRIaWRlQXV0b3NlbGVjdGVkSlNPTiwKICAgICAgICAgICAgICAgIFZpc2liaWxpdHkgICAgICAgPT4gJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9LAogICAgICAgICAgICAgICAgREZQb3NzaWJsZVZhbHVlcyA9PiBcJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICA9PiBcQEFydGljbGVBdHRhY2htZW50cwogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgICAgICk7CiAgICB9Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyA/IDEgOiAwOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHJlbmRlciB0aWNrZXQgdHlwZSBkeW5hbWljIGZpZWxkcwogICAgbXkgJFRpY2tldFR5cGVEeW5hbWljRmllbGRIVE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkR5bmFtaWNGaWVsZDo6TWFzaycpLT5FZGl0U2VjdGlvblJlbmRlcigKICAgICAgICBDb250ZW50ICAgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldE1hc2tEZWZpbml0aW9ufSwKICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgRHluYW1pY0ZpZWxkVmFsdWVzICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZH0sCiAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBhcmFte0RGUG9zc2libGVWYWx1ZXN9LAogICAgICAgIEVycm9ycyAgICAgICAgICAgICAgID0+ICRQYXJhbXtERkVycm9yc30sCiAgICAgICAgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gJFBhcmFte1Zpc2liaWxpdHl9LAogICAgICAgIE9iamVjdCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFBhcmFte0N1c3RvbWVySUR9LAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGR9LT4lKiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIFdpZGdldCBUaWNrZXQgQWN0aW9ucwogICAgaWYgKAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKQogICAgICAgIHx8CiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRDb25maWctPntTZXJ2aWNlfSApICAgICAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpSZXNwb25zaWJsZScpICYmICRDb25maWctPntSZXNwb25zaWJsZX0gKSB8fAogICAgICAgICRDb25maWctPntUaXRsZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgJENvbmZpZy0+e1F1ZXVlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57T3duZXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICRDb25maWctPntTdGF0ZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgJENvbmZpZy0+e1ByaW9yaXR5fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICBhbnkgeyAkXy0+e09iamVjdFR5cGV9IGVxICdUaWNrZXQnIH0gdmFsdWVzICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+JSoKICAgICAgICApCiAgICB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1dpZGdldFRpY2tldEFjdGlvbnMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJFRpY2tldFR5cGVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57VGl0bGV9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaXRsZScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFBhcmFte0hpZGVBdXRvc2VsZWN0ZWR9ICkgewoKICAgICAgICAjIGFkZCBBdXRvc2VsZWN0IEpTCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIENvZGUgPT4gIkNvcmUuRm9ybS5Jbml0SGlkZUF1dG9zZWxlY3RlZCh7IEZpZWxkSURzOiAkUGFyYW17SGlkZUF1dG9zZWxlY3RlZH0gfSk7IiwKICAgICAgICApOwogICAgfQoKICAgICMgdHlwZXMKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlR5cGUnKSAmJiAkQ29uZmlnLT57VGlja2V0VHlwZX0gKSB7CiAgICAgICAgbXkgJVR5cGUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFBhcmFte1R5cGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSBGb3JtVXBkYXRlICcgLiAoICRQYXJhbXtFcnJvcnN9LT57VHlwZUlESW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVHlwZSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVHlwZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlcnZpY2VzCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgewogICAgICAgIG15ICRTZXJ2aWNlcyA9ICRTZWxmLT5fR2V0U2VydmljZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgcmVzZXQgcHJldmlvdXMgU2VydmljZUlEIHRvIHJlc2V0IFNMQS1MaXN0IGlmIG5vIHNlcnZpY2UgaXMgc2VsZWN0ZWQKICAgICAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSB8fCAhJFNlcnZpY2VzLT57ICRQYXJhbXtTZXJ2aWNlSUR9IH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtTZXJ2aWNlSUR9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17U2VydmljZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJFNlcnZpY2VzLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICJNb2Rlcm5pemUgRm9ybVVwZGF0ZSAiCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdUcmVlVmlldycsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAkVHJlZVZpZXcsCiAgICAgICAgICAgIE1heCAgICAgICAgICA9PiAyMDAsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFNlcnZpY2VNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1NlcnZpY2VNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVNMQSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNMQUxpc3QoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkUGFyYW17U0xBU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNMQSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnU0xBSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtTTEFJRH0sCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gIk1vZGVybml6ZSBGb3JtVXBkYXRlICIKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U0xBTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtTZXJ2aWNlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU0xBJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTTEFNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1NMQU1hbmRhdG9yeX0sCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntRdWV1ZX0gKSB7CgogICAgICAgICMgZmV0Y2ggYWxsIHF1ZXVlcwogICAgICAgIG15ICVNb3ZlUXVldWVzID0gJFRpY2tldE9iamVjdC0+VGlja2V0TW92ZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ21vdmVfaW50bycsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbW92ZSBxdWV1ZXMKICAgICAgICAkUGFyYW17UXVldWVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5BZ2VudFF1ZXVlTGlzdE9wdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgPT4geyAlTW92ZVF1ZXVlcywgJycgPT4gJy0nIH0sCiAgICAgICAgICAgIE11bHRpcGxlID0+IDAsCiAgICAgICAgICAgIFNpemUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgID0+ICdOZXdRdWV1ZUlEIE1vZGVybml6ZSBGb3JtVXBkYXRlICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1F1ZXVlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ05ld1F1ZXVlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17TmV3UXVldWVJRH0sCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICAgID0+ICRUcmVlVmlldywKICAgICAgICAgICAgQ3VycmVudFF1ZXVlSUQgPT4gJFBhcmFte1F1ZXVlSUR9LAogICAgICAgICAgICBPbkNoYW5nZVN1Ym1pdCA9PiAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWV1ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUXVldWVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1F1ZXVlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkVXNlck9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgaWYgKCAkQ29uZmlnLT57T3duZXJ9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ293bmVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnTmV3T3duZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBvbGQgb3duZXIKICAgICAgICBteSBAT2xkVXNlckluZm8gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lckxpc3QoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICAgICAgbXkgQE9sZE93bmVyczsKICAgICAgICBteSAlT2xkT3duZXJzU2hvd247CiAgICAgICAgbXkgJVNlZW5PbGRPd25lcjsKICAgICAgICBpZiAoQE9sZFVzZXJJbmZvKSB7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMTsKICAgICAgICAgICAgVVNFUjoKICAgICAgICAgICAgZm9yIG15ICRVc2VyICggcmV2ZXJzZSBAT2xkVXNlckluZm8gKSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGlmIG9sZCBvd25lciBpcyBhbHJlYWR5IGluIHRoZSBsaXN0CiAgICAgICAgICAgICAgICBuZXh0IFVTRVIgaWYgJFNlZW5PbGRPd25lcnsgJFVzZXItPntVc2VySUR9IH07CiAgICAgICAgICAgICAgICAkU2Vlbk9sZE93bmVyeyAkVXNlci0+e1VzZXJJRH0gfSA9IDE7CiAgICAgICAgICAgICAgICBteSAkS2V5ICAgPSAkVXNlci0+e1VzZXJJRH07CiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAiJENvdW50ZXI6ICRVc2VyLT57VXNlckZ1bGxuYW1lfSI7CiAgICAgICAgICAgICAgICBwdXNoIEBPbGRPd25lcnMsIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkT2xkT3duZXJzU2hvd257JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkT2xkT3duZXJTZWxlY3RlZElEID0gJyc7CiAgICAgICAgaWYgKCAkUGFyYW17T2xkT3duZXJJRH0gKSB7CiAgICAgICAgICAgICRPbGRPd25lclNlbGVjdGVkSUQgPSAkUGFyYW17T2xkT3duZXJJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9sZFVzZXJJbmZvWzBdLT57VXNlcklEfSApIHsKICAgICAgICAgICAgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICRPbGRVc2VySW5mb1swXS0+e1VzZXJJRH0gLiAnMSc7CiAgICAgICAgfQoKICAgICAgICBteSAkT2xkT3duZXJBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdPbGRPd25lcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVPbGRPd25lcnNTaG93biwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRPbGRPd25lckFDTCkgewogICAgICAgICAgICAlT2xkT3duZXJzU2hvd24gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgb25seSB1c2VycyB3aXRoIG93bmVyIG9yIHJ3IHBlcm1pc3Npb25zIGluIHRoZSBxdWV1ZQogICAgICAgIG15ICVPbGRPd25lcnNXaXRoQWNjZXNzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICAgICAlT2xkT3duZXJzV2l0aEFjY2VzcyA9ICVPbGRPd25lcnNTaG93bjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICgga2V5cyAlT2xkT3duZXJzU2hvd24gKSB7CiAgICAgICAgICAgICAgICBpZiAoIGV4aXN0cyAkU2hvd25Vc2Vyc3skVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAkT2xkT3duZXJzV2l0aEFjY2Vzc3skVXNlcklEfSA9ICRPbGRPd25lcnNTaG93bnskVXNlcklEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBzdHJpbmcKICAgICAgICAkUGFyYW17T3duZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ05ld093bmVySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUgRm9ybVVwZGF0ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdPd25lckludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFNpemUgICAgICAgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgRmlsdGVycyAgICAgID0+IHsKICAgICAgICAgICAgICAgIE9sZE93bmVycyA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUHJldmlvdXMgT3duZXInKSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgPT4gXCVPbGRPd25lcnNXaXRoQWNjZXNzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3duZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE93bmVyTWFuZGF0b3J5ID0+ICRDb25maWctPntPd25lck1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvZiBvd24gZ3JvdXBzCiAgICAgICAgbXkgJVNob3duVXNlcnM7CiAgICAgICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpICkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdJRCAgICAgICAgPSAkUXVldWVPYmplY3QtPkdldFF1ZXVlR3JvdXBJRCggUXVldWVJRCA9PiAkVGlja2V0e1F1ZXVlSUR9ICk7CiAgICAgICAgICAgIG15ICVNZW1iZXJMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdyZXNwb25zaWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ1Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcmVzcG9uc2libGUKICAgICAgICAkUGFyYW17UmVzcG9uc2libGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TmV3UmVzcG9uc2libGVJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUgRm9ybVVwZGF0ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdSZXNwb25zaWJsZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVzcG9uc2libGVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1Jlc3BvbnNpYmxlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1N0YXRlfSApIHsKCiAgICAgICAgbXkgJVN0YXRlOwogICAgICAgIG15ICVTdGF0ZUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdGF0ZUxpc3QoCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRQYXJhbXtOZXdTdGF0ZUlEfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fSApIHsKICAgICAgICAgICAgICAgICRTdGF0ZXtTZWxlY3RlZFZhbHVlfSA9ICRDb25maWctPntTdGF0ZURlZmF1bHR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU3RhdGV7U2VsZWN0ZWRJRH0gPSAkUGFyYW17TmV3U3RhdGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIG5leHQgc3RhdGVzIHN0cmluZwogICAgICAgICRQYXJhbXtTdGF0ZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgID0+IFwlU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICA9PiAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUgRm9ybVVwZGF0ZSAnCiAgICAgICAgICAgICAgICAuICggJENvbmZpZy0+e1N0YXRlTWFuZGF0b3J5fSA/ICdWYWxpZGF0ZV9SZXF1aXJlZCAnIDogJycgKQogICAgICAgICAgICAgICAgLiAoICRQYXJhbXtOZXdTdGF0ZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAkQ29uZmlnLT57U3RhdGVEZWZhdWx0fSA/IDAgOiAxLAogICAgICAgICAgICAlU3RhdGUsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhdGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0YXRlTWFuZGF0b3J5ID0+ICRDb25maWctPntTdGF0ZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENvbmZpZy0+e1N0YXRlVHlwZX0gKSApIHsKCiAgICAgICAgICAgIFNUQVRFVFlQRToKICAgICAgICAgICAgZm9yIG15ICRTdGF0ZVR5cGUgKCBAeyAkQ29uZmlnLT57U3RhdGVUeXBlfSB9ICkgewoKICAgICAgICAgICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICEkU3RhdGVUeXBlOwogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgJFN0YXRlVHlwZSAhfiAvcGVuZGluZy9pOwoKICAgICAgICAgICAgICAgICMgZ2V0IHVzZWQgY2FsZW5kYXIKICAgICAgICAgICAgICAgIG15ICRDYWxlbmRhciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENhbGVuZGFyR2V0KAogICAgICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRRdWlja0RhdGVCdXR0b25zID0gJENvbmZpZy0+e1F1aWNrRGF0ZUJ1dHRvbnN9IC8vICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6RGVmYXVsdFF1aWNrRGF0ZUJ1dHRvbnMnKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17RGF0ZVN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDUsCiAgICAgICAgICAgICAgICAgICAgRGlmZlRpbWUgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlBlbmRpbmdEaWZmVGltZScpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgPT4gJFBhcmFte0RhdGVJbnZhbGlkfSB8fCAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURhdGVJbkZ1dHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIENhbGVuZGFyICAgICAgICAgICAgID0+ICRDYWxlbmRhciwKICAgICAgICAgICAgICAgICAgICBRdWlja0RhdGVCdXR0b25zICAgICA9PiAkUXVpY2tEYXRlQnV0dG9ucywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdGVQZW5kaW5nJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGxhc3QgU1RBVEVUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHByaW9yaXR5CiAgICBpZiAoICRDb25maWctPntQcmlvcml0eX0gKSB7CgogICAgICAgIG15ICVQcmlvcml0eTsKICAgICAgICBteSAlUHJpb3JpdHlMaXN0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlMaXN0KAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fSApIHsKICAgICAgICAgICAgJFByaW9yaXR5TGlzdHsnJ30gPSAnLSc7CiAgICAgICAgfQogICAgICAgIGlmICggISRQYXJhbXtOZXdQcmlvcml0eUlEfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57UHJpb3JpdHlEZWZhdWx0fSApIHsKICAgICAgICAgICAgICAgICRQcmlvcml0eXtTZWxlY3RlZFZhbHVlfSA9ICRDb25maWctPntQcmlvcml0eURlZmF1bHR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUHJpb3JpdHl7U2VsZWN0ZWRJRH0gPSAkUGFyYW17TmV3UHJpb3JpdHlJRH07CiAgICAgICAgfQogICAgICAgICRQcmlvcml0eXtTZWxlY3RlZElEfSB8fD0gJFBhcmFte1ByaW9yaXR5SUR9OwogICAgICAgICRQYXJhbXtQcmlvcml0eVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgID0+IFwlUHJpb3JpdHlMaXN0LAogICAgICAgICAgICBOYW1lICA9PiAnTmV3UHJpb3JpdHlJRCcsCiAgICAgICAgICAgIENsYXNzID0+ICdNb2Rlcm5pemUgRm9ybVVwZGF0ZScsCiAgICAgICAgICAgICVQcmlvcml0eSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQcmlvcml0eScsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgRW5kIFdpZGdldCBUaWNrZXQgQWN0aW9ucwoKICAgICMgV2lkZ2V0IEFydGljbGUKICAgIGlmICggJENvbmZpZy0+e05vdGV9ICkgewoKICAgICAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdDb2xsYXBzZWQnOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDb25maWctPntOb3RlTWFuZGF0b3J5fQogICAgICAgICAgICB8fCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfQogICAgICAgICAgICB8fCAkUGFyYW17Q3JlYXRlQXJ0aWNsZX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1dpZGdldFN0YXR1c30gPSAnRXhwYW5kZWQnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtTdWJqZWN0UmVxdWlyZWR9ID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgJFBhcmFte0JvZHlSZXF1aXJlZH0gICAgPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfRGVwZW5kaW5nUmVxdWlyZWRBTkQgVmFsaWRhdGVfRGVwZW5kaW5nX0NyZWF0ZUFydGljbGUnOwogICAgICAgICAgICAkUGFyYW17Qm9keVJlcXVpcmVkfSAgICA9ICdWYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORCBWYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZSc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjdXN0b21lciB2aXNpYmlsaXR5IG9mIHRoaXMgbm90ZSB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgYXJ0aWNsZSBmb3Igd2hvbSB0aGlzIGlzIHRoZSByZXBseQogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgIWRlZmluZWQgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSA9ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICAgICAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ID0gJENvbmZpZy0+e0lzVmlzaWJsZUZvckN1c3RvbWVyRGVmYXVsdH07CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYXR0YWNobWVudHMKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvaW1hZ2UvaSApCiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbmRlciBhcnRpY2xlIHR5cGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAkQXJ0aWNsZVR5cGVEeW5hbWljRmllbGRIVE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkR5bmFtaWNGaWVsZDo6TWFzaycpLT5FZGl0U2VjdGlvblJlbmRlcigKICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgPT4gJFNlbGYtPntBcnRpY2xlTWFza0RlZmluaXRpb259LAogICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkVmFsdWVzICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQYXJhbXtERlBvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gJFBhcmFte0RGRXJyb3JzfSwKICAgICAgICAgICAgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gJFBhcmFte1Zpc2liaWxpdHl9LAogICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgICA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZH0tPiUqLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdXaWRnZXRBcnRpY2xlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+ICRBcnRpY2xlVHlwZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHVzZXIgaWRzIG9mIGFnZW50cywgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhpcyBkaWFsb2cKICAgICAgICAjIGJhc2VkIG9uIHF1ZXVlIHJpZ2h0cwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ25vdGUnLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBlbWFpbCBwYXJzZXIgb2JqZWN0CiAgICAgICAgbXkgJEVtYWlsUGFyc2VyT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkVtYWlsUGFyc2VyLT5uZXcoCiAgICAgICAgICAgIE1vZGUgID0+ICdTdGFuZGFsb25lJywKICAgICAgICAgICAgRGVidWcgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFuZCByZXRyaWV2ZSBpbnZvbHZlZCBhbmQgaW5mb3JtZWQgYWdlbnRzIG9mIFJlcGx5VG8gTm90ZQogICAgICAgIG15IEBSZXBseVRvVXNlcnM7CiAgICAgICAgbXkgJVJlcGx5VG9Vc2Vyc0hhc2g7CiAgICAgICAgbXkgJVJlcGx5VG9Vc2VySURzOwogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgICAgIG15IEBSZXBseVRvUGFydHMgPSAkRW1haWxQYXJzZXJPYmplY3QtPlNwbGl0QWRkcmVzc0xpbmUoCiAgICAgICAgICAgICAgICBMaW5lID0+ICRTZWxmLT57UmVwbHlUb0FydGljbGVDb250ZW50fS0+e1RvfSB8fCAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFJFUExZVE9QQVJUOgogICAgICAgICAgICBmb3IgbXkgJFNpbmdsZVJlcGx5VG9QYXJ0IChAUmVwbHlUb1BhcnRzKSB7CiAgICAgICAgICAgICAgICBteSAkUmVwbHlUb0FkZHJlc3MgPSAkRW1haWxQYXJzZXJPYmplY3QtPkdldEVtYWlsQWRkcmVzcygKICAgICAgICAgICAgICAgICAgICBFbWFpbCA9PiAkU2luZ2xlUmVwbHlUb1BhcnQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgUkVQTFlUT1BBUlQgaWYgISRSZXBseVRvQWRkcmVzczsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcGx5VG9Vc2VycywgJFJlcGx5VG9BZGRyZXNzOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkUmVwbHlUb1VzZXJzSGFzaHskX30rKyBmb3IgQFJlcGx5VG9Vc2VyczsKCiAgICAgICAgICAgICMgZ2V0IHVzZXIgaWRzIG9mIGF2YWlsYWJsZSB1c2VycwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlU2hvd25Vc2VycyApIHsKICAgICAgICAgICAgICAgIG15ICVVc2VyRGF0YSA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFVzZXJFbWFpbCA9ICRVc2VyRGF0YXtVc2VyRW1haWx9OwogICAgICAgICAgICAgICAgaWYgKCAkUmVwbHlUb1VzZXJzSGFzaHskVXNlckVtYWlsfSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBvcmlnaW5hbCBub3RlIHNlbmRlciB0byBsaXN0IG9mIHVzZXIgaWRzCiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBAeyAkU2VsZi0+e1JlcGx5VG9TZW5kZXJVc2VySUR9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBpZiBzZW5kZXIgcmVwbGllcyB0byBoaW1zZWxmLCBkbyBub3QgaW5jbHVkZSBzZW5kZXIgaW4gbGlzdAogICAgICAgICAgICAgICAgaWYgKCAkVXNlcklEIG5lICRTZWxmLT57VXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSB1c2VyIGlkIG9mIGFjdGl2ZSB1c2VyCiAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7ICRTZWxmLT57VXNlcklEfSB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW5mb3JtQWdlbnR9IHx8ICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZGRpdGlvbmFsQWdlbnRzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAgICAgIyBnZXQgYWxsIGFnZW50cyBmb3IgImludm9sdmVkIGFnZW50cyIKICAgICAgICBpZiAoICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKCiAgICAgICAgICAgIG15IEBVc2VySURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0SW52b2x2ZWRBZ2VudHNMaXN0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBASW52b2x2ZWRBZ2VudHM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMTsKCiAgICAgICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgICAgIG15ICVBZ2VudFdpdGhQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBVU0VSOgogICAgICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBVc2VySURzICkgewoKICAgICAgICAgICAgICAgIG5leHQgVVNFUiBpZiAhZGVmaW5lZCAkQWdlbnRXaXRoUGVybWlzc2lvbnsgJFVzZXItPntVc2VySUR9IH07CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gIiRDb3VudGVyOiAkVXNlci0+e1VzZXJGdWxsbmFtZX0iOwogICAgICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICIgJFVzZXItPntPdXRPZk9mZmljZU1lc3NhZ2V9IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRVc2VyLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICAjIGFkZCBpbnZvbHZlZCB1c2VyIGFzIHNlbGVjdGVkIGVudHJpZXMsIGlmIGF2YWlsYWJsZSBpbiBSZXBseVRvQWRkcmVzc2VzIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBJbnZvbHZlZFVzZXJJRCwgJFVzZXItPntVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVwbHlUb1VzZXJJRHN7ICRVc2VyLT57VXNlcklEfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSW52b2x2ZWRBZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okludm9sdmVkQWdlbnRNYXhTaXplJykgfHwgMzsKICAgICAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcQEludm9sdmVkQWdlbnRzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQEludm9sdmVkVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBibG9jayBpcyBjYWxsZWQgYmVsb3cgImluZm9ybSBhZ2VudHMiCiAgICAgICAgfQoKICAgICAgICAjIGFnZW50IGxpc3QKICAgICAgICBpZiAoICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICAgICAjIGdldCBpbmZvcm0gdXNlciBsaXN0CiAgICAgICAgICAgIG15ICVJbmZvcm1BZ2VudHM7CiAgICAgICAgICAgIG15IEBJbmZvcm1Vc2VySUQgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwogICAgICAgICAgICBteSAlSW5mb3JtQWdlbnRMaXN0ID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVJbmZvcm1BZ2VudExpc3QgKSB7CiAgICAgICAgICAgICAgICAkSW5mb3JtQWdlbnRzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZW1haWwgYWRkcmVzcyBvZiBhbGwgdXNlcnMgYW5kIGNvbXBhcmUgdG8gcmVwbHl0by1hZGRyZXNzZXMKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVJbmZvcm1BZ2VudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3skVXNlcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRJbmZvcm1BZ2VudFNpemUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkluZm9ybUFnZW50TWF4U2l6ZScpCiAgICAgICAgICAgICAgICB8fCAzOwogICAgICAgICAgICAkUGFyYW17T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVJbmZvcm1BZ2VudHMsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+IFxASW5mb3JtVXNlcklELAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW5mb3JtVXNlcklEJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+ICRJbmZvcm1BZ2VudFNpemUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgaW52b2x2ZWQKICAgICAgICBpZiAoICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW52b2x2ZWRBZ2VudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgbGlzdCBvZiBhZ2VudHMsIHRoYXQgcmVjZWl2ZSB0aGlzIG5vdGUgKFJlcGx5VG9Ob3RlKQogICAgICAgICMgYXQgbGVhc3Qgc2VuZGVyIG9mIG9yaWdpbmFsIG5vdGUgYW5kIGFsbCByZWNpcGllbnRzIG9mIHRoZSBvcmlnaW5hbCBub3RlCiAgICAgICAgIyB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVkIHdpdGggaW52b2x2ZWQvaW5mb3JtIGFnZW50cwogICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CgogICAgICAgICAgICBteSAkVXNlcnNIYXNoU2l6ZSA9IGtleXMgJVJlcGx5VG9Vc2VySURzOwogICAgICAgICAgICBteSAkQ291bnRlciAgICAgICA9IDA7CiAgICAgICAgICAgICRQYXJhbXtVc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb259ID0gam9pbiggJywnLCBrZXlzICVSZXBseVRvVXNlcklEcyApOwoKICAgICAgICAgICAgaWYgKCAkVXNlcnNIYXNoU2l6ZSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVSZXBseVRvVXNlcklEcyApIHsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uU2luZ2xlVXNlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBhIHNlcGFyYXRvciAoSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3IpLAogICAgICAgICAgICAgICAgICAgICMgaWYgbm90IGxhc3QgZW50cnkKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyIDwgJFVzZXJzSGFzaFNpemUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXJTZXBhcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgdGV4dCB0ZW1wbGF0ZSBzdHJpbmcKICAgICAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScpLT5TdGFuZGFyZFRlbXBsYXRlTGlzdCgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgVHlwZSAgPT4gJ05vdGUnLAogICAgICAgICk7CgogICAgICAgIG15ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzID0gJFNlbGYtPl9HZXRTdGFuZGFyZFRlbXBsYXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSB8fCAnJywKICAgICAgICApOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFF1ZXVlU3RhbmRhcmRUZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICB8fCAoICRDb25maWctPntRdWV1ZX0gJiYgSXNIYXNoUmVmV2l0aERhdGEoIFwlU3RhbmRhcmRUZW1wbGF0ZXMgKSApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFBhcmFte1N0YW5kYXJkVGVtcGxhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRRdWV1ZVN0YW5kYXJkVGVtcGxhdGVzIHx8IHt9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTdGFuZGFyZFRlbXBsYXRlSUQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTdGFuZGFyZFRlbXBsYXRlSUR9IHx8ICcnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFuZGFyZFRlbXBsYXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgdGltZSBhY2NvdW50aW5nIGJveAogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBY2NvdW50VGltZScpICkgewogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TmVlZEFjY291bnRlZFRpbWUnKSAmJiAkQ29uZmlnLT57Tm90ZU1hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNMYWJlbE1hbmRhdG9yeScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17VGltZVVuaXRzUmVxdWlyZWR9ID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0c0xhYmVsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRQYXJhbXtUaW1lVW5pdHNSZXF1aXJlZH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykKICAgICAgICAgICAgICAgICAgICA/ICdWYWxpZGF0ZV9EZXBlbmRpbmdSZXF1aXJlZEFORCBWYWxpZGF0ZV9EZXBlbmRpbmdfQ3JlYXRlQXJ0aWNsZScKICAgICAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRDb25maWctPntSaWNoVGV4dEhlaWdodH0gfHwgMDsKICAgICAgICAkUGFyYW17UmljaFRleHRXaWR0aH0gID0gJENvbmZpZy0+e1JpY2hUZXh0V2lkdGh9ICB8fCAwOwoKICAgICAgICAjIHNldCB1cCByaWNoIHRleHQgZWRpdG9yCiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVuZCBXaWRnZXQgQXJ0aWNsZQoKICAgICMgZXhwbGFuYXRvcnkgbWVzc2FnZSBhYm91dCBhc3RlcmlzawogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFzdGVyaXNrRXhwbGFuYXRpb24nKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXN0ZXJpc2tFeHBsYW5hdGlvbicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBvdXRwdXQgYmFjawogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtCiAgICApOwp9CgpzdWIgX0dldE5leHRTdGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlTmV4dFN0YXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U3RhdGVMaXN0KAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gXCVOZXh0U3RhdGVzOwp9CgpzdWIgX0dldFJlc3BvbnNpYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNob3duVXNlcnM7CiAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIHNob3cgYWxsIHVzZXJzCiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAlU2hvd25Vc2VycyA9ICVBbGxHcm91cHNNZW1iZXJzOwogICAgfQoKICAgICMgc2hvdyBvbmx5IHVzZXJzIHdpdGggcmVzcG9uc2libGUgb3IgcncgcGVybWlzc2lvbnMgaW4gdGhlIHF1ZXVlCiAgICBlbHNpZiAoICRQYXJhbXtRdWV1ZUlEfSAmJiAhJFBhcmFte093bmVyQWxsfSApIHsKICAgICAgICBteSAkR0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldFF1ZXVlR3JvdXBJRCgKICAgICAgICAgICAgUXVldWVJRCA9PiAkUGFyYW17TmV3UXVldWVJRH0gfHwgJFBhcmFte1F1ZXVlSUR9CiAgICAgICAgKTsKICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uR3JvdXBHZXQoCiAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgVHlwZSAgICA9PiAncmVzcG9uc2libGUnLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyB3b3JrZmxvdwogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKSB9IGlmICRBQ0w7CiAgICByZXR1cm4gXCVTaG93blVzZXJzOwp9CgpzdWIgX0dldE93bmVycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTaG93blVzZXJzOwogICAgbXkgJUFsbEdyb3Vwc01lbWJlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBzaG93IGFsbCB1c2VycwogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgIH0KCiAgICAjIHNob3cgb25seSB1c2VycyB3aXRoIG93bmVyIG9yIHJ3IHBlcm1pc3Npb25zIGluIHRoZSBxdWV1ZQogICAgZWxzaWYgKCAkUGFyYW17UXVldWVJRH0gJiYgISRQYXJhbXtPd25lckFsbH0gKSB7CiAgICAgICAgbXkgJEdJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRRdWV1ZUdyb3VwSUQoCiAgICAgICAgICAgIFF1ZXVlSUQgPT4gJFBhcmFte05ld1F1ZXVlSUR9IHx8ICRQYXJhbXtRdWV1ZUlEfQogICAgICAgICk7CiAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ293bmVyJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVNZW1iZXJMaXN0ICkgewogICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgd29ya2Zsb3cKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgJVBhcmFtLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnTmV3T3duZXInLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4geyAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCkgfSBpZiAkQUNMOwogICAgcmV0dXJuIFwlU2hvd25Vc2VyczsKfQoKc3ViIF9HZXRPbGRPd25lcnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15IEBPbGRVc2VySW5mbyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyTGlzdCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgIG15ICVVc2VySGFzaDsKICAgIGlmIChAT2xkVXNlckluZm8pIHsKICAgICAgICBteSAkQ291bnRlciA9IDE7CiAgICAgICAgVVNFUjoKICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBPbGRVc2VySW5mbyApIHsKCiAgICAgICAgICAgIG5leHQgVVNFUiBpZiAkVXNlckhhc2h7ICRVc2VyLT57VXNlcklEfSB9OwoKICAgICAgICAgICAgJFVzZXJIYXNoeyAkVXNlci0+e1VzZXJJRH0gfSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyB3b3JrZmxvdwogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdPbGRPd25lcicsCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVVzZXJIYXNoLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4geyAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCkgfSBpZiAkQUNMOwogICAgcmV0dXJuIFwlVXNlckhhc2g7Cn0KCnN1YiBfR2V0U2VydmljZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzZXJ2aWNlCiAgICBteSAlU2VydmljZTsKCiAgICAjIGdldCBvcHRpb25zIGZvciBkZWZhdWx0IHNlcnZpY2VzIGZvciB1bmtub3duIGN1c3RvbWVycwogICAgbXkgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OkRlZmF1bHQ6OlVua25vd25DdXN0b21lcicpOwoKICAgICMgY2hlY2sgaWYgbm8gQ3VzdG9tZXJVc2VySUQgaXMgc2VsZWN0ZWQKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMCBsZWF2ZSBDdXN0b21lclVzZXJJRCBlbXB0eSwgaXQgd2lsbCBub3QgZ2V0IGFueSBzZXJ2aWNlcwogICAgIyBpZiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgPSAxIHNldCBDdXN0b21lclVzZXJJRCB0byBnZXQgZGVmYXVsdCBzZXJ2aWNlcwogICAgaWYgKCAhJFBhcmFte0N1c3RvbWVyVXNlcklEfSAmJiAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIgKSB7CiAgICAgICAgJFBhcmFte0N1c3RvbWVyVXNlcklEfSA9ICc8REVGQVVMVD4nOwogICAgfQoKICAgICMgZ2V0IHNlcnZpY2UgbGlzdAogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICVTZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRTZXJ2aWNlTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gXCVTZXJ2aWNlOwp9CgpzdWIgX0dldFNMQXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIG5vbiBzZXQgY3VzdG9tZXJzIGNhbiBnZXQgZGVmYXVsdCBzZXJ2aWNlcyB0aGVuIHRoZXkgc2hvdWxkIGFsc28gYmUgYWJsZSB0byBnZXQgdGhlIFNMQXMKICAgICMgIGZvciB0aG9zZSBzZXJ2aWNlcyAodGhpcyB3b3JrcyBkdXJpbmcgdGlja2V0IGNyZWF0aW9uKS4KICAgICMgaWYgbm8gQ3VzdG9tZXJVc2VySUQgaXMgc2V0LCBUaWNrZXRTTEFMaXN0IHdpbGwgY29tcGxhaW4gZHVyaW5nIEFKQVggdXBkYXRlcyBhcyBVc2VySUQgaXMgbm90CiAgICAjICBwYXNzZWQuIFNlZSBidWcgMTExNDcuCgogICAgIyBnZXQgb3B0aW9ucyBmb3IgZGVmYXVsdCBzZXJ2aWNlcyBmb3IgdW5rbm93biBjdXN0b21lcnMKICAgIG15ICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpEZWZhdWx0OjpVbmtub3duQ3VzdG9tZXInKTsKCiAgICAjIGNoZWNrIGlmIG5vIEN1c3RvbWVyVXNlcklEIGlzIHNlbGVjdGVkCiAgICAjIGlmICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9IDAgbGVhdmUgQ3VzdG9tZXJVc2VySUQgZW1wdHksIGl0IHdpbGwgbm90IGdldCBhbnkgc2VydmljZXMKICAgICMgaWYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gMSBzZXQgQ3VzdG9tZXJVc2VySUQgdG8gZ2V0IGRlZmF1bHQgc2VydmljZXMKICAgIGlmICggISRQYXJhbXtDdXN0b21lclVzZXJJRH0gJiYgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyICkgewogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJJRH0gPSAnPERFRkFVTFQ+JzsKICAgIH0KCiAgICBteSAlU0xBOwogICAgaWYgKCAkUGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAlU0xBID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRTTEFMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBcJVNMQTsKfQoKc3ViIF9HZXRQcmlvcml0aWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVByaW9yaXRpZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFByaW9yaXR5TGlzdCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgaWYgKCAhJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH0gKSB7CiAgICAgICAgJFByaW9yaXRpZXN7Jyd9ID0gJy0nOwogICAgfQoKICAgIHJldHVybiBcJVByaW9yaXRpZXM7Cn0KCnN1YiBfR2V0UXVvdGVkUmVwbHlCb2R5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewoKICAgICAgICAjIHJld3JhcCBib2R5IGlmIGV4aXN0cwogICAgICAgIGlmICggJFBhcmFte0JvZHl9ICkgewogICAgICAgICAgICAkUGFyYW17Qm9keX0gPX4gcy9cdC8gL2c7CiAgICAgICAgICAgIG15ICRRdW90ZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlF1b3RlJykgfHwgJycsCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFF1b3RlKSB7CgogICAgICAgICAgICAgICAgIyBxdW90ZSB0ZXh0CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiPGJsb2NrcXVvdGUgdHlwZT1cImNpdGVcIj4kUGFyYW17Qm9keX08L2Jsb2NrcXVvdGU+XG4iOwoKICAgICAgICAgICAgICAgICMgY2xlYW51cCBub3QgY29tcGF0LiB0YWdzCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q2xlYW51cCgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkUmVzcG9uc2VGb3JtYXQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKCAkUGFyYW17Q3JlYXRlVGltZX0sICdEYXRlRm9ybWF0JywgJ05vU2Vjb25kcycgKTsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdCAuPSAnIC0gJyAuICRQYXJhbXtGcm9tfSAuICcgJzsKICAgICAgICAgICAgICAgICRSZXNwb25zZUZvcm1hdAogICAgICAgICAgICAgICAgICAgIC49ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnd3JvdGUnKSAuICc6JzsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkUmVzcG9uc2VGb3JtYXQgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+IiAuICRQYXJhbXtCb2R5fTsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RhdGUnKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICI6ICRQYXJhbXtDcmVhdGVUaW1lfTxici8+IiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHF3KFN1YmplY3QgUmVwbHlUbyBSZXBseS1UbyBDYyBUbyBGcm9tKSkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFteyRffSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRfKSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17JF99PGJyLz4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRnJvbSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMlJpY2hUZXh0KAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17RnJvbX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRNZXNzYWdlRnJvbSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTWVzc2FnZSBmcm9tJyk7CiAgICAgICAgICAgICAgICBteSAkRW5kTWVzc2FnZSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0VuZCBtZXNzYWdlJyk7CgogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIjxici8+LS0tLSAkTWVzc2FnZUZyb20gJEZyb20gLS0tPGJyLz48YnIvPiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gLj0gIjxici8+LS0tLSAkRW5kTWVzc2FnZSAtLS08YnIvPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmVwYXJlIGJvZHksIHN1YmplY3QsIFJlcGx5VG8gLi4uCiAgICAgICAgIyByZXdyYXAgYm9keSBpZiBleGlzdHMKICAgICAgICBpZiAoICRQYXJhbXtCb2R5fSApIHsKICAgICAgICAgICAgJFBhcmFte0JvZHl9ID1+IHMvXHQvIC9nOwogICAgICAgICAgICBteSAkUXVvdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlF1b3RlJyk7CiAgICAgICAgICAgIGlmICgkUXVvdGUpIHsKICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9fiBzL1xuL1xuJFF1b3RlIC9nOwogICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gIlxuJFF1b3RlICIgLiAkUGFyYW17Qm9keX07CgogICAgICAgICAgICAgICAgbXkgJFJlc3BvbnNlRm9ybWF0ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZyggJFBhcmFte0NyZWF0ZVRpbWV9LCAnRGF0ZUZvcm1hdCcsICdOb1NlY29uZHMnICk7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQgLj0gJyAtICcgLiAkUGFyYW17RnJvbX0gLiAnICc7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2VGb3JtYXQKICAgICAgICAgICAgICAgICAgICAuPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3dyb3RlJykgLiAiOlxuIjsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAkUmVzcG9uc2VGb3JtYXQgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiXG4iIC4gJFBhcmFte0JvZHl9OwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17Q3JlYXRlVGltZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0JvZHl9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEYXRlJykgLgogICAgICAgICAgICAgICAgICAgICAgICAiOiAkUGFyYW17Q3JlYXRlVGltZX1cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChxdyhTdWJqZWN0IFJlcGx5VG8gUmVwbHktVG8gQ2MgVG8gRnJvbSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogJFBhcmFteyRffVxuIiAuICRQYXJhbXtCb2R5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJE1lc3NhZ2VGcm9tID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdNZXNzYWdlIGZyb20nKTsKICAgICAgICAgICAgICAgIG15ICRFbmRNZXNzYWdlICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRW5kIG1lc3NhZ2UnKTsKCiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gPSAiXG4tLS0tICRNZXNzYWdlRnJvbSAkUGFyYW17RnJvbX0gLS0tXG5cbiIgLiAkUGFyYW17Qm9keX07CiAgICAgICAgICAgICAgICAkUGFyYW17Qm9keX0gLj0gIlxuLS0tLSAkRW5kTWVzc2FnZSAtLS1cbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtCb2R5fTsKfQoKc3ViIF9HZXRTdGFuZGFyZFRlbXBsYXRlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZWl0aGVyIFF1ZXVlSUQgb3IgVGlja2V0SUQgaXMgbmVlZGVkCiAgICByZXR1cm4ge30gaWYgISRQYXJhbXtRdWV1ZUlEfSAmJiAhJFBhcmFte1RpY2tldElEfTsKCiAgICBteSAkUXVldWVJRCA9ICRQYXJhbXtRdWV1ZUlEfSB8fCAnJzsKICAgIGlmICggISRQYXJhbXtRdWV1ZUlEfSAmJiAkUGFyYW17VGlja2V0SUR9ICkgewoKICAgICAgICAjIGdldCBRdWV1ZUlEIGZyb20gdGhlIHRpY2tldAogICAgICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFF1ZXVlSUQgPSAkVGlja2V0e1F1ZXVlSUR9IHx8ICcnOwogICAgfQoKICAgICMgZmV0Y2ggYWxsIHN0ZC4gdGVtcGxhdGVzCiAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRRdWV1ZUlELAogICAgICAgIFRlbXBsYXRlVHlwZXMgPT4gMSwKICAgICk7CgogICAgIyByZXR1cm4gZW1wdHkgaGFzaCBpZiB0aGVyZSBhcmUgbm8gdGVtcGxhdGVzIGZvciB0aGlzIHNjcmVlbgogICAgcmV0dXJuIHt9IHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFN0YW5kYXJkVGVtcGxhdGVze05vdGV9ICk7CgogICAgIyByZXR1cm4ganVzdCB0aGUgdGVtcGxhdGVzIGZvciB0aGlzIHNjcmVlbgogICAgcmV0dXJuICRTdGFuZGFyZFRlbXBsYXRlc3tOb3RlfTsKfQoKc3ViIF9HZXRUeXBlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm8gdHlwZXMgd2hlbiBhIHBhcmFtZXRlciBpcyBtaXNzaW5nCiAgICByZXR1cm4ge30gdW5sZXNzICggJFBhcmFte1F1ZXVlSUR9IHx8ICRQYXJhbXtUaWNrZXRJRH0gKTsKCiAgICAjIGdldCB0aWNrZXQgdHlwZXMgd2l0aCBjb25zaWRlcmluZyBBQ0xzCiAgICBteSAlVHlwZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0VHlwZUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBcJVR5cGU7Cn0KCnN1YiBfR2V0UXVldWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBHZXQgUXVldWVzLgogICAgbXkgJVF1ZXVlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0TW92ZUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBBY3Rpb24gICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgVHlwZSAgICAgPT4gJ21vdmVfaW50bycsCiAgICApOwoKICAgIHJldHVybiBcJVF1ZXVlczsKfQoKc3ViIF9Mb2FkQXJ0aWNsZUVkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBteSAlVGlja2V0ICAgICAgICAgICAgICAgPSAleyAkUGFyYW17VGlja2V0fSB9OwogICAgbXkgJUFydGljbGVEYXRhICAgICAgICAgID0gJXsgJFBhcmFte0FydGljbGVEYXRhfSB9OwogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJFBhcmFte0FydGljbGVCYWNrZW5kT2JqZWN0fTsKCiAgICAjIENoZWNrIGlmIHRoZXJlIGlzIEhUTUwgYm9keSBhdHRhY2htZW50LgogICAgbXkgJUF0dGFjaG1lbnRJbmRleEhUTUxCb2R5ID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQXR0YWNobWVudEluZGV4KAogICAgICAgIEFydGljbGVJRCAgICA9PiAkQXJ0aWNsZURhdGF7QXJ0aWNsZUlEfSwKICAgICAgICBPbmx5SFRNTEJvZHkgPT4gMSwKICAgICk7CiAgICAoICRBcnRpY2xlRGF0YXtIVE1MQm9keUF0dGFjaG1lbnRJRH0gKSA9IHNvcnQga2V5cyAlQXR0YWNobWVudEluZGV4SFRNTEJvZHk7CgogICAgaWYgKCAkQXJ0aWNsZURhdGF7SFRNTEJvZHlBdHRhY2htZW50SUR9ICkgewogICAgICAgICRBcnRpY2xlRGF0YXtNaW1lVHlwZX0gPSAndGV4dC9odG1sJzsKCiAgICAgICAgIyBSZW5kZXIgYXJ0aWNsZSBjb250ZW50LgogICAgICAgICRBcnRpY2xlRGF0YXtCb2R5fSA9ICRMYXlvdXRPYmplY3QtPkFydGljbGVQcmV2aWV3KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRUaWNrZXR7VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRBcnRpY2xlRGF0YXtBcnRpY2xlSUR9LAogICAgICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzID0+IDEKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICVBcnRpY2xlRGF0YTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIGlmICgkUGFyYW17Tm9BdHRhY2htZW50c30pIHsKICAgICAgICByZXR1cm4gJUFydGljbGVEYXRhOwogICAgfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCiAgICBteSAkQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5IVE1MICVdJywKICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgIEhUTUwgPT4gJEFydGljbGVEYXRhe0JvZHl9LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICVEYXRhID0gKAogICAgICAgIENvbnRlbnQgICAgICAgICAgICA9PiAkQ29udGVudCwKICAgICAgICBDb250ZW50QWx0ZXJuYXRpdmUgPT4gJycsCiAgICAgICAgQ29udGVudElEICAgICAgICAgID0+ICcnLAogICAgICAgIENvbnRlbnRUeXBlICAgICAgICA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgIERpc3Bvc2l0aW9uICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBGaWxlc2l6ZVJhdyAgICAgICAgPT4gYnl0ZXM6Omxlbmd0aCgkQ29udGVudCksCiAgICApOwoKICAgICMgc2V0IGRvd25sb2FkIHR5cGUgdG8gaW5saW5lCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0F0dGFjaG1lbnREb3dubG9hZFR5cGUnLAogICAgICAgIFZhbHVlID0+ICdpbmxpbmUnCiAgICApOwoKICAgICMgZ2VuZXJhdGUgYmFzZSB1cmwKICAgIG15ICRVUkwgPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPSRTZWxmLT57Rm9ybUlEfTtDb250ZW50SUQ9IjsKCiAgICAjIHNldCBmaWxlbmFtZSBmb3IgaW5saW5lIHZpZXdpbmcKICAgICREYXRhe0ZpbGVuYW1lfSA9ICJUaWNrZXQtJFRpY2tldHtUaWNrZXROdW1iZXJ9LUFydGljbGVJRC0kQXJ0aWNsZURhdGF7QXJ0aWNsZUlEfS5odG1sIjsKCiAgICAjIHJlcGxhY2UgbGlua3MgdG8gaW5saW5lIGltYWdlcyBpbiBodG1sIGNvbnRlbnQKICAgIG15ICVBdG1Cb3ggPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVBdHRhY2htZW50SW5kZXgoCiAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlRGF0YXtBcnRpY2xlSUR9LAogICAgKTsKCiAgICBmb3IgbXkgJEZpbGVJRCAoIGtleXMgJUF0bUJveCApIHsKICAgICAgICBteSAlRmlsZURhdGEgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVBdHRhY2htZW50KAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgICAgID0+ICRBcnRpY2xlRGF0YXtBcnRpY2xlSUR9LAogICAgICAgICAgICBGaWxlSUQgICAgICAgICAgICAgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgIENvbnRlbnRNYXlCZUZpbGVoYW5kbGUgPT4gMCwKICAgICAgICApOwoKICAgICAgICBpZiAoICRGaWxlRGF0YXtEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgJiYgJEZpbGVEYXRhe0ZpbGVuYW1lfSBuZSAnZmlsZS0yJyApIHsKCiAgICAgICAgICAgICMgYWRkIHVwbG9hZGVkIGZpbGUgdG8gdXBsb2FkIGNhY2hlCiAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlRGF0YXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZURhdGF7Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZURhdGF7Q29udGVudFR5cGV9IC4gJzsgbmFtZT0iJyAuICRGaWxlRGF0YXtGaWxlbmFtZX0gLiAnIicsCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAkRmlsZURhdGF7RGlzcG9zaXRpb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBuZXcgY29udGVudCBpZAogICAgbXkgJUNvbnRlbnRJRHM7CgogICAgbXkgQEF0dGFjaG1lbnRNZXRhID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfQogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TWV0YSkgewogICAgICAgICRDb250ZW50SURzeyAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSB9ID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgfQoKICAgICMgRG8gbm90IGxvYWQgZXh0ZXJuYWwgaW1hZ2VzIGlmICdCbG9ja0xvYWRpbmdSZW1vdGVDb250ZW50JyBpcyBlbmFibGVkLgogICAgbXkgJExvYWRFeHRlcm5hbEltYWdlcyA9IDE7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QmxvY2tMb2FkaW5nUmVtb3RlQ29udGVudCcpICkgewogICAgICAgICRMb2FkRXh0ZXJuYWxJbWFnZXMgPSAwOwogICAgfQoKICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUF0bUJveCwKICAgICAgICBDb250ZW50SURzICAgICAgICAgPT4gXCVDb250ZW50SURzLAogICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAkTG9hZEV4dGVybmFsSW1hZ2VzLAogICAgKTsKCiAgICAjIGlmIHRoZXJlIGlzIHVuZXhwZWN0ZWRseSBwZ3AgZGVjcnlwdGVkIGNvbnRlbnQgaW4gdGhlIGh0bWwgZW1haWwgKE9FKSwKICAgICMgd2Ugd2lsbCB1c2UgdGhlIGFydGljbGUgYm9keSAocGxhaW4gdGV4dCkgZnJvbSB0aGUgZGF0YWJhc2UgYXMgZmFsbCBiYWNrCiAgICAjIHNlZSBidWcjOTY3MgogICAgaWYgKAogICAgICAgICREYXRhe0NvbnRlbnR9ID1+IG17CiAgICAgICAgXiAuKiAtLS0tLUJFR0lOIFsgXSBQR1AgWyBdIE1FU1NBR0UtLS0tLSAgLiogJCAgICAgICMgZ3JlcCBQR1AgYmVnaW4gdGFnCiAgICAgICAgLisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUEdQIHBhcnRzIG1heSBiZSBuZXN0ZWQgaW4gaHRtbAogICAgICAgIF4gLiogLS0tLS1FTkQgWyBdIFBHUCBbIF0gTUVTU0FHRS0tLS0tICAuKiAkICAgICAgICAjIGdyZXAgUEdQIGVuZCB0YWcKICAgIH14bXMKICAgICAgICApCiAgICB7CiAgICAgICAgIyBodG1sIHF1b3RpbmcKICAgICAgICBteSAkSFRNTEJvZHkgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlZmF1bHRWaWV3TmV3TGluZScpLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkQXJ0aWNsZURhdGF7Qm9keX0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdFZpZXdMaW5lcycpIHx8IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJERhdGF7Q29udGVudH0gPSAkSFRNTEJvZHk7CiAgICB9CgogICAgJEFydGljbGVEYXRhe0JvZHl9ID0gJERhdGF7Q29udGVudH07CiAgICBkZWxldGUgJEFydGljbGVEYXRhe0lzRWRpdGVkfTsKCiAgICByZXR1cm4gJUFydGljbGVEYXRhOwp9CgpzdWIgX0NvcHlBcnRpY2xlQXR0YWNobWVudHNUb1VwbG9hZENhY2hlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgbXkgJEFydGljbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CgogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBcnRpY2xlSUQgPT4gJFBhcmFte0FydGljbGVJRH0sCiAgICApOwoKICAgICMgZGVmaW5lIGlmIHJpY2ggdGV4dCBzaG91bGQgYmUgdXNlZAogICAgJFNlbGYtPntSaWNoVGV4dH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Olpvb21SaWNoVGV4dEZvcmNlJykKICAgICAgICB8fCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgIHx8IDA7CgogICAgIyBBbHdheXMgZXhjbHVkZSBwbGFpbiB0ZXh0IGF0dGFjaG1lbnQsIGJ1dCBleGNsdWRlIEhUTUwgYm9keSBvbmx5IGlmIHJpY2ggdGV4dCBpcyBlbmFibGVkLgogICAgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9ID0gewogICAgICAgIEV4Y2x1ZGVQbGFpblRleHQgPT4gMSwKICAgICAgICBFeGNsdWRlSFRNTEJvZHkgID0+ICRTZWxmLT57UmljaFRleHR9LAogICAgICAgIEV4Y2x1ZGVJbmxpbmUgICAgPT4gJFNlbGYtPntSaWNoVGV4dH0sCiAgICB9OwoKICAgICMgR2V0IGF0dGFjaG1lbnQgaW5kZXggKGV4Y2x1ZGluZyBib2R5IGF0dGFjaG1lbnRzKS4KICAgIG15ICVBdG1JbmRleCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICBBcnRpY2xlSUQgPT4gJFBhcmFte0FydGljbGVJRH0sCiAgICAgICAgJXsgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9IH0sCiAgICApOwoKICAgIEZJTEU6CiAgICBmb3IgbXkgJEZpbGVJRCAoIHNvcnQga2V5cyAlQXRtSW5kZXggKSB7CgogICAgICAgICMgZ2V0IGFuIGF0dGFjaG1lbnQKICAgICAgICBteSAlQXR0YWNobWVudERhdGEgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVBdHRhY2htZW50KAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgICAgID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAgICAgICAgICBGaWxlSUQgICAgICAgICAgICAgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgIENvbnRlbnRNYXlCZUZpbGVoYW5kbGUgPT4gMCwKICAgICAgICApOwoKICAgICAgICBuZXh0IEZJTEUgaWYgISRBdHRhY2htZW50RGF0YXtDb250ZW50fTsKCiAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkQXR0YWNobWVudERhdGF7RmlsZW5hbWV9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQXR0YWNobWVudERhdGF7Q29udGVudH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtDb250ZW50VHlwZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwcmUgbG9hZGVkIGF0dGFjaG1lbnQKICAgIG15IEBBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICApOwoKICAgICMgZ2V0IHN1Ym1pdCBhdHRhY2htZW50CiAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICBQYXJhbSA9PiAnRmlsZVVwbG9hZCcsCiAgICApOwoKICAgIGlmICglVXBsb2FkU3R1ZmYpIHsKICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgXCVVcGxvYWRTdHVmZjsKICAgIH0KCiAgICByZXR1cm4gQEF0dGFjaG1lbnRzOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Modules/AgentTicketArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBcnRpY2xlRWRpdC5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47Cgp1c2UgcGFyZW50IHF3KCBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0QWN0aW9uQ29tbW9uICk7CgojIGNvcmUgbW9kdWxlcwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkU2VsZi0+e1RpY2tldElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUaWNrZXRJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgc2V0IEFydGljbGVFZGl0IHNwZWNpZmljIHBhcmFtcwogICAgJFNlbGYtPntBcnRpY2xlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FydGljbGVJRCcgKTsKCiAgICBpZiAoICEkU2VsZi0+e0FydGljbGVJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQXJ0aWNsZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRDb25maWcgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgcHJldmVudCBzaGVuYW5pZ2FucwogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCAgICAgICAgICAgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgIFNob3dEZWxldGVkQXJ0aWNsZXMgPT4gMSwKICAgICk7CgogICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICApOwoKICAgICMgc2hvdyAibm8gcGVybWlzc2lvbiIgZXJyb3Igc2NyZWVuIHRvIGdpdmUgbWluaW1hbCBpbmZvIGlmIFRpY2tldElEIGFuZCBBcnRpY2xlSUQgZG8gbm90IG1hdGNoCiAgICBpZiAoICElQXJ0aWNsZSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRDb25maWctPntQZXJtaXNzaW9ufSApLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayB3aGV0aGVyIHRoaXMgYXJ0aWNsZSB0eXBlIGlzIGVsaWdpYmxlIGZvciBjaGFuZ2luZwogICAgbXkgJENoYW5uZWxOYW1lICAgID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5DaGFubmVsTmFtZUdldCgpOwogICAgbXkgJEFydGljbGVBY3Rpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIiktPnskQ2hhbm5lbE5hbWV9OwoKICAgICMgY2FsbCBwZXJtaXNzaW9uIGNoZWNrIG9mIGNvcnJlc3BvbmRpbmcgYXJ0aWNsZSBhY3Rpb24KICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJEFjdGlvblN0cmcgPSAnQWdlbnRUaWNrZXRBcnRpY2xlRWRpdCc7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKICAgICAgICAgICAgJEFjdGlvblN0cmcgPSAnQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlJzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1Jlc3RvcmUnICkgewogICAgICAgICAgICAkQWN0aW9uU3RyZyA9ICdBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlJzsKICAgICAgICB9CiAgICB9CiAgICBteSAkQWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCggJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjonIC4gJEFjdGlvblN0cmcgKS0+Q2hlY2tBY2Nlc3MoCiAgICAgICAgVGlja2V0ICAgICAgICAgID0+IFwlVGlja2V0LAogICAgICAgIEFydGljbGUgICAgICAgICA9PiBcJUFydGljbGUsCiAgICAgICAgQ2hhbm5lbE5hbWUgICAgID0+ICRDaGFubmVsTmFtZSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIEFjbEFjdGlvbkxvb2t1cCA9PiB7CiAgICAgICAgICAgICRBY3Rpb25TdHJnID0+IDEsCiAgICAgICAgfSwKICAgICk7CiAgICBpZiAoICEkQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaGlzIGFjdGlvbiBpcyBub3QgcGVybWl0dGVkIG9uIHRoZSBhcnRpY2xlIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVEZWxldGUnICkgewogICAgICAgIGlmICggISRBcnRpY2xlQWN0aW9ucy0+eydBZ2VudFRpY2tldEFydGljbGVEZWxldGUnfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQXJ0aWNsZURlbGV0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENvbmZpZyA9PiAkQ29uZmlnLAogICAgICAgICk7CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVSZXN0b3JlJyApIHsKICAgICAgICBpZiAoICEkQXJ0aWNsZUFjdGlvbnMtPnsnQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZSd9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9BcnRpY2xlRGVsZXRpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ29uZmlnICA9PiAkQ29uZmlnLAogICAgICAgICAgICBSZXN0b3JlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGVsc2Ugd2UgYXJlIGluIG5vcm1hbCBlZGl0IG1vZGUKICAgIGVsc2lmICggISRBcnRpY2xlQWN0aW9ucy0+eydBZ2VudFRpY2tldEFydGljbGVFZGl0J30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdZb3UgbmVlZCAlcyBwZXJtaXNzaW9ucyEnLCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgIyBjaGVjayBpZiBjYWxsaW5nIHRoaXMgbWFzayBpcyBhbGxvd2VkCiAgICBpZiAoCiAgICAgICAgKCAkQXJ0aWNsZXtJc1Zpc2libGVGb3JDdXN0b21lcn0gJiYgISRDb25maWctPntBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlfSApCiAgICAgICAgfHwgKCAkQXJ0aWNsZXtTZW5kZXJUeXBlfSBlcSAnY3VzdG9tZXInICYmICEkQ29uZmlnLT57RWRpdEN1c3RvbWVyQXJ0aWNsZXN9ICkKICAgICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnVGhpcyBhcnRpY2xlIGlzIG5vdCBlZGl0YWJsZSEnICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CgogICAgcmV0dXJuICRTZWxmLT5TVVBFUjo6UnVuKCVQYXJhbSk7Cn0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnID8gMSA6IDA7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgcmVuZGVyIHRpY2tldCB0eXBlIGR5bmFtaWMgZmllbGRzCiAgICBteSAkVGlja2V0VHlwZUR5bmFtaWNGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RHluYW1pY0ZpZWxkOjpNYXNrJyktPkVkaXRTZWN0aW9uUmVuZGVyKAogICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0TWFza0RlZmluaXRpb259LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICBEeW5hbWljRmllbGRWYWx1ZXMgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUGFyYW17REZQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gJFBhcmFte0RGRXJyb3JzfSwKICAgICAgICBWaXNpYmlsaXR5ICAgICAgICAgICA9PiAkUGFyYW17VmlzaWJpbGl0eX0sCiAgICAgICAgT2JqZWN0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBDdXN0b21lcklEICAgICA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZH0tPiUqLAogICAgICAgIH0sCiAgICApOwoKICAgICMgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCiAgICBpZiAoCiAgICAgICAgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApCiAgICAgICAgfHwKICAgICAgICAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJENvbmZpZy0+e1NlcnZpY2V9ICkgICAgICAgICB8fAogICAgICAgICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlJlc3BvbnNpYmxlJykgJiYgJENvbmZpZy0+e1Jlc3BvbnNpYmxlfSApIHx8CiAgICAgICAgJENvbmZpZy0+e1RpdGxlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57UXVldWV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICRDb25maWctPntPd25lcn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgJENvbmZpZy0+e1N0YXRlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAkQ29uZmlnLT57UHJpb3JpdHl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgIGFueSB7ICRfLT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgfSB2YWx1ZXMgJFNlbGYtPntEeW5hbWljRmllbGR9LT4lKgogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnV2lkZ2V0VGlja2V0QWN0aW9ucycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiAkVGlja2V0VHlwZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDb25maWctPntUaXRsZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17SGlkZUF1dG9zZWxlY3RlZH0gKSB7CgogICAgICAgICMgYWRkIEF1dG9zZWxlY3QgSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgQ29kZSA9PiAiQ29yZS5Gb3JtLkluaXRIaWRlQXV0b3NlbGVjdGVkKHsgRmllbGRJRHM6ICRQYXJhbXtIaWRlQXV0b3NlbGVjdGVkfSB9KTsiLAogICAgICAgICk7CiAgICB9CgogICAgIyB0eXBlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRDb25maWctPntUaWNrZXRUeXBlfSApIHsKICAgICAgICBteSAlVHlwZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplIEZvcm1VcGRhdGUgJyAuICggJFBhcmFte0Vycm9yc30tPntUeXBlSURJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUeXBlLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1R5cGVJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2VydmljZXMKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkQ29uZmlnLT57U2VydmljZX0gKSB7CiAgICAgICAgbXkgJFNlcnZpY2VzID0gJFNlbGYtPl9HZXRTZXJ2aWNlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXNldCBwcmV2aW91cyBTZXJ2aWNlSUQgdG8gcmVzZXQgU0xBLUxpc3QgaWYgbm8gc2VydmljZSBpcyBzZWxlY3RlZAogICAgICAgIGlmICggISRQYXJhbXtTZXJ2aWNlSUR9IHx8ICEkU2VydmljZXMtPnsgJFBhcmFte1NlcnZpY2VJRH0gfSApIHsKICAgICAgICAgICAgJFBhcmFte1NlcnZpY2VJRH0gPSAnJzsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtTZXJ2aWNlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkU2VydmljZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ1NlcnZpY2VJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gIk1vZGVybml6ZSBGb3JtVXBkYXRlICIKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17U2VydmljZUludmFsaWR9IHx8ICcnICksCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ1RyZWVWaWV3JywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmVlVmlldywKICAgICAgICAgICAgTWF4ICAgICAgICAgID0+IDIwMCwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U2VydmljZU1hbmRhdG9yeX0gfHwgMCwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAlU0xBID0gJFRpY2tldE9iamVjdC0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtTTEFTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlU0xBLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdTTEFJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAiTW9kZXJuaXplIEZvcm1VcGRhdGUgIgogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntTTEFNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte1NlcnZpY2VJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICBNYXggICAgICAgICAgPT4gMjAwLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTTEEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFNMQU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57U0xBTWFuZGF0b3J5fSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e1F1ZXVlfSApIHsKCiAgICAgICAgIyBmZXRjaCBhbGwgcXVldWVzCiAgICAgICAgbXkgJU1vdmVRdWV1ZXMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRNb3ZlTGlzdCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUeXBlICAgICA9PiAnbW92ZV9pbnRvJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBtb3ZlIHF1ZXVlcwogICAgICAgICRQYXJhbXtRdWV1ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkFnZW50UXVldWVMaXN0T3B0aW9uKAogICAgICAgICAgICBEYXRhICAgICA9PiB7ICVNb3ZlUXVldWVzLCAnJyA9PiAnLScgfSwKICAgICAgICAgICAgTXVsdGlwbGUgPT4gMCwKICAgICAgICAgICAgU2l6ZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgPT4gJ05ld1F1ZXVlSUQgTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntRdWV1ZU1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3UXVldWVJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmV3UXVldWVJRCcsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICAgID0+ICRQYXJhbXtOZXdRdWV1ZUlEfSwKICAgICAgICAgICAgVHJlZVZpZXcgICAgICAgPT4gJFRyZWVWaWV3LAogICAgICAgICAgICBDdXJyZW50UXVldWVJRCA9PiAkUGFyYW17UXVldWVJRH0sCiAgICAgICAgICAgIE9uQ2hhbmdlU3VibWl0ID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXVlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBRdWV1ZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57UXVldWVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0KICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRVc2VyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICBpZiAoICRDb25maWctPntPd25lcn0gKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2Ygb3duIGdyb3VwcwogICAgICAgIG15ICVTaG93blVzZXJzOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpDaGFuZ2VPd25lclRvRXZlcnlvbmUnKSApIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAlQWxsR3JvdXBzTWVtYmVyczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgICAgICAgICBteSAlTWVtYmVyTGlzdCA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwR2V0KAogICAgICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnb3duZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlTWVtYmVyTGlzdCApIHsKICAgICAgICAgICAgICAgICRTaG93blVzZXJzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdOZXdPd25lcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAlU2hvd25Vc2VycyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG9sZCBvd25lcgogICAgICAgIG15IEBPbGRVc2VySW5mbyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE93bmVyTGlzdCggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICBteSBAT2xkT3duZXJzOwogICAgICAgIG15ICVPbGRPd25lcnNTaG93bjsKICAgICAgICBteSAlU2Vlbk9sZE93bmVyOwogICAgICAgIGlmIChAT2xkVXNlckluZm8pIHsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAxOwogICAgICAgICAgICBVU0VSOgogICAgICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBPbGRVc2VySW5mbyApIHsKCiAgICAgICAgICAgICAgICAjIHNraXAgaWYgb2xkIG93bmVyIGlzIGFscmVhZHkgaW4gdGhlIGxpc3QKICAgICAgICAgICAgICAgIG5leHQgVVNFUiBpZiAkU2Vlbk9sZE93bmVyeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgICAgICRTZWVuT2xkT3duZXJ7ICRVc2VyLT57VXNlcklEfSB9ID0gMTsKICAgICAgICAgICAgICAgIG15ICRLZXkgICA9ICRVc2VyLT57VXNlcklEfTsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgICAgIHB1c2ggQE9sZE93bmVycywgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRPbGRPd25lcnNTaG93bnskS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lclNlbGVjdGVkSUQgPSAnJzsKICAgICAgICBpZiAoICRQYXJhbXtPbGRPd25lcklEfSApIHsKICAgICAgICAgICAgJE9sZE93bmVyU2VsZWN0ZWRJRCA9ICRQYXJhbXtPbGRPd25lcklEfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkT2xkVXNlckluZm9bMF0tPntVc2VySUR9ICkgewogICAgICAgICAgICAkT2xkT3duZXJTZWxlY3RlZElEID0gJE9sZFVzZXJJbmZvWzBdLT57VXNlcklEfSAuICcxJzsKICAgICAgICB9CgogICAgICAgIG15ICRPbGRPd25lckFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ09sZE93bmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJU9sZE93bmVyc1Nob3duLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJE9sZE93bmVyQUNMKSB7CiAgICAgICAgICAgICVPbGRPd25lcnNTaG93biA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbERhdGEoKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgc3RyaW5nCiAgICAgICAgJFBhcmFte093bmVyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJVNob3duVXNlcnMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte05ld093bmVySUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdOZXdPd25lcklEJywKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplIEZvcm1VcGRhdGUgJwogICAgICAgICAgICAgICAgLiAoICRDb25maWctPntPd25lck1hbmRhdG9yeX0gPyAnVmFsaWRhdGVfUmVxdWlyZWQgJyA6ICcnICkKICAgICAgICAgICAgICAgIC4gKCAkUGFyYW17TmV3T3duZXJJbnZhbGlkfSB8fCAnJyApLAogICAgICAgICAgICBTaXplICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIEZpbHRlcnMgICAgICA9PiB7CiAgICAgICAgICAgICAgICBPbGRPd25lcnMgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ByZXZpb3VzIE93bmVyJyksCiAgICAgICAgICAgICAgICAgICAgVmFsdWVzID0+IFwlT2xkT3duZXJzU2hvd24sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPd25lcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgT3duZXJNYW5kYXRvcnkgPT4gJENvbmZpZy0+e093bmVyTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6UmVzcG9uc2libGUnKSAmJiAkQ29uZmlnLT57UmVzcG9uc2libGV9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VyczsKICAgICAgICBteSAlQWxsR3JvdXBzTWVtYmVycyA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6Q2hhbmdlT3duZXJUb0V2ZXJ5b25lJykgKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEICAgICAgICA9ICRRdWV1ZU9iamVjdC0+R2V0UXVldWVHcm91cElEKCBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICAgICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ3Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgICAgICAgICAkU2hvd25Vc2Vyc3skVXNlcklEfSA9ICRBbGxHcm91cHNNZW1iZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnUmVzcG9uc2libGUnLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2hvd25Vc2VycywKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgJVNob3duVXNlcnMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXNwb25zaWJsZQogICAgICAgICRQYXJhbXtSZXNwb25zaWJsZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtOZXdSZXNwb25zaWJsZUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1Jlc3BvbnNpYmxlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jlc3BvbnNpYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBSZXNwb25zaWJsZU1hbmRhdG9yeSA9PiAkQ29uZmlnLT57UmVzcG9uc2libGVNYW5kYXRvcnl9IHx8IDAsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICB9CgogICAgaWYgKCAkQ29uZmlnLT57U3RhdGV9ICkgewoKICAgICAgICBteSAlU3RhdGU7CiAgICAgICAgbXkgJVN0YXRlTGlzdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlTGlzdCgKICAgICAgICAgICAgQWN0aW9uICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFBhcmFte05ld1N0YXRlSUR9ICkgewogICAgICAgICAgICBpZiAoICRDb25maWctPntTdGF0ZURlZmF1bHR9ICkgewogICAgICAgICAgICAgICAgJFN0YXRle1NlbGVjdGVkVmFsdWV9ID0gJENvbmZpZy0+e1N0YXRlRGVmYXVsdH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTdGF0ZXtTZWxlY3RlZElEfSA9ICRQYXJhbXtOZXdTdGF0ZUlEfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgbmV4dCBzdGF0ZXMgc3RyaW5nCiAgICAgICAgJFBhcmFte1N0YXRlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgPT4gXCVTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgID0+ICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgQ2xhc3MgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlICcKICAgICAgICAgICAgICAgIC4gKCAkQ29uZmlnLT57U3RhdGVNYW5kYXRvcnl9ID8gJ1ZhbGlkYXRlX1JlcXVpcmVkICcgOiAnJyApCiAgICAgICAgICAgICAgICAuICggJFBhcmFte05ld1N0YXRlSW52YWxpZH0gfHwgJycgKSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+ICRDb25maWctPntTdGF0ZURlZmF1bHR9ID8gMCA6IDEsCiAgICAgICAgICAgICVTdGF0ZSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdGF0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3RhdGVNYW5kYXRvcnkgPT4gJENvbmZpZy0+e1N0YXRlTWFuZGF0b3J5fSB8fCAwLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnLT57U3RhdGVUeXBlfSApICkgewoKICAgICAgICAgICAgU1RBVEVUWVBFOgogICAgICAgICAgICBmb3IgbXkgJFN0YXRlVHlwZSAoIEB7ICRDb25maWctPntTdGF0ZVR5cGV9IH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgISRTdGF0ZVR5cGU7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRSBpZiAkU3RhdGVUeXBlICF+IC9wZW5kaW5nL2k7CgogICAgICAgICAgICAgICAgIyBnZXQgdXNlZCBjYWxlbmRhcgogICAgICAgICAgICAgICAgbXkgJENhbGVuZGFyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q2FsZW5kYXJHZXQoCiAgICAgICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFF1aWNrRGF0ZUJ1dHRvbnMgPSAkQ29uZmlnLT57UXVpY2tEYXRlQnV0dG9uc30gLy8gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpEZWZhdWx0UXVpY2tEYXRlQnV0dG9ucycpOwoKICAgICAgICAgICAgICAgICRQYXJhbXtEYXRlU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gNSwKICAgICAgICAgICAgICAgICAgICBEaWZmVGltZSAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6UGVuZGluZ0RpZmZUaW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgfHwgMCwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGF0ZUludmFsaWR9IHx8ICcgJywKICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZSAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGF0ZUluRnV0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgICAgICAgICAgICAgPT4gJENhbGVuZGFyLAogICAgICAgICAgICAgICAgICAgIFF1aWNrRGF0ZUJ1dHRvbnMgICAgID0+ICRRdWlja0RhdGVCdXR0b25zLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0ZVBlbmRpbmcnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbGFzdCBTVEFURVRZUEU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcHJpb3JpdHkKICAgIGlmICggJENvbmZpZy0+e1ByaW9yaXR5fSApIHsKCiAgICAgICAgbXkgJVByaW9yaXR5OwogICAgICAgIG15ICVQcmlvcml0eUxpc3QgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQcmlvcml0eUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFjdGlvbiAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICApOwogICAgICAgIGlmICggISRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICAgICAkUHJpb3JpdHlMaXN0eycnfSA9ICctJzsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJFBhcmFte05ld1ByaW9yaXR5SUR9ICkgewogICAgICAgICAgICBpZiAoICRDb25maWctPntQcmlvcml0eURlZmF1bHR9ICkgewogICAgICAgICAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkVmFsdWV9ID0gJENvbmZpZy0+e1ByaW9yaXR5RGVmYXVsdH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQcmlvcml0eXtTZWxlY3RlZElEfSA9ICRQYXJhbXtOZXdQcmlvcml0eUlEfTsKICAgICAgICB9CiAgICAgICAgJFByaW9yaXR5e1NlbGVjdGVkSUR9IHx8PSAkUGFyYW17UHJpb3JpdHlJRH07CiAgICAgICAgJFBhcmFte1ByaW9yaXR5U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgPT4gXCVQcmlvcml0eUxpc3QsCiAgICAgICAgICAgIE5hbWUgID0+ICdOZXdQcmlvcml0eUlEJywKICAgICAgICAgICAgQ2xhc3MgPT4gJ01vZGVybml6ZSBGb3JtVXBkYXRlJywKICAgICAgICAgICAgJVByaW9yaXR5LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByaW9yaXR5JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IFRpY2tldCBBY3Rpb25zCgogICAgIyBXaWRnZXQgQXJ0aWNsZQogICAgbXkgJEFydGljbGVFZGl0aW5nRW5hYmxlZCA9IDA7CiAgICBpZiAoICRDb25maWctPntBcnRpY2xlfSApIHsKCiAgICAgICAgIyBpZiBub3QgZ2l2ZW4gKGUuZy4gaW4gZXJyb3IgY2FzZSksIGZldGNoIGNvbW11bmljYXRpb24gY2hhbm5lbCBpZCBieSBhcnRpY2xlIGlkCiAgICAgICAgaWYgKCAhJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9ICYmICRTZWxmLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgbXkgQEJhc2VBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoQEJhc2VBcnRpY2xlcykgewogICAgICAgICAgICAgICAgJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9ID0gJEJhc2VBcnRpY2xlc1swXS0+e0NvbW11bmljYXRpb25DaGFubmVsSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlQ29tbXVuaWNhdGlvbkNoYW5uZWwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29tbXVuaWNhdGlvbkNoYW5uZWwnKS0+Q2hhbm5lbEdldCgKICAgICAgICAgICAgQ2hhbm5lbElEICAgPT4gJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsSUR9LAogICAgICAgICk7CiAgICAgICAgJEFydGljbGVFZGl0aW5nRW5hYmxlZCA9ICRTZWxmLT5fQ2hlY2tBcnRpY2xlRWRpdGluZ0VuYWJsZWQoCiAgICAgICAgICAgIEFydGljbGUgICAgICAgICAgICAgID0+ICRDb25maWctPntBcnRpY2xlfSwKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJENvbW11bmljYXRpb25DaGFubmVse0NoYW5uZWxOYW1lfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckFydGljbGUoCiAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICApOwogICAgbXkgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgKTsKCiAgICAkUGFyYW17V2lkZ2V0U3RhdHVzfSA9ICdFeHBhbmRlZCc7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnV2lkZ2V0QXJ0aWNsZScsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgKSB7CiAgICAgICAgJFBhcmFte1N1YmplY3RSZXF1aXJlZH0gPSAnVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgICAgICRQYXJhbXtCb2R5UmVxdWlyZWR9ICAgID0gJ1ZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICAjIHNldCBjdXN0b21lciB2aXNpYmlsaXR5IG9mIHRoaXMgbm90ZSB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgYXJ0aWNsZSBmb3Igd2hvbSB0aGlzIGlzIHRoZSByZXBseQogICAgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSAvLz0gJEFydGljbGVEYXRhe0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgIWRlZmluZWQgJFBhcmFte0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ID0gJFNlbGYtPntSZXBseVRvQXJ0aWNsZUNvbnRlbnR9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgfQogICAgZWxzaWYgKCAhZGVmaW5lZCAkUGFyYW17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICkgewogICAgICAgICRQYXJhbXtJc1Zpc2libGVGb3JDdXN0b21lcn0gPSAkQ29uZmlnLT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJEZWZhdWx0fTsKICAgIH0KCiAgICAjIHNob3cgYXR0YWNobWVudHMKICAgIGlmICggJEFydGljbGVFZGl0aW5nRW5hYmxlZCApIHsKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAgICAgJiYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvaW1hZ2UvaSApCiAgICAgICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQogICAgfQoKICAgICMgcmVuZGVyIGFydGljbGUgdHlwZSBkeW5hbWljIGZpZWxkcwogICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkR5bmFtaWNGaWVsZDo6TWFzaycpLT5FZGl0U2VjdGlvblJlbmRlcigKICAgICAgICBDb250ZW50ICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FydGljbGVNYXNrRGVmaW5pdGlvbn0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJFNlbGYtPntEeW5hbWljRmllbGR9LAogICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQYXJhbXtERlBvc3NpYmxlVmFsdWVzfSwKICAgICAgICBFcnJvcnMgICAgICAgICAgICAgICA9PiAkUGFyYW17REZFcnJvcnN9LAogICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+ICRQYXJhbXtWaXNpYmlsaXR5fSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgYWxsIHVzZXIgaWRzIG9mIGFnZW50cywgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhpcyBkaWFsb2cKICAgICMgYmFzZWQgb24gcXVldWUgcmlnaHRzCiAgICBteSAlU2hvd25Vc2VyczsKICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKICAgIG15ICRHSUQgICAgICAgID0gJFF1ZXVlT2JqZWN0LT5HZXRRdWV1ZUdyb3VwSUQoIFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSApOwogICAgbXkgJU1lbWJlckxpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICBHcm91cElEID0+ICRHSUQsCiAgICAgICAgVHlwZSAgICA9PiAnbm90ZScsCiAgICApOwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJU1lbWJlckxpc3QgKSB7CiAgICAgICAgJFNob3duVXNlcnN7JFVzZXJJRH0gPSAkQWxsR3JvdXBzTWVtYmVyc3skVXNlcklEfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBlbWFpbCBwYXJzZXIgb2JqZWN0CiAgICBteSAkRW1haWxQYXJzZXJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6RW1haWxQYXJzZXItPm5ldygKICAgICAgICBNb2RlICA9PiAnU3RhbmRhbG9uZScsCiAgICAgICAgRGVidWcgPT4gMCwKICAgICk7CgogICAgIyBjaGVjayBhbmQgcmV0cmlldmUgaW52b2x2ZWQgYW5kIGluZm9ybWVkIGFnZW50cyBvZiBSZXBseVRvIE5vdGUKICAgIG15IEBSZXBseVRvVXNlcnM7CiAgICBteSAlUmVwbHlUb1VzZXJzSGFzaDsKICAgIG15ICVSZXBseVRvVXNlcklEczsKICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gKSB7CiAgICAgICAgbXkgQFJlcGx5VG9QYXJ0cyA9ICRFbWFpbFBhcnNlck9iamVjdC0+U3BsaXRBZGRyZXNzTGluZSgKICAgICAgICAgICAgTGluZSA9PiAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlQ29udGVudH0tPntUb30gfHwgJycsCiAgICAgICAgKTsKCiAgICAgICAgUkVQTFlUT1BBUlQ6CiAgICAgICAgZm9yIG15ICRTaW5nbGVSZXBseVRvUGFydCAoQFJlcGx5VG9QYXJ0cykgewogICAgICAgICAgICBteSAkUmVwbHlUb0FkZHJlc3MgPSAkRW1haWxQYXJzZXJPYmplY3QtPkdldEVtYWlsQWRkcmVzcygKICAgICAgICAgICAgICAgIEVtYWlsID0+ICRTaW5nbGVSZXBseVRvUGFydCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUkVQTFlUT1BBUlQgaWYgISRSZXBseVRvQWRkcmVzczsKICAgICAgICAgICAgcHVzaCBAUmVwbHlUb1VzZXJzLCAkUmVwbHlUb0FkZHJlc3M7CiAgICAgICAgfQoKICAgICAgICAkUmVwbHlUb1VzZXJzSGFzaHskX30rKyBmb3IgQFJlcGx5VG9Vc2VyczsKCiAgICAgICAgIyBnZXQgdXNlciBpZHMgb2YgYXZhaWxhYmxlIHVzZXJzCiAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgICAgIG15ICVVc2VyRGF0YSA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFVzZXJFbWFpbCA9ICRVc2VyRGF0YXtVc2VyRW1haWx9OwogICAgICAgICAgICBpZiAoICRSZXBseVRvVXNlcnNIYXNoeyRVc2VyRW1haWx9ICkgewogICAgICAgICAgICAgICAgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgb3JpZ2luYWwgbm90ZSBzZW5kZXIgdG8gbGlzdCBvZiB1c2VyIGlkcwogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBAeyAkU2VsZi0+e1JlcGx5VG9TZW5kZXJVc2VySUR9IH0gKSB7CgogICAgICAgICAgICAjIGlmIHNlbmRlciByZXBsaWVzIHRvIGhpbXNlbGYsIGRvIG5vdCBpbmNsdWRlIHNlbmRlciBpbiBsaXN0CiAgICAgICAgICAgIGlmICggJFVzZXJJRCBuZSAkU2VsZi0+e1VzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAkUmVwbHlUb1VzZXJJRHN7JFVzZXJJRH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSB1c2VyIGlkIG9mIGFjdGl2ZSB1c2VyCiAgICAgICAgZGVsZXRlICRSZXBseVRvVXNlcklEc3sgJFNlbGYtPntVc2VySUR9IH07CiAgICB9CgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICggJENvbmZpZy0+e0luZm9ybUFnZW50fSB8fCAkQ29uZmlnLT57SW52b2x2ZWRBZ2VudH0gKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5mb3JtQWRkaXRpb25hbEFnZW50cycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBhbGwgYWdlbnRzIGZvciAiaW52b2x2ZWQgYWdlbnRzIgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICRDb25maWctPntJbnZvbHZlZEFnZW50fSApIHsKCiAgICAgICAgbXkgQFVzZXJJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJbnZvbHZlZEFnZW50c0xpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBJbnZvbHZlZEFnZW50czsKICAgICAgICBteSAkQ291bnRlciA9IDE7CgogICAgICAgIG15IEBJbnZvbHZlZFVzZXJJRCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdJbnZvbHZlZFVzZXJJRCcgKTsKCiAgICAgICAgbXkgJUFnZW50V2l0aFBlcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgKTsKCiAgICAgICAgVVNFUjoKICAgICAgICBmb3IgbXkgJFVzZXIgKCByZXZlcnNlIEBVc2VySURzICkgewoKICAgICAgICAgICAgbmV4dCBVU0VSIGlmICFkZWZpbmVkICRBZ2VudFdpdGhQZXJtaXNzaW9ueyAkVXNlci0+e1VzZXJJRH0gfTsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICIkQ291bnRlcjogJFVzZXItPntVc2VyRnVsbG5hbWV9IjsKICAgICAgICAgICAgaWYgKCAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgLj0gIiAkVXNlci0+e091dE9mT2ZmaWNlTWVzc2FnZX0iOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJbnZvbHZlZEFnZW50cywgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFVzZXItPntVc2VySUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBhZGQgaW52b2x2ZWQgdXNlciBhcyBzZWxlY3RlZCBlbnRyaWVzLCBpZiBhdmFpbGFibGUgaW4gUmVwbHlUb0FkZHJlc3NlcyBsaXN0CiAgICAgICAgICAgIGlmICggJFNlbGYtPntSZXBseVRvQXJ0aWNsZX0gJiYgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEludm9sdmVkVXNlcklELCAkVXNlci0+e1VzZXJJRH07CiAgICAgICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyAkVXNlci0+e1VzZXJJRH0gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEludm9sdmVkQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbnZvbHZlZEFnZW50TWF4U2l6ZScpIHx8IDM7CiAgICAgICAgJFBhcmFte0ludm9sdmVkQWdlbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFxASW52b2x2ZWRBZ2VudHMsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gXEBJbnZvbHZlZFVzZXJJRCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSW52b2x2ZWRVc2VySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEludm9sdmVkQWdlbnRTaXplLAogICAgICAgICk7CgogICAgICAgICMgYmxvY2sgaXMgY2FsbGVkIGJlbG93ICJpbmZvcm0gYWdlbnRzIgogICAgfQoKICAgICMgYWdlbnQgbGlzdAogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICYmICRDb25maWctPntJbmZvcm1BZ2VudH0gKSB7CgogICAgICAgICMgZ2V0IGluZm9ybSB1c2VyIGxpc3QKICAgICAgICBteSAlSW5mb3JtQWdlbnRzOwogICAgICAgIG15IEBJbmZvcm1Vc2VySUQgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnSW5mb3JtVXNlcklEJyApOwogICAgICAgIG15ICVJbmZvcm1BZ2VudExpc3QgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cEdldCgKICAgICAgICAgICAgR3JvdXBJRCA9PiAkR0lELAogICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlSW5mb3JtQWdlbnRMaXN0ICkgewogICAgICAgICAgICAkSW5mb3JtQWdlbnRzeyRVc2VySUR9ID0gJEFsbEdyb3Vwc01lbWJlcnN7JFVzZXJJRH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57UmVwbHlUb0FydGljbGV9ICkgewoKICAgICAgICAgICAgIyBnZXQgZW1haWwgYWRkcmVzcyBvZiBhbGwgdXNlcnMgYW5kIGNvbXBhcmUgdG8gcmVwbHl0by1hZGRyZXNzZXMKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJUluZm9ybUFnZW50cyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQEluZm9ybVVzZXJJRCwgJFVzZXJJRDsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFJlcGx5VG9Vc2VySURzeyRVc2VySUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSW5mb3JtQWdlbnRTaXplID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpJbmZvcm1BZ2VudE1heFNpemUnKQogICAgICAgICAgICB8fCAzOwogICAgICAgICRQYXJhbXtPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+IFwlSW5mb3JtQWdlbnRzLAogICAgICAgICAgICBTZWxlY3RlZElEID0+IFxASW5mb3JtVXNlcklELAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdJbmZvcm1Vc2VySUQnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gJEluZm9ybUFnZW50U2l6ZSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbmZvcm1BZ2VudCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGludm9sdmVkCiAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgJiYgJENvbmZpZy0+e0ludm9sdmVkQWdlbnR9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW52b2x2ZWRBZ2VudCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBsaXN0IG9mIGFnZW50cywgdGhhdCByZWNlaXZlIHRoaXMgbm90ZSAoUmVwbHlUb05vdGUpCiAgICAjIGF0IGxlYXN0IHNlbmRlciBvZiBvcmlnaW5hbCBub3RlIGFuZCBhbGwgcmVjaXBpZW50cyBvZiB0aGUgb3JpZ2luYWwgbm90ZQogICAgIyB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVkIHdpdGggaW52b2x2ZWQvaW5mb3JtIGFnZW50cwogICAgaWYgKCAkU2VsZi0+e1JlcGx5VG9BcnRpY2xlfSApIHsKCiAgICAgICAgbXkgJFVzZXJzSGFzaFNpemUgPSBrZXlzICVSZXBseVRvVXNlcklEczsKICAgICAgICBteSAkQ291bnRlciAgICAgICA9IDA7CiAgICAgICAgJFBhcmFte1VzZXJMaXN0V2l0aG91dFNlbGVjdGlvbn0gPSBqb2luKCAnLCcsIGtleXMgJVJlcGx5VG9Vc2VySURzICk7CgogICAgICAgIGlmICggJFVzZXJzSGFzaFNpemUgPiAwICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVJlcGx5VG9Vc2VySURzICkgewogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IFwlVXNlckRhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGEgc2VwYXJhdG9yIChJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uU2luZ2xlVXNlclNlcGFyYXRvciksCiAgICAgICAgICAgICAgICAjIGlmIG5vdCBsYXN0IGVudHJ5CiAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyIDwgJFVzZXJzSGFzaFNpemUgKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBcJVVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdWJqZWN0JywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsTWFuZGF0b3J5JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3ViamVjdExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dExhYmVsJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJENvbmZpZy0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSXNWaXNpYmxlRm9yQ3VzdG9tZXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgdGltZSBhY2NvdW50aW5nIGJveAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFjY291bnRUaW1lJykgJiYgKCAkQ29uZmlnLT57VGltZVVuaXRzfSB8fCAkQXJ0aWNsZUVkaXRpbmdFbmFibGVkICkgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaW1lVW5pdHNXcmFwcGVyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgIGlmICggJEFydGljbGVFZGl0aW5nRW5hYmxlZCAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok5lZWRBY2NvdW50ZWRUaW1lJykgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRzTGFiZWxNYW5kYXRvcnknLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBhcmFte1RpbWVVbml0c1JlcXVpcmVkfSA9ICdWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0c0xhYmVsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQYXJhbXtUaW1lVW5pdHNSZXF1aXJlZH0gPSAoICRBcnRpY2xlRWRpdGluZ0VuYWJsZWQgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpOZWVkQWNjb3VudGVkVGltZScpICkKICAgICAgICAgICAgICAgID8gJ1ZhbGlkYXRlX0RlcGVuZGluZ1JlcXVpcmVkQU5EIFZhbGlkYXRlX0RlcGVuZGluZ19DcmVhdGVBcnRpY2xlJwogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpbWVVbml0cycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBFbmQgV2lkZ2V0IEFydGljbGUKCiAgICAjIGV4cGxhbmF0b3J5IG1lc3NhZ2UgYWJvdXQgYXN0ZXJpc2sKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBc3Rlcmlza0V4cGxhbmF0aW9uJykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FzdGVyaXNrRXhwbGFuYXRpb24nLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgKTsKfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCnN1YiBfQXJ0aWNsZURlbGV0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJFBhcmFte0NvbmZpZ317UGVybWlzc2lvbn0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICApOwoKICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IHRpY2tldAogICAgaWYgKCAhJEFjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRQYXJhbXtDb25maWd9e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICBteSAlUG9zc2libGVBY3Rpb25zID0gKCAxID0+ICRTZWxmLT57QWN0aW9ufSApOwoKICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0FjdGlvbicsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJUFjbEFjdGlvbiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbEFjdGlvbkRhdGEoKTsKCiAgICAjIGNoZWNrIGlmIEFDTCByZXN0cmljdGlvbnMgZXhpc3QKICAgIGlmICgkQUNMKSB7CgogICAgICAgIG15ICVBY2xBY3Rpb25Mb29rdXAgPSByZXZlcnNlICVBY2xBY3Rpb247CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4gaWYgQUNMIHByb2hpYml0cyB0aGlzIGFjdGlvbgogICAgICAgIGlmICggISRBY2xBY3Rpb25Mb29rdXB7ICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICBteSAkU3VjY2VzczsKICAgIGlmICggJFBhcmFte1Jlc3RvcmV9ICkgewoKICAgICAgICAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5BcnRpY2xlUmVzdG9yZSgKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdFcnJvciB0cnlpbmcgdG8gcmVzdG9yZSBhcnRpY2xlIGlkOiAnIC4gJFNlbGYtPntBcnRpY2xlSUR9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGVsc2UgewoKICAgICAgICAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5BcnRpY2xlRGVsZXRlKAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0Vycm9yIHRyeWluZyB0byBkZWxldGUgYXJ0aWNsZSBpZDogJyAuICRTZWxmLT57QXJ0aWNsZUlEfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+X1RpY2tldENhY2hlQ2xlYXIoIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9ICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcwogICAgICAgIH0sCiAgICApOwoKICAgICMgc2VuZCBKU09OIHJlc3BvbnNlCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CnN1YiBfQ2hlY2tBcnRpY2xlRWRpdGluZ0VuYWJsZWQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH07CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtBcnRpY2xlfTsKCiAgICBpZiAoJFBhcmFte0NvbW11bmljYXRpb25DaGFubmVsfSBlcSAnUGhvbmUnIHx8ICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH0gZXEgJ0ludGVybmFsJykgewogICAgICAgIGlmICggJFBhcmFte0FydGljbGV9IGVxICdCb3RoJyApIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0FydGljbGV9IGVxICRQYXJhbXtDb21tdW5pY2F0aW9uQ2hhbm5lbH0gKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0QXJ0aWNsZURlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCiMgb3B0aW9uYWwgQWNsQWN0aW9uTG9va3VwCnN1YiBDaGVja0FjY2VzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIENoYW5uZWxOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCcpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgcmV0dXJuIGlmICRQYXJhbXtDaGFubmVsTmFtZX0gbmUgJ0ludGVybmFsJzsKIyAgICAgcmV0dXJuIGlmICRQYXJhbXtBcnRpY2xlfS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfTsKICAgIHJldHVybiBpZiAoICRQYXJhbXtBcnRpY2xlfXtJc1Zpc2libGVGb3JDdXN0b21lcn0gJiYgISRDb25maWctPntBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlfSApOwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e1NlbmRlclR5cGV9IGVxICdjdXN0b21lcicgJiYgISRDb25maWctPntFZGl0Q3VzdG9tZXJBcnRpY2xlc30gKTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6Ok1JTUVCYXNlOjpBcnRpY2xlU3RvcmFnZScpID1+IG0vQXJ0aWNsZVN0b3JhZ2VTMy87CgogICAgIyBOT1RFIGNoZWNraW5nIGZvciBBZ2VudFRpY2tldEFydGljbGVFZGl0IGJlY2F1c2UKICAgICMgICBBZ2VudFRpY2tldEFydGljbGVEZWxldGUgaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVFZGl0CiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57RGVsZXRlZFZlcnNpb25JRH07CgogICAgbXkgJU1lbnVJdGVtID0gKAogICAgICAgIEl0ZW1UeXBlICAgID0+ICdMaW5rJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiBUcmFuc2xhdGFibGUoJ0RlbGV0ZSB0aGlzIGFydGljbGUnKSwKICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlbGV0ZScpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBcnRpY2xlRGVsZXRlJywKICAgICAgICBMaW5rICAgICAgICA9PgogICAgICAgICAgICAiQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSIsCiAgICApOwoKICAgIHJldHVybiAoIFwlTWVudUl0ZW0gKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlRWRpdC5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICgkUGFyYW17QXJ0aWNsZX17SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9ICYmICEkQ29uZmlnLT57QXJ0aWNsZUN1c3RvbWVyVmlzaWJsZX0pOwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e1NlbmRlclR5cGV9IGVxICdjdXN0b21lcicgJiYgISRDb25maWctPntFZGl0Q3VzdG9tZXJBcnRpY2xlc30gKTsKIyBFTyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkFydGljbGU6OkJhY2tlbmQ6Ok1JTUVCYXNlOjpBcnRpY2xlU3RvcmFnZScpID1+IG0vQXJ0aWNsZVN0b3JhZ2VTMy87CgogICAgIyBjaGVjayBpZiBtb2R1bGUgaXMgcmVnaXN0ZXJlZAogICAgcmV0dXJuIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50VGlja2V0QXJ0aWNsZUVkaXR9OwoKICAgICMgY2hlY2sgQWNsCiAgICByZXR1cm4gaWYgISRQYXJhbXtBY2xBY3Rpb25Mb29rdXB9LT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCcpOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIGlmICggJENvbmZpZy0+e1Blcm1pc3Npb259ICkgewogICAgICAgIG15ICRPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGlmICEkT2s7CiAgICB9CiAgICBpZiAoICRDb25maWctPntSZXF1aXJlZExvY2t9ICkgewogICAgICAgIG15ICRMb2NrZWQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrR2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfQogICAgICAgICk7CiAgICAgICAgaWYgKCRMb2NrZWQpIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFRpY2tldE9iamVjdC0+T3duZXJDaGVjaygKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgT3duZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiBpZiAhJEFjY2Vzc09rOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIEdldENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXQgQXJ0aWNsZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICRQYXJhbXtBcnRpY2xlfS0+e0RlbGV0ZWRWZXJzaW9uSUR9OwoKICAgIG15ICVNZW51SXRlbSA9ICgKICAgICAgICBJdGVtVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gVHJhbnNsYXRhYmxlKCdFZGl0IHRoaXMgYXJ0aWNsZScpLAogICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRWRpdCcpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBc1BvcHVwIFBvcHVwVHlwZV9UaWNrZXRBY3Rpb24nLAogICAgICAgIExpbmsgICAgICAgID0+CiAgICAgICAgICAgICJBY3Rpb249QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDtUaWNrZXRJRD0kUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTtBcnRpY2xlSUQ9JFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSIsCiAgICApOwoKICAgIHJldHVybiAoIFwlTWVudUl0ZW0gKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleRestore.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZS5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e0lzVmlzaWJsZUZvckN1c3RvbWVyfSAmJiAhJENvbmZpZy0+e0FydGljbGVDdXN0b21lclZpc2libGV9ICk7CiAgICByZXR1cm4gaWYgKCAkUGFyYW17QXJ0aWNsZX17U2VuZGVyVHlwZX0gZXEgJ2N1c3RvbWVyJyAmJiAhJENvbmZpZy0+e0VkaXRDdXN0b21lckFydGljbGVzfSApOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIHJldHVybiBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6TUlNRUJhc2U6OkFydGljbGVTdG9yYWdlJykgPX4gbS9BcnRpY2xlU3RvcmFnZVMzLzsKCiAgICAjIE5PVEUgY2hlY2tpbmcgZm9yIEFnZW50VGlja2V0QXJ0aWNsZUVkaXQgYmVjYXVzZQogICAgIyAgIEFnZW50VGlja2V0QXJ0aWNsZVJlc3RvcmUgaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlCiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRQYXJhbXtBcnRpY2xlfS0+e0RlbGV0ZWRWZXJzaW9uSUR9OwoKICAgIG15ICVNZW51SXRlbSA9ICgKICAgICAgICBJdGVtVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gVHJhbnNsYXRhYmxlKCdSZXN0b3JlIHRoaXMgYXJ0aWNsZScpLAogICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUmVzdG9yZScpLAogICAgICAgIENsYXNzICAgICAgID0+ICdBcnRpY2xlUmVzdG9yZScsCiAgICAgICAgTGluayAgICAgICAgPT4KICAgICAgICAgICAgIkFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07QXJ0aWNsZUlEPSRQYXJhbXtBcnRpY2xlfS0+e0FydGljbGVJRH0iLAogICAgKTsKCiAgICByZXR1cm4gKCBcJU1lbnVJdGVtICk7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/ArticleAction/AgentTicketArticleVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML0FydGljbGVBY3Rpb24vQWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbi5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZUZlYXR1cmVzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKIyBvcHRpb25hbCBBY2xBY3Rpb25Mb29rdXAKc3ViIENoZWNrQWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0IEFydGljbGUgQ2hhbm5lbE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwojIFJvdGhlciBPU1MgLyBFeHRlbmRlZEFydGljbGVFZGl0CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICByZXR1cm4gaWYgJFBhcmFte0NoYW5uZWxOYW1lfSBuZSAnSW50ZXJuYWwnOwojICAgICByZXR1cm4gaWYgJFBhcmFte0FydGljbGV9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9OwogICAgcmV0dXJuIGlmICggJFBhcmFte0FydGljbGV9e0lzVmlzaWJsZUZvckN1c3RvbWVyfSAmJiAhJENvbmZpZy0+e0FydGljbGVDdXN0b21lclZpc2libGV9ICk7CiAgICByZXR1cm4gaWYgKCAkUGFyYW17QXJ0aWNsZX17U2VuZGVyVHlwZX0gZXEgJ2N1c3RvbWVyJyAmJiAhJENvbmZpZy0+e0VkaXRDdXN0b21lckFydGljbGVzfSApOwojIEVPIEV4dGVuZGVkQXJ0aWNsZUVkaXQKICAgIHJldHVybiBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6TUlNRUJhc2U6OkFydGljbGVTdG9yYWdlJykgPX4gbS9BcnRpY2xlU3RvcmFnZVMzLzsKCiAgICAjIE5PVEUgY2hlY2tpbmcgZm9yIEFnZW50VGlja2V0QXJ0aWNsZUVkaXQgYmVjYXVzZQogICAgIyAgIEFnZW50VGlja2V0QXJ0aWNsZVZlcnNpb24gaGFzIG5vIG1vZHVsZSBjb25maWcgb24gaXRzIG93bgogICAgIyAgIGFuZCBwZXJtaXNzaW9uIGlzIHZpZXdlZCBhcyB0cmFuc2ZlcmFibGUgZnJvbSBBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uCiAgICAjIGNoZWNrIGlmIG1vZHVsZSBpcyByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRUaWNrZXRBcnRpY2xlRWRpdH07CgogICAgIyBjaGVjayBBY2wKICAgIHJldHVybiBpZiAhJFBhcmFte0FjbEFjdGlvbkxvb2t1cH0tPntBZ2VudFRpY2tldEFydGljbGVFZGl0fTsKCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKIyBSb3RoZXIgT1NTIC8gRXh0ZW5kZWRBcnRpY2xlRWRpdAojICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0Jyk7CiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAogICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgbXkgJE9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISRPazsKICAgIH0KICAgIGlmICggJENvbmZpZy0+e1JlcXVpcmVkTG9ja30gKSB7CiAgICAgICAgbXkgJExvY2tlZCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldExvY2tHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9CiAgICAgICAgKTsKICAgICAgICBpZiAoJExvY2tlZCkgewogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICEkQWNjZXNzT2s7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCBBcnRpY2xlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgQE1lbnVJdGVtczsKICAgIG15ICVBcnRpY2xlVmVyc2lvbnM7CiAgICBteSAkQ291bnQgPSAxOwoKICAgIG15ICVBcnRpY2xlVmVyc2lvbkhpc3RvcnkgPSAlewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5WZXJzaW9uSGlzdG9yeUdldCgKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlfS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICApCiAgICB9OwoKICAgIGZvciBteSAkRW50cnkgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlQXJ0aWNsZVZlcnNpb25IaXN0b3J5ICkgewogICAgICAgIG15ICVWZXJzaW9uRGF0YSA9ICV7ICRBcnRpY2xlVmVyc2lvbkhpc3Rvcnl7JEVudHJ5fSB9OwoKICAgICAgICBteSAlVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBkYXRldGltZSBvYmplY3QKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkVmVyc2lvbkRhdGF7Q3JlYXRlVGltZX0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICNUcmFuc2Zvcm0gZGF0ZSB0byBjdXJyZW50IHVzZXIgdGltZXpvbmUKICAgICAgICBpZiAoICRVc2Vye1VzZXJUaW1lWm9uZX0gKSB7CiAgICAgICAgICAgICREYXRlVGltZU9iamVjdC0+VG9UaW1lWm9uZSgKICAgICAgICAgICAgICAgIFRpbWVab25lID0+ICRVc2Vye1VzZXJUaW1lWm9uZX0KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRBcnRpY2xlVmVyc2lvbnN7JEVudHJ5fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVmVyc2lvbicpIC4gIiAkQ291bnQgKCIgLiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCkgLiAiICRWZXJzaW9uRGF0YXtGdWxsTmFtZX0pIjsKICAgICAgICAkQ291bnQrKzsKICAgIH0KCiAgICBpZiAoJUFydGljbGVWZXJzaW9ucykgewogICAgICAgIG15ICRBcnRpY2xlVmVyc2lvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdBcnRpY2xlVmVyc2lvbicsCiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAnQXJ0aWNsZVZlcnNpb24nLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJUFydGljbGVWZXJzaW9ucywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnTnVtZXJpY0tleScKICAgICAgICApOwoKICAgICAgICBwdXNoIEBNZW51SXRlbXMsIHsKICAgICAgICAgICAgSXRlbVR5cGUgICAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgICAgIERyb3Bkb3duVHlwZSAgICAgICA9PiAnVmVyc2lvbicsCiAgICAgICAgICAgIEFydGljbGVWZXJzaW9uU3RyZyA9PiAkQXJ0aWNsZVZlcnNpb25TdHJnLAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgPT4gJ1ZlcnNpb24nIC4gJFBhcmFte0FydGljbGV9LT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgID0+ICdBc1BvcHVwIFBvcHVwVHlwZV9UaWNrZXRBY3Rpb24nLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0FnZW50VGlja2V0QXJ0aWNsZUVkaXQnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIEBNZW51SXRlbXM7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentTicketArticleEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0MGY4NmY1NTc0YzE4YWE4NDVmY2U2MDZkNDIxNzI0MjMxMTU3NWRmIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudFRpY2tldEFydGljbGVFZGl0LnR0CiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMgUm90aGVyIE9TUyAvIEV4dGVuZGVkQXJ0aWNsZUVkaXQKIyBJTVBPUlRBTlQKIyAgIHBhY2thZ2UgbWFya2VycyBhbmQgb3JpZ2luYWwgY29kZSBhcmUgbWlzc2luZyBiZWNhdXNlIFRlbXBsYXRlOjpUb29sa2l0IGV2YWx1YXRlcyBkaXNhYmxlZCBjb2RlCiMgICBvcmlnaW5hbCBjb2RlIHdhcyBpbmNsdWRpbmcgdGhlIEFnZW50VGlja2V0QWN0aW9uQ29tbW9uIHRlbXBsYXRlCiMgRU8gRXh0ZW5kZWRBcnRpY2xlRWRpdAoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllcyIpICVdCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iY29tcG9zZSIgaWQ9IkNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN0b3JlIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBcnRpY2xlSUQiIHZhbHVlPSJbJSBEYXRhLkFydGljbGVJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlcGx5VG9BcnRpY2xlIiB2YWx1ZT0iWyUgRGF0YS5SZXBseVRvQXJ0aWNsZSB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkV4cGFuZCIgaWQ9IkV4cGFuZCIgdmFsdWU9IiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRUaXRsZSIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0VGl0bGUgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRJRCIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0SUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRBY3Rpb24iIGlkPSJGb3JtRHJhZnRBY3Rpb24iIC8+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8dWwgY2xhc3M9IkhlYWRlclBvcHVwIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyUG9wdXBsZWZ0Ij4KICAgICAgICAgICAgICAgICAgICA8aDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFnZW50VGlja2V0QXJ0aWNsZUVkaXQiKSAlXQpbJSBUcmFuc2xhdGUoIkVkaXQgQXJ0aWNsZSBcIiVzXCIgb2YgJXMlcyVzIiwgRGF0YS5BcnRpY2xlVGl0bGUsIENvbmZpZygnVGlja2V0OjpIb29rJyksIENvbmZpZygnVGlja2V0OjpIb29rRGl2aWRlcicpLCBEYXRhLlRpY2tldE51bWJlcikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZ2VudFRpY2tldEFydGljbGVFZGl0IikgJV0KICAgICAgICAgICAgICAgICAmbWRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRCYWNrIikgJV0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyUG9wdXByaWdodCI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRCYWNrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXJQb3B1cHJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSB0aWNrZXQgaGFzIGJlZW4gbG9ja2VkIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJVbmRvQ2xvc2VQb3B1cCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0TG9jaztTdWJhY3Rpb249VW5sb2NrO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgJV1bJSBJRiBEYXRhLlByZXZpb3VzT3duZXIgJV07UHJldmlvdXNPd25lcj1bJSBEYXRhLlByZXZpb3VzT3duZXIgJV1bJSBFTkQgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJVbmRvICYgY2xvc2UiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllc0xvY2siKSAlXQogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3Rlcmlza0V4cGxhbmF0aW9uIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iIGlkPSJBc3Rlcmlza0V4cGxhbmF0aW9uSGVhZGVyIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXN0ZXJpc2tFeHBsYW5hdGlvbiIpICVdCiAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9EcmFmdE5vdGlmaWNhdGlvbnMudHQiICVdClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldFRpY2tldEFjdGlvbnMiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRXhwYW5kZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgU2V0dGluZ3MiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlRpdGxlSW52YWxpZCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaXRsZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpdGxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUeXBlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVHlwZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVHlwZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWV1ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUXVldWVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1F1ZXVlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJRdWV1ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdRdWV1ZUlEIj5bJSBUcmFuc2xhdGUoIlF1ZXVlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlF1ZXVlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUXVldWVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdRdWV1ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdRdWV1ZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlF1ZXVlIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVldWUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZU1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU2VydmljZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZXJ2aWNlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU2VydmljZSBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZU1hbmRhdG9yeSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlNlcnZpY2VJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU2VydmljZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU0xBTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTTEFJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU0xBTWFuZGF0b3J5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU0xBIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTTEEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU0xBSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlNMQUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU0xBSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU0xBIGludmFsaWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBTWFuZGF0b3J5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk93bmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Pd25lck1hbmRhdG9yeSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3T3duZXJJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdPd25lcklEIj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuT3duZXJNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdPd25lcklERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgb3duZXIhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJPd25lciBpbnZhbGlkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk93bmVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk93bmVyTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3T3duZXJJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBPd25lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk93bmVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3T3duZXJJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IG93bmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld093bmVySURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiT3duZXIgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPd25lck1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zaWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUmVzcG9uc2libGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1Jlc3BvbnNpYmxlSUQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXcgUmVzcG9uc2libGUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdSZXNwb25zaWJsZUlEIj5bJSBUcmFuc2xhdGUoIk5ldyBSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXNwb25zaWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUmVzcG9uc2libGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdSZXNwb25zaWJsZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZXQgYSBuZXcgcmVzcG9uc2libGUhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUmVzcG9uc2libGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNpYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNpYmxlTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIk5ldyBSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3BvbnNpYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3UmVzcG9uc2libGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugc2V0IGEgbmV3IHJlc3BvbnNpYmxlISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1Jlc3BvbnNpYmxlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiUmVzcG9uc2libGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSZXNwb25zaWJsZU1hbmRhdG9yeSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU3RhdGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5ld1N0YXRlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJOZXh0IHN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld1N0YXRlSUQiPlslIFRyYW5zbGF0ZSgiTmV4dCBzdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU3RhdGVNYW5kYXRvcnkgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdTdGF0ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld1N0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiU3RhdGUgaW52YWxpZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRlUGVuZGluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlBlbmRpbmcgZGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkRhdGVTdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkRheVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJEYXRlIGludmFsaWQhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSG91clNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJEYXRlIGludmFsaWQhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiRm9yIGFsbCBwZW5kaW5nKiBzdGF0ZXMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdGVQZW5kaW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlByaW9yaXR5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UHJpb3JpdHlJRCI+WyUgVHJhbnNsYXRlKCJQcmlvcml0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcmlvcml0eVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlByaW9yaXR5IikgJV0KClslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJXaWRnZXRUaWNrZXRBY3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldEFydGljbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgWyUgRGF0YS5XaWRnZXRTdGF0dXMgfCBodG1sICVdIiBpZD0iV2lkZ2V0QXJ0aWNsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQXJ0aWNsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkNyZWF0ZUFydGljbGUiIG5hbWU9IkNyZWF0ZUFydGljbGUiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvcm1BZ2VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluZm9ybVVzZXJJRCI+WyUgVHJhbnNsYXRlKCJJbmZvcm0gYWdlbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5PcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvcm1BZ2VudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkludm9sdmVkQWdlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZvbHZlZFVzZXJJRCI+WyUgVHJhbnNsYXRlKCJJbmZvcm0gaW52b2x2ZWQgYWdlbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbnZvbHZlZEFnZW50U3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW52b2x2ZWRBZ2VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBzZWxlY3QgYWRkaXRpb25hbCBhZ2VudHMgd2hpY2ggc2hvdWxkIHJlY2VpdmUgYSBub3RpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBuZXcgYXJ0aWNsZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFkZGl0aW9uYWxBZ2VudHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvcm1BZ2VudHNXaXRob3V0U2VsZWN0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGV4dCB3aWxsIGFsc28gYmUgcmVjZWl2ZWQgYnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVXNlckxpc3RXaXRob3V0U2VsZWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5Vc2VyTGlzdFdpdGhvdXRTZWxlY3Rpb24gIHwgaHRtbCAlXSIgLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvblNpbmdsZVVzZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVXNlckVtYWlsIHwgaHRtbCAlXSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdPC9zcGFuPlslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yIikgJV0sWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyU2VwYXJhdG9yIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9ybUFnZW50c1dpdGhvdXRTZWxlY3Rpb25TaW5nbGVVc2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb3JtQWdlbnRzV2l0aG91dFNlbGVjdGlvbiIpICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3ViamVjdExhYmVsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3ViamVjdCI+WyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJqZWN0TGFiZWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJqZWN0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJTdWJqZWN0Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViamVjdExhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJTdWJqZWN0IiBuYW1lPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlIFslIERhdGEuU3ViamVjdEludmFsaWQgJV0gWyUgRGF0YS5TdWJqZWN0UmVxdWlyZWQgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1YmplY3RFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdWJqZWN0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViamVjdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldE9wdGlvbnMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPcHRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KCjwhLS0gT3V0cHV0RmlsdGVySG9va19UaWNrZXRPcHRpb25zQmVnaW4gLS0+CjwhLS0gT3V0cHV0RmlsdGVySG9va19UaWNrZXRPcHRpb25zRW5kIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE9wdGlvbnMiKSAlXQoKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSaWNoVGV4dExhYmVsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmljaFRleHQiPlslIFRyYW5zbGF0ZSgiVGV4dCIpIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHRMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJSaWNoVGV4dCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0TGFiZWxNYW5kYXRvcnkiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmljaFRleHRGaWVsZCIgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJSaWNoVGV4dCIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlIFslIERhdGEuQm9keUludmFsaWQgJV0gWyUgRGF0YS5Cb2R5UmVxdWlyZWQgJV0iIG5hbWU9IkJvZHkiIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkJvZHkgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlJpY2hUZXh0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmljaFRleHRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSaWNoVGV4dCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSXNWaXNpYmxlRm9yQ3VzdG9tZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJc1Zpc2libGVGb3JDdXN0b21lciI+WyUgVHJhbnNsYXRlKCJJcyB2aXNpYmxlIGZvciBjdXN0b21lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IklzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iSXNWaXNpYmxlRm9yQ3VzdG9tZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Jc1Zpc2libGVGb3JDdXN0b21lciAlXWNoZWNrZWRbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJc1Zpc2libGVGb3JDdXN0b21lciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaW1lVW5pdHNXcmFwcGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGltZVVuaXRzTGFiZWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0c0xhYmVsTWFuZGF0b3J5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGltZVVuaXRzIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHNMYWJlbE1hbmRhdG9yeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0cyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUaW1lVW5pdHMiIGlkPSJUaW1lVW5pdHMiIHZhbHVlPSJbJSBEYXRhLlRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9UaW1lVW5pdHMgWyUgRGF0YS5UaW1lVW5pdHNSZXF1aXJlZCB8IGh0bWwgJV0gWyUgRGF0YS5UaW1lVW5pdHNJbnZhbGlkIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGltZVVuaXRzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIkludmFsaWQgdGltZSEiKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUaW1lVW5pdHNTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lVW5pdHMiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVGltZVVuaXRzV3JhcHBlciIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiV2lkZ2V0QXJ0aWNsZSIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9InN1Ym1pdFJpY2hUZXh0IiBhY2Nlc3NrZXk9ImciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSAoZykiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9EcmFmdEJ1dHRvbnMudHQiICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvcGVydGllcyIpICVdCg==</File>
        <File Location="Kernel/Config/Files/XML/ExtendedArticleEdit.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDaGFuZ2VzIj4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNBcnRpY2xlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgZm9yIHdoaWNoIGFydGljbGUgdHlwZXMgdGhlIGVkaXRpbmcgb2Ygc3ViamVjdCwgYm9keSBhbmQgYXR0YWNobWVudCBpcyBlbmFibGVkLiAiQm90aCIgaW5jbHVkZXMgIlBob25lIiBhbmQgIkludGVybmFsIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iSW50ZXJuYWwiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJQaG9uZSIgVHJhbnNsYXRhYmxlPSIxIj5QaG9uZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+SW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkJvdGgiIFRyYW5zbGF0YWJsZT0iMSI+Qm90aDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTm9uZSIgVHJhbnNsYXRhYmxlPSIxIj5Ob25lPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNBcnRpY2xlQ3VzdG9tZXJWaXNpYmxlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGVkaXRpbmcgb2YgYXJ0aWNsZXMgd2hpY2ggYXJlIHZpc2libGUgZm9yIHRoZSBjdXN0b21lciBpbiBnZW5lcmFsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRBcnRpY2xlRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQjIyNJc1Zpc2libGVGb3JDdXN0b21lciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZGRzIGN1c3RvbWVyIHZpc2liaWxpdHkgb2YgdGhlIGFydGljbGUgdG8gdGhlIGFydGljbGUgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFydGljbGVFZGl0IyMjRWRpdEN1c3RvbWVyQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiBhcnRpY2xlcyB3cml0dGVuIGJ5IHRoZSBjdXN0b21lciBhcmUgZWRpdGFibGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldEFydGljbGVFZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdCMjI1RpbWVVbml0cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSB0aW1lIHVuaXRzIGluIHRoZSB0aWNrZXQgbm90ZSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0QXJ0aWNsZUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIyMjRW1haWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhdmFpbGFibGUgYXJ0aWNsZSBhY3Rpb25zIGZvciBlLW1haWwgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlRpY2tldFpvb206OkFydGljbGVBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldENvbXBvc2UiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Q29tcG9zZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVSZXN0b3JlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEFydGljbGVWZXJzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlRWRpdCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj41MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRGb3J3YXJkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Qm91bmNlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEJvdW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldFBob25lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UHJpbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRNZXNzYWdlTG9nIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldE1lc3NhZ2VMb2c8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTUwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQbGFpbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRQbGFpbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXNJbXBvcnRhbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBc0ltcG9ydGFudDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj43MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE5vdGUiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Tm90ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsUmVzZW5kIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEVtYWlsUmVzZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjkwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hcmtBcnRpY2xlU2VlblVuc2VlbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6TWFya0FydGljbGVTZWVuVW5zZWVuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFydGljbGU6OkFjdGlvbnMjIyNQaG9uZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGF2YWlsYWJsZSBhcnRpY2xlIGFjdGlvbnMgZm9yIFBob25lIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRab29tOjpBcnRpY2xlQWN0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRDb21wb3NlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldENvbXBvc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlUmVzdG9yZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0QXJ0aWNsZURlbGV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRBcnRpY2xlVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0QXJ0aWNsZUVkaXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0QXJ0aWNsZUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRGb3J3YXJkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Qm91bmNlIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldEJvdW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpBcnRpY2xlQWN0aW9uOjpBZ2VudFRpY2tldFBob25lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UHJpbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQbGFpbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6QWdlbnRUaWNrZXRQbGFpbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj42MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXNJbXBvcnRhbnQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBc0ltcG9ydGFudDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj43MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE5vdGUiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246OkFnZW50VGlja2V0Tm90ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXJrQXJ0aWNsZVNlZW5VbnNlZW4iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok1hcmtBcnRpY2xlU2VlblVuc2VlbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Language/de_ExtendedArticleEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0V4dGVuZGVkQXJ0aWNsZUVkaXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFRpY2tldEFydGljbGVFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFydGljbGUnfSA9ICdBcnRpa2VsIGJlYXJiZWl0ZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QXJ0aWNsZUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBub3QgZWRpdGFibGUhJ30gPSAnRGllc2VyIEFydGlrZWwga2FubiBuaWNodCBiZWFyYmVpdGV0IHdlcmRlbiEnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRzIGN1c3RvbWVyIHZpc2liaWxpdHkgb2YgdGhlIGFydGljbGUgdG8gdGhlIGFydGljbGUgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0bDvGd0IGRpZSBLdW5kZW5zaWNodGJhcmtlaXQgaW0gQXJ0aWtlbC1iZWFyYmVpdGVuLUJpbGRzY2hpcm0gdm9uIFRpY2tldHMgaW0gQWdlbnRlbmJlcmVpY2ggaGluenUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JvdGgnfSA9ICdCZWlkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBmb3Igd2hpY2ggYXJ0aWNsZSB0eXBlcyB0aGUgZWRpdGluZyBvZiBzdWJqZWN0LCBib2R5IGFuZCBhdHRhY2htZW50IGlzIGVuYWJsZWQuICJCb3RoIiBpbmNsdWRlcyAiUGhvbmUiIGFuZCAiSW50ZXJuYWwiLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBmw7xyIHdlbGNoZSBBcnRpa2VsLVR5cGVuIGRlciBCZXRyZWZmLCBkZXIgVGV4dCB1bmQgZGllIEFuaMOkbmdlIGdlw6RuZGVydCB3ZXJkZW4ga8O2bm5lbi4gIkJlaWRlcyIgYmVpbmhhbHRldCAiVGVsZWZvbiIgdW5kICJJbnRlcm4iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIGFydGljbGVzIHdyaXR0ZW4gYnkgdGhlIGN1c3RvbWVyIGFyZSBlZGl0YWJsZS4nfSA9ICdEZWZpbmllcnQsIG9iIEFydGlrZWwsIGRpZSBlaW4gS3VuZGVuYmVudXR6ZXIgZ2VzY2hyaWViZW4gaGF0LCBiZWFyYmVpdGV0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlZGl0aW5nIG9mIGFydGljbGVzIHdoaWNoIGFyZSB2aXNpYmxlIGZvciB0aGUgY3VzdG9tZXIgaW4gZ2VuZXJhbC4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBvZGVyIGRlYWt0aXZpZXJ0IGRhcyBCZWFyYmVpdGVuIHZvbiBBcnRpa2VsbiwgZGllIGbDvHIgZGVuIEt1bmRlbiBzaWNodGJhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCd9ID0gJ0ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSB0aW1lIHVuaXRzIGluIHRoZSB0aWNrZXQgbm90ZSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGRpZSBaZWl0YnVjaHVuZyBpbSBBcnRpa2VsLcOkbmRlcm4tQmlsZHNjaGlybSB2b24gVGlja2V0cyBpbSBBZ2VudGVuYmVyZWljaC4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="doc/en/ExtendedArticleEdit.pdf" Permission="644" Encode="Base64">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fQHYF4B9AfYFYF8A9gXYlwSAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQH2JQFgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgX4B9SQDYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYFYF8A9gXYF4B9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF2BfEgD2BWBfAPYF2BeAfQHYF2BfAPYFYF8A9gXYF4B9AdgXYF8A9gVgXwD2BdgXgH0B2BdgXwD2BWBfAPYF2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B2BdgXwD2BWBfgH0B2BeAfQHYF2BfAPYFYF+AfQHYF4B9AdgXYF8A9gVgX4B9AdgXgH0B9gVgXwD2BWBfgH0B2BeAfQH2BWBfAPYFYF+AfQHYF4B9AfYFYF8A9gVgX4B9AdgXgH0B9gVgXwD2BdiXBIB9AdgXgH0B9gVgXwD2BdgXgH0B2BeAfQH2BWBfAPYF2BeAfQHYF4B9AfYF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WvT1av9Z+OW0O5fuKzqJ36zMRrczPfTYTSnLbz350w7KeQx63r9FeL+f3ljecP/g5dLwXnu1a+Z8zwYPz4a6DknF6dVWw87lKVtX9MI2Pl90mBJxcUSLRlb76nzU8rQT6/5Yt//2vSclhIaRq3/fJUsHeRm8cvCXJf44ZO7nwaXGgxae3+Fjyau/Nybyzg62WXOmMuUHTuinOs19y6OVY7RIjFEAAKAh5anUL79Q+65Sj7IJSsK2dmemzlCMsif+H988CiPp6Uuoq1kErclO/ErxeSf2H/FO9k7SI/t039rBC69ls6otfLr2MM79fer2/PL6FqQkriMG9ck/fPIhI2rTeaKPRQfregcgbPLRy6HcgK1t50GeHa28VU+denr08P2v3RyqEpZQqAycbE74srlPMvRtnG31nB0H9SlorNjim9v79tt7t0zFtpv3SO2MoBMha8dHxxT/fHCcUe3xC5t/eVPvIUfjFTqdJ3zQhY7ZuT1wVr+niivfTbGpM9AhLT764mZPqdhEixQ4fRP0+xxS3YrbrpKMxFSGINVNTKqmbFHGZnoUkSVNSn0iy096XMo9ZmCiU5WYhSYG+hRRmJeWmMd2N2hGg2HSg6b0+vbgU9qq14BFzqUXt5/5aWJCBr15x2BtUpH265jP5gfLjDt6jxuiTaRHHz58bNbN5Iprq/t07j0hMnB70DNW237Eh+1ad66+nootFfX/YmDC9d3R27dtm7j+kxZ1tkTxaMey7rNDswhxa5+uftp5N05F7F0edSF8btC+3kavlilP/W3UnLmXitVae89YZJx6PPDAd19H53177XsXdbKBSqu7eznHps0eszddrmbStZ+PaenD02eC104Iv5664dQcU4eBgydVXN7BrVGz5bAxjtauxm/RiOWxP3/p+/ndfIF+p349zLKjT144MiM0PufsuvntalaC/NHOVaM3JJQbdvr5wExldGxoH9fY1G3hlunru06uypNE8BTJd8+LHN73auXFq6MnOr5oe4U3Lp16zBKUeuvWupT0YYMNienq0LePw8vXJ+PQwRgZQfJbWbfk6qK8rLCMG+bTT89tG738dmwubejgOm7+yGFtRKQ0o5Ey23TxsH9eYmFi+M977stInk0fT0c+QZm80XYqiDZGnT79pPLDjlerPuVpMlcrAh3TqkOQ0jU3JokoRVLCU4U0r+EyGcWj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</File>
    </Filelist>
</otrs_package>